0 beğenilme 0 beğenilmeme
511 kez görüntülendi

Yaklaşık 10 gündür canlıda çalışan robotlarıma aynı tarihler arasında aynı değerler ile backtest yaptığımda çoğunlukla 1 dakikalık fakat bazen saatlik, yani tamamen farklı kaymalar var. Bu kaymalar sonucu bazen pozitif yönde, bazen ise negatif yönde etkiliyor. Fakat tabii ki bir bilinmezlik içerisinde yol almak pek iç rahatlatıcı değil. OTT-ToTT-SoTT-HHV ve HoTT'tan oluşan, uzun bir stratejim var. Hepsini göndermek kafa karışıklığına sebep olacağı için, bu başlıktaki konuyla alakalı kısmını gönderiyorum...

Değişkenlere değer atadığım kod:

var FiyatPeriod = GetBarData(Symbol, SymbolPeriod);
			Fiyat = GetSelectedValueFromBarData(FiyatPeriod, OHLCType.Close);
			FiyatYuksek = GetSelectedValueFromBarData(FiyatPeriod, OHLCType.High);
			FiyatOncekiYuksek = Ref(FiyatPeriod, OHLCType.High, -1);
			FiyatDusuk = GetSelectedValueFromBarData(FiyatPeriod, OHLCType.Low);
			FiyatOncekiDusuk = Ref(FiyatPeriod, OHLCType.Low, -1);

Kulladığım bölüm:

if (Long_MajorUpTrend)
				{
					if (!LongIslemde &&
						LB1_ToTT.Value[0][LB1_ToTT.CurrentIndex] > LB1_ToTT.Value[1][LB1_ToTT.CurrentIndex] &&
						LB1_SoTT.Value[0][LB1_SoTT.CurrentIndex] > LB1_SoTT.Value[1][LB1_SoTT.CurrentIndex] &&
						FiyatYuksek > LB1_HHV.Value[0][LB1_HHV.CurrentIndex -1] &&
						FiyatYuksek > LB1_HoTT.Value[0][LB1_HoTT.CurrentIndex] &&
						FiyatYuksek > FiyatOncekiYuksek)
					{
						FX_Alis();
						Debug("Long 1. Bölge, Alış Emri Gönderildi.");
					} vs.......

 

Backtest ve canlı arasındaki farkları sona erdirmek için bu kodu aşağıdaki şekilde düzenlemem yeterli olacak mıdır?

var FiyatPeriod = GetBarData(Symbol, SymbolPeriod);
			Fiyat = Ref(FiyatPeriod, OHLCType.Close,0);
			FiyatYuksek = Ref(FiyatPeriod, OHLCType.High,0);
			FiyatOncekiYuksek = Ref(FiyatPeriod, OHLCType.High, -1);
			FiyatDusuk = Ref(FiyatPeriod, OHLCType.Low,0);
			FiyatOncekiDusuk = Ref(FiyatPeriod, OHLCType.Low, -1);

 

Ayrıca Optimizasyonu Prime'da yapıp, çıkan sonuçları IQ'da kullanıyorum. Fakat IQ'da aynı parametreler ile test yaptığımda çıkan sonuçlarda farklılıklar olabiliyor. Bunun sebebi de aynı şey midir sizce? Ben SoTT ve ToTT'un iki program arasında farklı değerler alabileceği için böyle bir problem olduğunu düşünmüştüm ancak işin aslı nedir acaba?

Teşekkürler...

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

1 cevap

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

Merhabalar,

Yukarıda revize etmeyi düşündüğünüz bölümü ekrana yazdırdığınızda aslında bir önceki kullandığınız parametre/yapı ile aynı olduğunu görüntüleyebilirsiniz.

Kalıcı sinyal ile çalıştığınızda backtest ile canlı arasında 1 bar fark oluştuğunu bildiğinizi düşünüyorum. 

Bu sebeple, eğer sizin için sorun oluşmayacak ise dilerseniz kullandığınız sistemi senaryosu ile birlikte hatta eğer mümkün ise erkan görüntüleri ile paylaşabilirseniz yardımcı olmaya çalışalım.

Fakat IQ'da aynı parametreler ile test yaptığımda çıkan sonuçlarda farklılıklar olabiliyor. Bunun sebebi de aynı şey midir sizce?

Doğrudur, farklılıklar oluşabiliyor. Fakat bu farklılıkların birden fazla sebebi olabilir.

Bunlardan ilki indikatör değerleri arasında oluşan farklılıktır.

Başka bir sebebi ise Prime tarafında sistemler/indikatörler double olarak hesaplanır. MatriksIQ'da ise bu değerler decimal olarak alınır. 

Yani başka bir deyişle Prime 3,98 olan bir değer 4.00'a yuvarlarken MatriksIQ aynı değeri 3,98 olarak alır.

Bu durum çoğu zaman kısa periyodlarda 1-2 bar fark edebilir.

Bilgilerinize.

İyi çalışmalar.

(11,059 puan) tarafından
tarafından seçilmiş
0 0
Kodu ekleyeyim dedim, uzun geldi. Düzenleyeyim dedim, yazdığım her şey silindi :)))

Neyse, kısacası sorunumu hallettim, teşekkür ederim. Dediğiniz gibi en büyük sorun decimal-double yüzündenmiş.

Yalnız teknik dökümandan tam anlayamadığım bir şey var, OnDataUpdate(BarDataEventArgs barData) ile OnDataUpdate(BarDataCurrentValues barDataCurrentValues) arasındaki fark tam olarak nedir? Ben CurrentValues kullanıyordum ve onu değiştirince canlı ile backtest uyumunun düzeldiğini de düşünüyorum. Alakası da olmayabilir. Tam anlayamadığım için bilemedim.
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,636 soru
8,590 cevap
4,821 yorum
19,785 kullanıcı