MatriksIQ Destek
Matriks Destek
Matriks Web Destek
Matriks Mobile Destek
0 beğenilme 0 beğenilmeme
284 kez görüntülendi
iz süren stop gerçekleşirse robotun bir süre hiç bir işlem yapmamasını istiyorum

bu satırı gerekli fonksiyonun içine ekledim ama delay fonksiyonunu nereye yazacağımı bulamadım.

// TrailingStopLoss(Symbol, SyntheticOrderPriceType.Percent, izsurenyuzde);
Algoritmik Trading kategorisinde (22 puan) tarafından | 284 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme

Merhaba,

bir kaç hafta sonra yeni versiyon gelecek sentetik emir gerçekleştiğinde tetiklenecek methodlar eklendi.

yeni versiyonda daha kolay olacak ama şuan için şöyle bir şey yapılabiir. 

al sat koşulları sağlandığında gönderilen emirleri bir listede tutup listede olmayan bir emir gerçekleştiğinde sentetik emir tetiklendiği varsayarak işlem yapabiliriz.

Sentetik emirin tetiklendiğini OnOrderUpdate() methodunda aşağıdaki gibi kontrol edip bir değişkene o anki anın üzerinde istenen süre eklenebilir örnekte 10DK ekledim.

daha sonra OnTimer methodunda 1 saniyede bir kontrol edilerek şuanki zamanın üzerine 10DK eklediğimiz zamana eşit ya da büyük olduğu durumda StratejiAktifMI değişkenini true yapmamız yeterli olur.

 

public override void OnInit()
{
	AddSymbol(Symbol, SymbolPeriod);
    WorkWithPermanentSignal(true);
    SendOrderSequential(true, Side.Buy);
	SetTimerInterval(1);
}
List<string> orderIDList = new List<string>();

bool StratejiAktifMI = true;

public override void OnDataUpdate(BarDataEventArgs barData)
{
	if (StratejiAktifMI)
	{
		// Alış
		if (CrossAbove(tott.Mov, tott.OttUp))
		{
			var _orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
			orderIDList.Add(_orderID);
		}
	}
}
DateTime zaman;
		
public override void OnOrderUpdate(IOrder order)
{
	if (order.OrdStatus.Obj == OrdStatus.Filled)
	{
		if (!orderIDList.Contains(order.CliOrdID))
		{
			Debug("Sentetik emir tetiklendi");
			StratejiAktifMI=false;
			zaman=DateTime.Now.AddMinutes(10);
		}
	}
}
public override void OnTimer()
{
	if(DateTime.Now>=zaman){
		Debug("Zaman doldu");
		StratejiAktifMI=true;
	}			
}

 

(6,848 puan) tarafından
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.



4,027 soru
3,979 cevap
2,806 yorum
2,975 kullanıcı