0 beğenilme 0 beğenilmeme
979 kez görüntülendi
Merhaba, stratejime stop loss olduysa 10 bar boyunca tekrar aynı yönde işlem açmasın komutunu eklemek istiyorum. Örnegin alım yaptı fakat stop oldu, stoptan sonraki 10 bar boyunca tekrar alım yönlü işlem yapmasın. Çünkü büyük düşüşlerde her barda işlem açıp stop oluyor, bu sayede sadece ilk barda stop olmasını ve bir süre işlem açmamasını sağlamak istiyorum. Bu şekilde stoploss olduktan sonraki bar sayısını nasıl saydırabilirim
Algoritmik Trading kategorisinde (54 puan) tarafından | 979 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme
En İyi Cevap

Merhaba,

Sentetik emirler gerçekleştiğinde OnSyntheticOrderTriggered() methodu tetiklenmektedir.

OnSyntheticOrderTriggered() tetiklendiğinde aktif barın indeksi alınıp aşağıdaki örnekteki gibi OnDataUpdate() methodunda kontrol edilebilir.

Aşağıdaki yapı ile stoploss tetiklendiğinde andaki barın indeksini alıp 10 bar geçmesi kontrol edilmiştir..

 

int tetiklendigiBar=int.MinValue;

public override void OnDataUpdate(BarDataCurrentValues bd)
{
	// alış koşulu
	if (bd.LastUpdate.Close>bd.LastUpdate.Open && 
		bd.LastUpdate.BarDataIndex >= tetiklendigiBar + 10 &&
		LastOrderSide.Obj!=Side.Buy)
	{
		SendMarketOrder(Symbol,1,OrderSide.Buy);
		TrailingStopLoss(Symbol,SyntheticOrderPriceType.Percent,2);
	}

	// satış koşulu
	if (bd.LastUpdate.Close<bd.LastUpdate.Open && 
		LastOrderSide.Obj!=Side.Sell)
	{
		SendMarketOrder(Symbol,1,OrderSide.Sell);
		TrailingStopLoss(Symbol,SyntheticOrderPriceType.Percent,2);
	}	
}

public override void OnSyntheticOrderTriggered(SyntheticAlgoOrder sOrder)
{
	if (sOrder.EnableOrderSending && 
		sOrder.SyntheticAlgoOrderType == SyntheticAlgoOrderType.StopLoss)
	{
		var barDataModel = GetBarData();
		tetiklendigiBar = barDataModel.BarDataIndexer.LastBarIndex;
		Debug("Stoploss teteiklendi");
	}
}
		
public override void OnOrderUpdate(IOrder order){
	if(order.OrdStatus.Obj==OrdStatus.Filled){
		tetiklendigiBar=int.MinValue;
	}
}

 

(15,892 puan) tarafından
tarafından düzenlendi
Sentetik Emir Tetiklendiğinde Bar Saydırma
BarDataCurrentValues yerine bunu BarDataEventArgs le nasıl yapabiliriz
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.



8,635 soru
8,589 cevap
4,821 yorum
19,781 kullanıcı