0 beğenilme 0 beğenilmeme
1,180 kez görüntülendi

Haftalardır yaşamış olduğum backtest ve canlı farklı çalışma sorununun kaynağını tespit etmek amacıyla detaylı debug incelemesi yaptım ve sorunun sebebini  buldum.
 

SORUN: 30 dklık periyodda canlıda close ve open değerlerinin aynı dönmesi. open ve close değerlerini şu şekilde çekiyorum:

BarDataValue barVeri = barDataCurrentValues.LastUpdate;

var close = barVeri.Close;

var open = barVeri.Open;

--------------------------------------------------------------

Canlıdan elde edilmiş debug verisi

fotoğraf belli olmuyor link bırakayım : https://ibb.co/74JDLL7

--------------------------------------------------------

Aynı saat aynı tarih için backtestle elde edilmiş debug verisi

fotoğraf belli olmuyor link bırakayım : https://ibb.co/DgDct4B

Şimdi bu sorunun ortaya çıkmasının sebebi nedir? ve nasıl giderebiliriz?

edit: fotoğraf linkleri eklendi.

 

Algoritmik Trading kategorisinde (390 puan) tarafından
tarafından düzenlendi | 1,180 kez görüntülendi
2 0
Merhaba,

Böyle dener misiniz.

var bardata = GetBarData();

var close = bardata.Close[barDataCurrentValues.LastUpdate.BarDataIndex - 1];

var open = bardata.Open[barDataCurrentValues.LastUpdate.BarDataIndex - 1];
0 0
Merhaba,
bu şekilde bir önceki barın açılış ve kapanış verilerini çekeriz ama

var bardata = GetBarData();

var close = bardata.Close[barDataCurrentValues.LastUpdate.BarDataIndex ];

var open = bardata.Open[barDataCurrentValues.LastUpdate.BarDataIndex ];

şeklinde deneyeceğim, teşekkürler.
0 0

var bardata = GetBarData();

var close = bardata.Close[barDataCurrentValues.LastUpdate.BarDataIndex ];

var open = bardata.Open[barDataCurrentValues.LastUpdate.BarDataIndex ];

VE

 

BarDataValue barVeri = barDataCurrentValues.LastUpdate;

var close = barVeri.Close;

var open = barVeri.Open;

şeklinde YENİ AÇILAN BARIN VERİLERİNİ ÇEKİYORMUŞUZ.

Sayın merper,

sizin tavsiyeniz haftalardır uğraştığım sorunun çözümü. ÇOK TEŞEKÜR EDERİM İYİ ÇALIŞMALAR.


 

0 0

Ben prime da çalışan formülümü birebir iq ya geçirmeyi başarmıştım. Tüm sinyal yerleri birbirini tutuyordu. Ama canlıya alınca sinyal gelmiyordu. Yukarıdaki şekilde kodu değiştirdim, canlıda emir gelmeye başladı ancak şimdi de backtest sonuçları prime testine göre tamamen farklı geliyor.

Bu kodla sizin backtest sonuçlarınız doğru geliyor mu?

0 0

düzelttiğimde backtestte farklı sonuçlar geldi evet. Sanırım backtestte 


var bardata = GetBarData();

var close = bardata.Close[barDataCurrentValues.LastUpdate.BarDataIndex ];

var open = bardata.Open[barDataCurrentValues.LastUpdate.BarDataIndex ];

şeklinde kullandığımızda canlıdaki

var bardata = GetBarData();

var close = bardata.Close[barDataCurrentValues.LastUpdate.BarDataIndex - 1];

var open = bardata.Open[barDataCurrentValues.LastUpdate.BarDataIndex - 1];

sonuçlarını alıyoruz. Ama emin değilim.

Kodu düzelttiğimden beri backtestte bir kayma söz konusu.
 

0 0

bar indexleri seviyesinde iyice irdeleyip size dönüş yapacağım bu konuda.

0 0
Selamlar, bu sorunu çözebildiniz mi? Aynı dertten müzdaribim, 2 haftadır çözemedim.

1 cevap

3 beğenilme 0 beğenilmeme
En İyi Cevap
Merhaba,

Sorununuz çözüme ulaşmış olduğunu görüyorum. Bilgilendirme amaçlı olarak canlı yayın akışında kalıcı sinyal ile çalışırken OnDataUpdate sadece yeni bar açılışında tetiklenir. Bar açılışında da yüksek, düşük, açılış ve kapanış değerleri eşittir. Bu nedenle barDataCurrentValues.LastUpdate ile gelen close, open vb. değerler eşit olacaktır.

İyi çalışmalar
(4,555 puan) tarafından
tarafından seçilmiş
8,636 soru
8,590 cevap
4,821 yorum
19,785 kullanıcı