MatriksIQ Destek
Matriks Destek
Matriks Web Destek
Matriks Mobile Destek
0 beğenilme 0 beğenilmeme
42 kez görüntülendi

Merhaba, aşağıdaki yöntemi stratejime eklemeye çalışırken fotoğraftaki hatayı alıyorum. OnDataUpdate kodlarından birini sildiğimde sorun ortadan kalkıyor fakat ikisi birlikte olunca hatayı veriyor. Bu yöntem stratejimde belirli bir süredir açık olan pozisyonu kapatacak. public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues); satırı stratejimde olduğu için silemiyorum.

int ilkIslem = 0;

        public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues);
		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			if (ilkIslem + BarSayisi == barData.BarDataIndex && Adet != 0)
			{
				SendMarketOrder(Symbol, Adet, (OrderSide.Sell));
				Adet = 0;
				ilkIslem = 0;
			}
			else if(CrossAbove(most.ExMOV, most))
			{
				SendMarketOrder(Symbol, BuyOrderQuantity, (OrderSide.Buy));
				ilkIslem = barData.BarDataIndex;
				Adet += BuyOrderQuantity;
			}
		}


		public decimal Adet = 0;

 

 

public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues);

public override void OnDataUpdate(BarDataEventArgs barData)

bu iki satırdan birisini sildiğimde hata gidiyor fakat ikisini de yazdığımda hatayı alıyorum.

Algoritmik Trading kategorisinde (52 puan) tarafından | 42 kez görüntülendi

1 cevap

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

Merhabalar,

Doğrudur, iki satırı aynı anda kullanamazsınız.

public override void OnDataUpdate(BarDataEventArgs barData)
		{
			if (ilkIslem + BarSayisi == barData.BarDataIndex && Adet != 0)
			{
				SendMarketOrder(Symbol, Adet, (OrderSide.Sell));
				Adet = 0;
				ilkIslem = 0;
			}
			else if(CrossAbove(most.ExMOV, most))
			{
				SendMarketOrder(Symbol, BuyOrderQuantity, (OrderSide.Buy));
				ilkIslem = barData.BarDataIndex;
				Adet += BuyOrderQuantity;
			}
		}


		public decimal Adet = 0;

Bu kalıbı kullanmanız yeterlidir.

İyi çalışmalar.

(3,504 puan) tarafından
tarafından seçilmiş
0 0
Merhaba, stratejimde iki satırı da kullanmam gerekiyor. İndikator için
public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues); satırını da kullanmam gerek. Bu satırı stratejide farklı yerlere konumlandırdım fakat yine aynı hatayı verdi. Bunu nasıl yapabilirim
1 0

Merhabalar,

public override void OnDataUpdate(BarDataEventArgs barData) methodunu kullanmak yerine sadece public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues) methodunu kullanıp aşağıdaki satırı böyle yazarsanız aynı formülü elde etmiş olursunuz.

if (ilkIslem + BarSayisi == barData.BarDataIndex && Adet != 0) 

 yerine, BarSayisi değişkenini aşağıdaki gibi elde edebilirsiniz.

var BarSayisi = barDataCurrentValues.LastUpdate.BarDataIndex;

İyi çalışmalar.

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