0 beğenilme 0 beğenilmeme
1,639 kez görüntülendi
merhabalar. matriks iq da çalıştırılan robot gruplarını kayıt edip ertesi gün kolayca çalıştırma yolu var mı? varsa  yardımlarınızı beklerim. diyelimki aynı robota 15 tane işlem bağladım bunu seans sonunda durdurunca ertesi gün yeniden hepsini başlatmam gerekiyor. bir de farklı robotlarda işlem olursa yöntemi var mı? herkese hayırlı bol kazançlar dilerim.
Algoritmik Trading kategorisinde (93 puan) tarafından | 1,639 kez görüntülendi
0 0
evet bu sorunu cozmeniz gerekiyo mesala ben robotu 4 ay caliştırmak ıstıyom her gun tekrar kurmak zorunda kalıyom.

1 cevap

3 beğenilme 0 beğenilmeme
En İyi Cevap
Merhaba, eski calistirilmis stratejileri tekrar ve tek bir basamakta calistirma yontemi eklenmistir. Su anda testlerini yapiyoruz, yakinda cikacagimiz versiyonda kullabilirsiniz.

Farkli robotlar arasi iletisimden bahsediyorsaniz, IQ tarafindan saglanmis boyle bir islev yok. Fakat orn. ortak bir text dosyasina gerekli bilgiler yazdirilarak ayni text dosyasi bir kac strateji tarafindan okunabilir, bu sekilde ortak kullanim alani yaratilabilir. Ya da stratejiler tek bir strateji altinda birlestirilip calistirilabilir.
(8,035 puan) tarafından
tarafından seçilmiş
0 0
Peki yeni güncelleme ile eski çalıştırılmış robotlar tekrar çalıştırıldığında kaldığı yerden devam edecek mi?

Örneğin akşam üzeri stratejileri durdurdum İQ yu kapattım (yada bir şekilde kapandı) emirleri sıra ile gönderme aktif olduğundan yeniden İQ yu çalıştırdığımda ve stratejiler tekrar çalıştırdığımda robot ilk emir sat veriyor ama sat emri iletilmiyor. "al" ile başlıyor. Bu durumda dünden kalan bir hisse diğer gün satılması gerekirse satılmıyor bunu manuel takip edip satmamız gerekiyor.

Bence robot kurulduğu anda ilk emir ne gelirse onunla başlamalıdır. İlk sat gelirse satacak hisse yoksa zaten emir, borsa tarafından "red" edilecektir.

??

iyi çalışmalar.
0 0

Ilk emir ne gelirse onunla baslamasi icin SendOrderSequential'a bir opsiyon daha ekledik. SendOrderSequential(true,true); seklinde yazdiginizda emirler hala sirali gidecektir fakat ilk emrin alis olmasi sarti olmayacaktir. Bu sekilde sirali emir gonderimini acik tutarak bi stratejiyi basit bir sekilde istedigimiz emirle baslamasi yonunde de degistirebiliriz. Asagida basit bir ornek paylasiyorum.

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;

namespace Matriks.Lean.Algotrader
{
	public class sendOrderSeq_YENI : MatriksAlgo
	{
		// Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise,
		// "SymbolParameter" ile, değilse "Parameter" ile tanımlama yaparız. Parantez içindeki değerler default değerleridir.

		[SymbolParameter("GARAN")]
		public string Symbol;
		[Parameter(SymbolPeriod.Min5)]
		public SymbolPeriod SymbolPeriod;
		[Parameter(1)]
		public decimal OrderQuantity;
		[Parameter(14)]
		public int Period;
		[Parameter(70)]
		public int UpLevel;
		[Parameter(30)]
		public int DownLevel;
		
		[Parameter(false)]
		public bool SatislaBasla;
		
		// indikator tanımları.
		RSI rsi;
		int firstRun = 1;

		/// <summary>
		/// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri,
		/// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır. 
		/// </summary>
		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period);

			WorkWithPermanentSignal(true);

			SendOrderSequential(true,true);
		}

		/// <summary>
		/// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir. 
		/// </summary>
		/// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param>
		public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
		{
			if (firstRun == 1)
			{
				if (CrossAbove(rsi, DownLevel) && !SatislaBasla)
				{
					SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Buy));
					firstRun = 0;
				}
				if (CrossBelow(rsi, UpLevel) && SatislaBasla)
				{	
					SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Sell));
					firstRun = 0;
				}
				
			}
			else 
				if (CrossAbove(rsi, DownLevel))
				SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Buy));
				if (CrossBelow(rsi, UpLevel))
				SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Sell));
		}

		/// <summary>
		/// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir.
		/// </summary>
		/// <param name="barData">Emrin son durumu</param>
		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled)
			{

			}
		}
	}
}

 

1 0
Bu çok faydalı oldu çok teşekkürler.
0 0

Bu olay için bir tavsiyem var.

Kullanıcı stratejileri sekmesine, login olunan hesabı seçebileceğimiz bir açılır kutu eklenip, yanına da  seçilen stratejileri bu hesaba bağlayarak default ayarlar ile çalıştırmayı sağlayacak bir buton koyabilirseniz çok güzel olur.

Eğer bu olayı çalıştırılmış stratejiler alanında yapıyorsanız da, strateji her durdurulduğunda çalıştırılmış stratejiler sekmesine kayıt yapılmamalı. Bu alanda her stratejiden sadece bir adet bulunmalı. Böylece fazla sayıda sistem çalıştıranlar aynı sistemleri ayıklama zahmetine girmeden "Tümünü seçerek" çalıştırabilirler.

 

0 0
--------------------------------------------------------------
8,639 soru
8,593 cevap
4,826 yorum
19,820 kullanıcı