Sevgili, burada MT sürümlerinin bir arşivini oluşturmayı öneriyorum. Ve sonra, bazen, güncelleme ile beklenmedik hatalar ortaya çıkabilir ve önceki sürüme geri dönmeniz gerekebilir ...
Şimdi 2007 yapımına ihtiyacım var. Elinde olan var mı? Lütfen paylaşın.
Burada koleksiyonu toplayan bir adam var. Ancak hatırladığım kadarıyla, ilerlemenin yavaşlamaması için MT sürümlerinin arşivlerine bağlantı içeren gönderileri bazen siliniyor. ))
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
MetaTrader 5 platformunun yeni sürümü build 2007: Ekonomik takvim, hizmet olarak MQL5 programları
Andrey Khatimlianskii , 2019.03.15 23:03
Başka bir google hesabına geçtim. Yeni bağlantı burada .
Başka yapılara ihtiyacınız varsa, diyelim ki çok var.
bağlantım burada öldürüldü,
geliştiriciler yalnızca güvenilir kaynaklardan indirmeyi önerir
Test etmek için derlememi riske atmak istiyorsan, kişisel olarak yaz
çalışma ahırlarını taşınabilir veya arşive kaydetmeniz ve genellikle test yapıları için farkındalıkla güncelleme yapmanız gerekir
DC'de şimdi 2007 derlemesi
bağlantım burada öldürüldü,
geliştiriciler yalnızca güvenilir kaynaklardan indirmeyi önerir
Test etmek için derlememi riske atmak istiyorsan, kişisel olarak yaz
çalışma ahırlarını taşınabilir veya arşive kaydetmeniz ve genellikle test yapıları için farkındalıkla güncelleme yapmanız gerekir
DC'de şimdi 2007 derlemesi
Eski sürümleri kaldırarak doğru olanı yapıyorlar.
Programları normal bir şekilde yazmak gerekir. Uyarıları göz ardı etmeyin. Değişkenleri sıfırlayın ve mümkün olduğunca global kullanmayın. Kodda potansiyel olarak tehlikeli anlardan kaçının.
On binlerce satır kodum var - katı modda tek bir uyarı yok. CodeBase'den gelen el sanatlarının yarısı - strict'a olmadan bile, bin satırları bile olmasa da uyarı veriyorlar. Ve sonra, "eski yapıda her şey çalıştı, ancak yenisinde durdu" gerçeği hakkında konuşmalar başlıyor ...
Eski sürümleri kaldırarak doğru olanı yapıyorlar.
Programları normal bir şekilde yazmak gerekir. Uyarıları göz ardı etmeyin. Değişkenleri sıfırlayın ve mümkün olduğunca global kullanmayın. Kodda potansiyel olarak tehlikeli anlardan kaçının.
On binlerce satır kodum var - katı modda tek bir uyarı yok. CodeBase'den gelen el sanatlarının yarısı - strict'a olmadan bile, bin satırları bile olmasa da uyarı veriyorlar. Ve sonra, "eski yapıda her şey çalıştı, ancak yenisinde durdu" gerçeği hakkında konuşmalar başlıyor ...
Bu bir gezici programı mı? Bu kadar satırda ne anlatılabilir???
Burada koleksiyonu toplayan bir adam var. Ancak hatırladığım kadarıyla, ilerlemenin yavaşlamaması için MT sürümlerinin arşivlerine bağlantı içeren gönderileri bazen siliniyor. ))
Teşekkür ederim. İndirildi.
bağlantım burada öldürüldü,
geliştiriciler yalnızca güvenilir kaynaklardan indirmeyi önerir
Test etmek için derlememi riske atmak istiyorsan, kişisel olarak yaz
çalışma ahırlarını taşınabilir veya arşive kaydetmeniz ve genellikle test yapıları için farkındalıkla güncelleme yapmanız gerekir
DC'de şimdi 2007 derlemesi
Test sürümüne yükseltme yapmıyorum. Ve şimdi kurtaracağım
Eski sürümleri kaldırarak doğru olanı yapıyorlar.
Programları normal bir şekilde yazmak gerekir. Uyarıları göz ardı etmeyin. Değişkenleri sıfırlayın ve mümkün olduğunca global kullanmayın. Kodda potansiyel olarak tehlikeli anlardan kaçının.
On binlerce satır kodum var - katı modda tek bir uyarı yok. CodeBase'den gelen el sanatlarının yarısı - katı olmadan bile, bin satırları olmasa da uyarı veriyor. Ve sonra "eski yapıda her şey çalıştı ama yenisinde durdu" gerçeğinden bahsetmeye başlarlar...
George, başlıktaki son mesajımı oku. Sorunun kaynağını buldum. Kodumda yok.
Teşekkür ederim. İndirildi.
Test sürümüne yükseltme yapmıyorum. Ve şimdi kurtaracağım
George, konudaki son yazımı oku. Sorunun kaynağını buldum. Kodumda yok.
Okudum.
Sorunun kaynağı, geliştiricilerin ve sizin duruma biraz farklı yaklaşmış olmanızdır. Kabaca söylemek gerekirse, "birbirlerini anlamadılar." İşte bu yüzden, belirsizliğin olabileceği yerler dışında, kodun her zaman mümkün olduğunca basit ve açık olması gerektiğinde ısrar ediyorum.
MT5'in yoluna devam ettiği günleri hatırlıyorum - herkes şaşırmıştı, insanlar değişkenleri kitlesel olarak sıfır olacaklarına inanarak başlatmadan kullanıyorlar.
Burada bir anekdotu nasıl hatırlamam:
Malvina, Pinokyo'ya üç elma verdi. İki tane yedi. Pinokyo'nun kaç elması kaldı?
Programcı N1 :
- Ne kadar olduğu bilinmiyor. Daha önce kaç elması olduğunu kimse bilmiyor!
Ahlaki : ilk değişkenleri sıfıra ayarlayın.
programcı N2
- Ne kadar olduğu bilinmiyor. Belki Malvina elma verirken Pierrot da onları yemiştir?
Ahlaki : genel değişkenler kullanmayın.
programcı N3
- Ne kadar olduğu bilinmiyor. Pinokyo elma yedi demiyor, iki tane yediği söyleniyor ama ne olduğu belli değil. Ayrıca "Pinokyo" isminin eğimli olmadığı gerçeği göz önüne alındığında - Pinokyo ve Pinokyo farklı değişkenlerdir.
Ahlaki : sözdizimini izleyin
Teşekkür ederim. İndirildi.
Test sürümüne yükseltme yapmıyorum. Ve şimdi kurtaracağım
George, konudaki son yazımı oku. Sorunun kaynağını buldum. Kodumda yok .
Ancak sorunun kaynağı yeni yapı değil, "belgeleri okumadı" idi. Bu nedenle, kurnazsınız, kodunuz hakkında değil.
1:
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Pekala, bundan sonra ne yapmak istiyorsun?
Sergey Tabolin , 2019.06.16 00:17
Bu dağınıklığın sebebini buldum.
Mesele şu:
//--- пропустить бесполезные проходы оптимизации //* if (!check_init && ( MQLInfoInteger ( MQL_OPTIMIZATION ) || MQLInfoInteger ( MQL_TESTER ))) { if (period_HMA7C == 0 && move_profit) TesterStop (); if (period_HMA7C == 0 && move_stop) TesterStop (); if (period_HMA7C == 0 && shift_correction_HMA7C != 5 ) TesterStop (); if (indent_channel_line_a0 == 0.0 && indent_channel_line_a4 != 0.0 ) TesterStop (); if (indent_channel_line_a4 == 0.0 && indent_channel_line_a0 != 0.0 ) TesterStop (); if ((stop_loss_buy > 0 && stop_loss_buy < 700 ) || (stop_loss_sell > 0 && stop_loss_sell < 700 )) TesterStop (); check_init = true ; } //*/
Yeni sürümde, TesterStop()'tan sonra OnTester()'ın da başlatıldığı ortaya çıktı, ancak akla göre başlatılmaması gerekiyor.
Doğal olarak, hiçbir veri hazırlanmıyor, öyleyse ne halt oluyor.
Cant MT 2085.
2:
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Pekala, bundan sonra ne yapmak istiyorsun?
Sergey Tabolin , 2019.06.16 09:02
Üzgünüm. Açıklama sadece OnTester() çağrıldıktan sonra olduğunu söylüyor. ((((
Hala orada kontrol etmek zorundasın. ExpertRemove() ile değiştirmeyi deneyeceğim ...
Ve sonra tekrar "deneyeceğim" ... Ve sonra, eğer testleriniz başarılı olmazsa, o zaman MQ tekrar suçlanacak mı?
Hatırlamıyorum ama bence "kötü" geçişleri atlamak için özel bir işlev var. Ve tam da denemek istediğiniz şeyi, geliştiriciler, hafızam bana doğru hizmet ediyorsa - tekrar - kullanmanızı önermediler.
Ancak mesajımda önemli olan, suçu geliştiricilere yüklemeden önce, önce belgeleri okumanız, forumdan bir çözüm istemeniz ve ancak o zaman ve yalnızca gerçekten bulunan bir hata durumunda bir hata raporu göndermeniz gerektiğidir. onu yeniden üreten minimum kodla. Bu ciddi olacak...
Ancak sorunun kaynağı yeni yapı değil, "belgeleri okumadı" idi. Bu nedenle, kurnazsınız, kodunuz hakkında değil.
1:
2:
Ve sonra tekrar "deneyeceğim" ... Ve sonra, eğer testleriniz başarılı olmazsa, o zaman MQ tekrar suçlanacak mı?
Hatırlamıyorum ama bence "kötü" geçişleri atlamak için özel bir işlev var. Ve tam da denemek istediğiniz şeyi, geliştiriciler, hafızam bana doğru hizmet ediyorsa - tekrar - kullanmanızı önermediler.
Ancak mesajımda önemli olan, suçu geliştiricilere yüklemeden önce, önce belgeleri okumanız, forumdan bir çözüm istemeniz ve ancak o zaman ve yalnızca gerçekten bulunan bir hata durumunda bir hata raporu göndermeniz gerektiğidir. onu yeniden üreten minimum kodla. Bu ciddi olacak...
Artyom, sorun yeni yapıda!
Diyelim ki burada hatasız çalışan bir kod yazdınız. Uzun süre çalışır. Ve aniden, yeni bir MT sürümünden sonra, bir sürü hatayla çöküyor. Kim suçlu? Özellikle de birçok kişinin bildiği gibi dokümantasyonun her zaman yenilikleri tanımlamaya ayak uydurmadığını düşündüğünüzde.
Yani kodum hatasız çalıştı.
Bunu kullandım:
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
INIT_PARAMETERS_INCORRECT nasıl değiştirilir? Bir çözüm buldum)))
Sergey Tabolin , 2019.04.24 08:48
Bu başlıkta kendi sorumun cevabını buldum:
Her şey oldukça basit çıktı. Geçersiz parametre kontrolünü OnInit()'ten OnTick()'e taşımak yeterlidir.
bool check_init = false ; // флаг проверки входных параметров .......... //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { //--- пропустить бесполезные проходы оптимизации //* if (!check_init && ( MQLInfoInteger ( MQL_OPTIMIZATION ) || MQLInfoInteger ( MQL_TESTER ))) { if (period_HMA7C == 0 && move_profit) ExpertRemove (); if (period_HMA7C == 0 && move_stop) ExpertRemove (); if (period_HMA7C == 0 && shift_correction_HMA7C != 5 ) ExpertRemove (); check_init = true ; } //*/ //+------------------------------------------------------------------+
Kontrol! İşler. Genetik başarısız olmaz
Şimdi, ortaya çıkan sorunlardan sonra birkaç satır daha ekledim:
bool check_init = false ; // флаг проверки входных параметров bool tester_stop = true ; // флаг проверки выхода по TesterStop ............. void OnTick () { //--- пропустить бесполезные проходы оптимизации //* if (!check_init && ( MQLInfoInteger ( MQL_OPTIMIZATION ) || MQLInfoInteger ( MQL_TESTER ))) { if (period_HMA7C == 0 && move_profit) TesterStop (); if (period_HMA7C == 0 && move_stop) TesterStop (); if (period_HMA7C == 0 && shift_correction_HMA7C != 5 ) TesterStop (); if (indent_channel_line_a0 == 0.0 && indent_channel_line_a4 != 0.0 ) TesterStop (); if (indent_channel_line_a4 == 0.0 && indent_channel_line_a0 != 0.0 ) TesterStop (); if ((stop_loss_buy > 0 && stop_loss_buy < 700 ) || (stop_loss_sell > 0 && stop_loss_sell < 700 )) { Print ( "Результат в OnTester() должен быть -99999999999.99" ); TesterStop (); } check_init = true ; tester_stop = false ; } //*/ ......... }
Вызов TesterStop () считается нормальным завершением тестирования, и поэтому будет вызвана функция OnTester () с отдачей тестеру стратегий всей накопленной торговой статистики и значения критерия оптимизации.
Zihinsel olarak, aktarımın kodun geri kalanını çalıştırmadan hemen yapılması gerektiği varsayılır. Böyle?
Aslında, TesterStop() testi hiç durdurmaz!
double OnTester () { if (tester_stop) return (- 99999999999. 99 ); double equity_dd_percent = TesterStatistics ( STAT_EQUITY_DDREL_PERCENT ); if (equity_dd_percent > 0.0 ) { equity_dd_percent = 100.0 / equity_dd_percent; } else equity_dd_percent = 1.0 ; double param = 0.0 ; double profit = TesterStatistics ( STAT_PROFIT ); double stability = 0.0 ; int balance_arr_size = ArraySize (balance_arr) - 1 ; int alpha_size = balance_arr_size - 1 ; int beta_size = alpha_size - 1 ; double trade2time = ratioTrades2Time( TesterStatistics ( STAT_TRADES )); double max_balance = balance_arr[ 0 ]; //+------------------- if (balance_arr[balance_arr_size- 1 ] - balance_arr[ 0 ] == 0.0 ) return (- 99999999999. 88 ); //+-------------------
"Geçersiz" bir parametre girdim ve aşağıdaki sonucu aldım:
LL 0 11 : 30 : 20.816 Core 1 2016.10 . 01 00 : 00 : 00 Советник получил MAGIC = 153128312914612747 . QN 0 11 : 30 : 20.816 Core 1 2016.10 . 03 00 : 00 : 00 Результат в OnTester () должен быть - 99999999999. 99 NJ 3 11 : 30 : 20.816 Core 1 TesterStop () called on 0 % of testing interval CD 0 11 : 30 : 20.816 Core 1 final balance 10000.00 USD QF 0 11 : 30 : 20.816 Core 1 OnTester result - 99999999999. 88
Yani bu bir hata! ve Cant, MQ'dur.
Bu senaryoda, TesterStop() ve ExpertRemove () 'un, kontrolü hemen OnTester()'a aktaramazlarsa true döndürmesi gerektiğini düşünüyorum. Böylece bir şekilde tepki verebilirsiniz, örneğin şöyle:
bool tester_stop = false ; // флаг проверки выхода по TesterStop ....... void OnTick () { //--- пропустить бесполезные проходы оптимизации if (!check_init && ( MQLInfoInteger ( MQL_OPTIMIZATION ) || MQLInfoInteger ( MQL_TESTER ))) { if (недопустимый параметр) tester_stop = TesterStop (); ........ } double OnTester () { if (tester_stop) return (- 99999999999.99 );
Bu durumda, mantıksal olarak beklenen sonucu tam olarak almak ve bir tef ile dansları düzenlememek ve testi durdurmanın bir sonucu olarak teorik olarak ortaya çıkabilecek tüm hataları sağlamak mümkün olacaktır.
Artyom, sorun yeni yapıda!
Diyelim ki burada hatasız çalışan bir kod yazdınız. Uzun süre çalışır. Ve aniden, yeni bir MT sürümünden sonra, bir sürü hatayla çöküyor. Kim suçlu? Özellikle de birçok kişinin bildiği gibi dokümantasyonun her zaman yenilikleri tanımlamaya ayak uydurmadığını düşündüğünüzde.
Yani kodum hatasız çalıştı.
Bunu kullandım:
Şimdi, ortaya çıkan sorunlardan sonra birkaç satır daha ekledim:
Zihinsel olarak, aktarımın kodun geri kalanını çalıştırmadan hemen yapılması gerektiği varsayılır. Böyle?
Aslında, TesterStop() testi hiç durdurmaz!
"Geçersiz" bir parametre girdim ve aşağıdaki sonucu aldım:
Yani bu bir hata! ve Cant, MQ'dur.
Bu senaryoda, TesterStop() ve ExpertRemove () 'un, kontrolü hemen OnTester()'a aktaramazlarsa true döndürmesi gerektiğini düşünüyorum. Böylece bir şekilde tepki verebilirsiniz, örneğin şöyle:
Bu durumda, mantıksal olarak beklenen sonucu tam olarak almak ve bir tef ile dansları düzenlememek ve testi durdurmanın bir sonucu olarak teorik olarak ortaya çıkabilecek tüm hataları sağlamak mümkün olacaktır.
Tüm hesaplamalarınız ve testleriniz bana gösterilmemeli ve belirli bir miktarda alay ve tahrişle değil, " Hatalar, hatalar, sorular " konusunda kuru ve özlü bir şekilde gösterilmemelidir. Tabii duyulmak ve bir cevap almak istemiyorsanız.
not. Ve hata raporlarında "söve", "şarap", "tef ile dans etmek" ve diğer "bok kodları" gibi kelimeleri unutmanız önerilir - tüm insanlar ve siz de hata yapmazsınız. Evet ve "çılgın" ifadeler çok ciddi ve yapıcı görünmüyor.
Tüm hesaplamalarınız ve testleriniz bana gösterilmemeli ve belirli bir miktarda alay ve tahrişle değil, " Hatalar, hatalar, sorular " konusunda kuru ve özlü bir şekilde gösterilmemelidir. Tabii duyulmak ve bir cevap almak istemiyorsanız.
Böyle hissediyorsan özür dilerim. Tabii ki tahriş var, ama birdenbire sorunlar ortaya çıktığında nasıl olmasın? Ve alaycılık ... - bence bariz hakkında şaşkınlık, bence, gaflar. ))
Belirtilen konuya gelince, bana bir şey, sorunun orada kolayca "kaybedilebileceği" gibi görünüyor. Yani belirli bir sorunu olan yeni bir konunun daha etkili olduğunu düşünüyorum? Ya da değil?
Her durumda, bir moderatör olarak, varlıklarını kendiniz doğrularsanız, geliştiricilerin dikkatini bazı sorunlara çekmeniz daha olasıdır)))
Oraya bir soru eklemeye çalışacağım...
- Ü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
Sevgili, burada MT sürümlerinin bir arşivini oluşturmayı öneriyorum. Ve sonra, bazen, güncelleme ile beklenmedik hatalar ortaya çıkabilir ve önceki sürüme geri dönmeniz gerekebilir ...
Şimdi 2007 yapımına ihtiyacım var. Elinde olan var mı? Lütfen paylaşın.