Evet, neler oluyor??? - sayfa 4

 
SeriousRacoon :
Ve mevcut mantığı devre dışı bırakıp normal bir fare ile değiştirmeyi deneyin. Kedinin mantıkta veya uygulamada nerede dolaştığı hemen anlaşılacaktır.

iyi bir tavsiye... Optimizasyonun, tekli başlatmaların ayrı örneklerinden başka bir şey olmadığı gerçeğini düşünene kadar, en azından kullanıcılar böyle olmasını ister ve geliştiriciler tarafından bu şekilde amaçlanır.

Bundan, Expert Advisor'ın algoritması ne kadar karmaşık olursa olsun, tek bir çalıştırmanın sonucu, optimizasyon sırasında bir grup çalıştırmanın parçası olarak elde edilenle aynı olmalıdır.

TS deneyi yukarıdaki argümanları çürütür. İşlemlerin geçmişini parametrelerden oluşan bir adla (oluşturulan dosyalar arasında aramayı basitleştirmek için) bir dosyaya optimize ederken her çalıştırmanın sonunda (Renat'ın önerdiği gibi) yazdırır ve aynısını tek bir çalıştırma ile yapardım, bu şekilde, optimizasyon ve tek bir çalıştırmadan sonraki sonuçlar arasında nerede bir tutarsızlık olduğunu belirlemek mümkün olacaktır. Görünüşe göre gerçeğin dibine ulaşmanın tek yolu bu.

bununla birlikte, optimizasyon ve tek geçiş sırasında tam olarak neyin, hangi nüansın farklı sonuçlar üretebileceği hala çok merak konusudur, çünkü mantık, tek bir çalışmanın toplu optimizasyon çalışmasınınkiyle aynı olması koşuluyla bunun prensipte imkansız olduğunu öne sürer.

 
Алексей Тарабанов :

"neredeyse tüm veriler bir döngüde başlatılır"

Beyler, bir döngüde başlatamazsınız. Bir döngü içinde saymanız gerekir.

Hangi durumlarda sadece mümkün değil, aynı zamanda gerekli olduğunu da gösterdim ve başka bir yol yok.

 

@Andrey Dik , çıktıyı dosya(lar)a nasıl ekleyeceğimi düşünüyorum. Dosyayı yapıldığı gibi yazmanız gerekiyor gibi görünüyor. Ve oraya tam olarak ne yazmalı? Fiyatlar bilgilendirici değildir. Uyuşmazlığın nedenini anlamanıza yardımcı olacak bazı bilgiler yazmanız gerekir. Bu bilgi nedir? Nereden alınır? Henüz bir fikrim yok.

 
Сергей Таболин :

@Andrey Dik , çıktıyı dosya(lar)a nasıl ekleyeceğimi düşünüyorum. Dosyayı yapıldığı gibi yazmanız gerekiyor gibi görünüyor. Ve oraya tam olarak ne yazmalı? Fiyatlar bilgilendirici değildir. Uyuşmazlığın nedenini anlamanıza yardımcı olacak bazı bilgiler yazmanız gerekir. Bu bilgi nedir? Nereden alınır? Henüz bir fikrim yok.

OnTester() işlevinde, InputName1 + "_" + InputName2 + "_" + InputName3 + "_" + InputName4 + "_" +.... adında bir dosya oluşturun ve tüm işlemlerin geçmişini buna yazın. (yani, pozisyonlar değil, işlemler), analiz, zaman, fiyat vb. için gerekli tüm bilgiler olacaktır. Aynı dosyaya, belirli bir Uzman Danışman için çok ilginç başka bir şey yazabilirsiniz; bu, bir optimize edici uyumsuzluğu ve tek bir çalıştırma bulmak için faydalı olabilir.

MQLInfoInteger(MQL_OPTIMIZATION)); optimizasyondan sonra aynı dosyanın üzerine yazmamak için tek bir çalıştırma sırasında dosya adına bir postfix eklemek için.


not. içeriği farklı olan iki karşılık gelen dosya alırsanız, bu geliştiriciler için yeterli olmayacak, ancak size yalnızca nereye bakacağınız konusunda bir yön verecektir, sorunu yeniden üreten bir kod sağlamanız gerekecektir. Umarım sorun EA kodundadır.

 
Andrey Dik :

OnTester() işlevinde, InputName1 + "_" + InputName2 + "_" + InputName3 + "_" + InputName4 + "_" +.... adında bir dosya oluşturun ve tüm işlemlerin geçmişini buna yazın. (yani, pozisyonlar değil, işlemler), analiz, zaman, fiyat vb. için gerekli tüm bilgiler olacaktır. Aynı dosyaya, belirli bir Uzman Danışman için çok ilginç başka bir şey yazabilirsiniz; bu, bir optimize edici uyumsuzluğu ve tek bir çalıştırma bulmak için faydalı olabilir.

MQLInfoInteger(MQL_OPTIMIZATION)); optimizasyondan sonra aynı dosyanın üzerine yazmamak için tek bir çalıştırma sırasında dosya adına bir postfix eklemek için.


not. içeriği farklı olan iki karşılık gelen dosya alırsanız, bu geliştiriciler için yeterli olmayacak, ancak size yalnızca nereye bakacağınız konusunda bir yön verecektir, sorunu yeniden üreten bir kod sağlamanız gerekecektir. Umarım sorun EA kodundadır.

Teşekkür ederim. Yapacağım.

 
Сергей Таболин :

Teşekkür ederim. Yapacağım.


 
Сергей Таболин :

Teşekkür ederim. Yapacağım.

global olarak bildirilen değişkenlerin başlatılmasını kontrol edin.

başlatmalar OnInit() içinde değilse, ancak bildirildiğinde ve değerleri kodda değiştirilmişse.

 
Andrey F. Zelinsky :

global olarak bildirilen değişkenlerin başlatılmasını kontrol edin.

başlatmalar OnInit() içinde değilse, ancak bildirildiğinde ve değerleri kodda değiştirilmişse.

değişkenler başlatıldı veya başlatılmadı, ancak sonuçlar her iki test modunda da eşleşmelidir (optimizasyon ve tek çalıştırma)

 
Andrey Dik :

iyi bir tavsiye... Optimizasyonun, tekli başlatmaların ayrı örneklerinden başka bir şey olmadığı gerçeğini düşünene kadar, en azından kullanıcılar böyle olmasını ister ve geliştiriciler tarafından bu şekilde amaçlanır.

Bundan, Expert Advisor'ın algoritması ne kadar karmaşık olursa olsun, tek bir çalıştırmanın sonucu, optimizasyon sırasında bir grup çalıştırmanın parçası olarak elde edilenle aynı olmalıdır.

TS deneyi yukarıdaki argümanları çürütür. İşlemlerin geçmişini parametrelerden oluşan bir adla (oluşturulan dosyalar arasında aramayı basitleştirmek için) bir dosyaya optimize ederken her çalıştırmanın sonunda (Renat'ın önerdiği gibi) yazdırır ve aynısını tek bir çalıştırma ile yapardım, bu şekilde, optimizasyon ve tek bir çalıştırmadan sonraki sonuçlar arasında nerede bir tutarsızlık olduğunu belirlemek mümkün olacaktır. Görünüşe göre gerçeğin dibine ulaşmanın tek yolu bu.

bununla birlikte, optimizasyon ve tek geçiş sırasında tam olarak neyin, hangi nüansın farklı sonuçlar üretebileceği hala çok merak konusudur, çünkü mantık, tek bir çalışmanın toplu optimizasyon çalışmasınınkiyle aynı olması koşuluyla bunun prensipte imkansız olduğunu öne sürer.

Genel olarak, sana katılıyorum. Baykuşlar gerçekten ortama bağlı olarak dallanma yapmıyorsa (ister optimize edicide ister test cihazında çalışıyor), o zaman varsayılabilecek tek şey, optimizasyon modunda, test cihazındaki bazı api çağrılarının hız için fazla optimize edilmiş olmasıdır. , totoloji için üzgünüm. Belki de kullanılan işlevlerdeki bayraklara bağlıdır. Ayrıntılı bir işlem günlüğü ve siparişlerin sonuçları yardımcı olacaktır, evet.

Bununla kişisel olarak karşılaşmadım.

 
Andrey Dik :

değişkenler başlatıldı veya başlatılmadı, ancak sonuçlar her iki test modunda da eşleşmelidir (optimizasyon ve tek çalıştırma)

değişkeni global olarak bildirin ve bunu bildirdiğinizde, örneğin, int kk=0;

sonra OnTick()'te yazdırmayı kaldırın ve değeri değiştirin, örneğin, Print ("kk=",kk); ++kk;

sonra TF'yi veya parametreleri değiştirin -- ve sonuca bakın.