Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. 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.

0

Backtest - Canlı Arası Kayma

Soruldu
Görüntülenme
909 görüntülenme
Durum
Çözüldü

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...

Paylaş

1 Cevap

1

Kabul edilen 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.

BağlantıBayrakladüzenlendi · pedherasiyangMatriks Destek11.113

Yorumlar (1)

  • ▲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.

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol