Şu anda MT5 Strateji Test Cihazında çoklu para birimi çiftli bir EA'yı geriye dönük test ediyorum ve bunu farklı döviz çiftlerine eklerken farklı sonuçlar alıyorum. EA, AUDUSD ve GBPCHF üzerinde işlem görmektedir.
AUDUSD'ye eklediğimde 10k kar elde ediyor.
GBPCHF'ye eklediğimde 30 binden fazla kar elde ediyor.
USDCHF'ye eklediğimde (OnTick() işlevinin USDCHF'yi takip ederken hem AUDUSD hem de GBPCHF değişikliklerine tepki vereceğini düşündüm) yaklaşık 17k kar elde ediyor.
OnTick() işlevini kullanma sorunu mu var? Yoksa çok para birimli EA'ları geriye dönük test etmede gizli bir sorun mu var? Yoksa kodumda bir karışıklık mı var?
Kod gerçekten önemli olmamalı. Tüm işlemler önceden tanımlanmış iki döviz çifti üzerinde yapılıyorsa ve tüm işlemler her tıklamada değil de yeni çubuk açılışında gerçekleştirilirse, Test Cihazı ekli döviz çifti için neden herhangi bir fark yaratsın?
"On kene" işlevi yalnızca grafik para birimi için değil mi? %99 öyle diyebilirim. Sanırım daha doğru keneler elde etmek için her saniyede bir sonsuz döngü yenileme alıntıları oluşturabilirsiniz. Bu, bir uygulamanın tüm yapısını değiştirecektir.
Kod gerçekten önemli olmamalı. Tüm işlemler önceden tanımlanmış iki döviz çifti üzerinde yapılıyorsa ve tüm işlemler her tıklamada değil de yeni çubuk açılışında gerçekleştirilirse, Test Cihazı ekli döviz çifti için neden herhangi bir fark yaratsın?
Belki OnTick() yerine OnBookEvent()'i denemelisiniz? - OnTick() yalnızca geçerli sembol işareti geldiğinde tetiklenir.
OnBookEtkinliği
OnBookEvent() işlevi, BookEvent işleyicisidir. BookEvent, yalnızca Pazar Derinliği değiştiğinde Uzman Danışmanlar için oluşturulur. void türünde olmalı ve dize türünde bir parametreye sahip olmalıdır:
geçersiz OnBookEvent ( const dize ve sembol ); |
Herhangi bir sembol için BookEvent olaylarını almak için, MarketBookAdd() işlevini kullanarak bu sembol için bu olayları almak üzere önceden abone olmanız yeterlidir. Belirli bir sembol için BookEvent olaylarını almaktan çıkmak için MarketBookRelease() öğesini arayın.
Diğer olaylardan farklı olarak, BookEvent olayı yayınlanır. Bu, bir Uzman Danışmanın MarketBookAdd kullanarak BookEvent olaylarını almaya abone olması durumunda, OnBookEvent() işleyicisine sahip diğer tüm Uzman Danışmanların bu olayı alacağı anlamına gelir. Bu nedenle, işleyiciye const string&symbol parametresi olarak iletilen sembolün adını analiz etmek gerekir .
Aynı sorunu yaşıyorum: Çok para birimli bir EA'yı geriye dönük test etme Strateji test panelinde hangi sembolü seçtiğime bağlı olarak tamamen farklı davranışlar elde ediyorum.
Bu son derece rahatsız edici. Rosh? kimse var mı? yorum yapabilir misin lütfen
On tik sadece seçili çizelge için geçerli olsa bile, hem kıskanıyorum hem de ben yeni bir çubuğun açılması üzerinde çalışıyoruz. Benim durumumda günlük çubuklar kullanıyorum, bu nedenle çeşitli para birimlerindeki yeni çubukların açık işareti farklı zamanlarda ortaya çıksa bile, yaşadığım gibi büyük farklılıklar olmamalıdır.
Açık nedenlerden dolayı EA'mı dahil etmiyorum. Bakalım burada yayınlanan EA ile aynı sorunu yaşıyor muyuz: https://www.mql5.com/en/articles/105 .
Çok para birimli bir EA oluşturmada başarılı olan ve özellikle bu tutarsızlıktan muzdarip olmayan herkesten haber almaktan çok mutlu olurum.
- 2010.07.08
- Nikolay Kositsin
- www.mql5.com
Belki OnTick() yerine OnBookEvent()'i denemelisiniz? - OnTick() yalnızca geçerli sembol işareti geldiğinde tetiklenir.
OnBookEtkinliği
OnBookEvent() işlevi, BookEvent işleyicisidir. BookEvent, yalnızca Pazar Derinliği değiştiğinde Uzman Danışmanlar için oluşturulur. void türünde olmalı ve dize türünde bir parametreye sahip olmalıdır:
geçersiz OnBookEvent ( const dize ve sembol ); |
Herhangi bir sembol için BookEvent olaylarını almak için, MarketBookAdd() işlevini kullanarak bu sembol için bu olayları almak üzere önceden abone olmanız yeterlidir. Belirli bir sembol için BookEvent olaylarını almaktan çıkmak için MarketBookRelease() öğesini arayın.
Diğer olaylardan farklı olarak, BookEvent olayı yayınlanır. Bu, bir Uzman Danışmanın MarketBookAdd kullanarak BookEvent olaylarını almaya abone olması durumunda, OnBookEvent() işleyicisine sahip diğer tüm Uzman Danışmanların bu olayı alacağı anlamına gelir. Bu nedenle, işleyiciye const string&symbol parametresi olarak iletilen sembolün adını analiz etmek gerekir .
İşte bir örnek. https://www.mql5.com/en/articles/105 adresinden TEMA EA'yı kullanarak Aşağıdaki farklı davranışları alıyoruz.
Tek ihtiyacınız olan EA exp_tema_en.mq5 ve multistochastic_en.mq5 göstergesi
Bu örnekte ekli param seti dosyasını kullandım. EA, EURUSD, USDCHF ve USDJPY çiftlerini (bu parametrelerle) takas eder.
EURUSD'ye eklediğinizde,
USDCHF'ye eklerken alacaksınız
Ardından, USDJPY ile şunu elde ederiz:
ve daha da iyisi, EA'yı AUDUSD üzerinde çalıştırırken sonuç
Aynı EA, aynı zaman dilimi (H1), aynı işlem gören çiftler, aynı tarihler (2009.01.01-2009.03.01).
Olması gereken bu mu? ve eğer öyleyse, biri bize bunun ne anlama geldiğini söyleyebilir mi?
Çoklu para birimi geri testine/optimizasyonuna gerçekten hazır mıyız?
- 2010.07.08
- Nikolay Kositsin
- www.mql5.com
İşte bir örnek. https://www.mql5.com/en/articles/105 adresinden TEMA EA'yı kullanarak Aşağıdaki farklı davranışları alıyoruz.
Tek ihtiyacınız olan EA exp_tema_en.mq5 ve multistochastic_en.mq5 göstergesi
Bu örnekte ekli param seti dosyasını kullandım. EA, EURUSD, USDCHF ve USDJPY çiftlerini (bu parametrelerle) takas eder.
EURUSD'ye eklediğinizde,
USDCHF'ye eklerken alacaksınız
Ardından, USDJPY ile şunu elde ederiz:
ve daha da iyisi, EA'yı AUDUSD üzerinde çalıştırırken sonuç
Aynı EA, aynı zaman dilimi (H1), aynı işlem gören çiftler, aynı tarihler (2009.01.01-2009.03.01).
Olması gereken bu mu? ve eğer öyleyse, biri bize bunun ne anlama geldiğini söyleyebilir mi?
Çoklu para birimi geri testine/optimizasyonuna gerçekten hazır mıyız?
Merhaba, aynı sorunu yaşadım (farklı sonuçlar), ancak IsNewBar() ile çözdüm
baq'a katılıyorum, o halde ne yapmalıyız?
Sadece IsNewBar(bir sembol) o zaman falan filan
EA'm için farklı sembollere ek olarak aynı sonuçları aldım.
işlevi aldığım makale burada: https://www.mql5.com/en/articles/105
- 2010.07.08
- Nikolay Kositsin
- www.mql5.com
Merhaba, aynı sorunu yaşadım (farklı sonuçlar), ancak IsNewBar() ile çözdüm
baq'a katılıyorum, o halde ne yapmalıyız?
Sadece IsNewBar(bir sembol) o zaman falan filan
EA'm için farklı sembollere ek olarak aynı sonuçları aldım.
işlevi aldığım makale burada: https://www.mql5.com/en/articles/105
Ali, yukarıda bahsettiğim örnek bahsettiğiniz IsNewBar() fonksiyonunun kaynağı olan ve zaten onu kullanan EA'dır.
Bunu nasıl açıklarsın?
Ayrıca https://www.mql5.com/en/forum/1520 adresindeki Çoklu para birimi senkronizasyon konusuna bakın.
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Şu anda MT5 Strategy Tester'da çoklu para birimi çiftli bir EA'yı geriye dönük test ediyorum ve bunu farklı döviz çiftlerine eklerken farklı sonuçlar alıyorum. EA, AUDUSD ve GBPCHF üzerinde işlem görmektedir.
AUDUSD'ye eklediğimde 10k kar elde ediyor.
GBPCHF'ye eklediğimde 30 binden fazla kar elde ediyor.
USDCHF'ye eklediğimde (OnTick() işlevinin USDCHF'yi takip ederken hem AUDUSD hem de GBPCHF değişikliklerine tepki vereceğini düşündüm) yaklaşık 17k kar elde ediyor.
OnTick() işlevini kullanma sorunu mu var? Yoksa çok para birimli EA'ları geriye dönük test etmede gizli bir sorun mu var? Yoksa kodumda bir karışıklık mı var?