"CopyTicks"in Test Edilmesi - sayfa 43

 
fxsaber :
CopyTicksRange istenen tüm onay işaretlerini doğru şekilde döndürdüğünde bir hatayla karşılaştım, ancak LastError == ERR_HISTORY_TIMEOUT(4403).


Bu bir hata değil, bir özelliktir. CopyTicks bazen aynı şeyi verir. Bu "özelliği" nasıl kullanacağımı anlayana kadar

CopyTicksRange işlevinin açıklamasında:

 ERR_HISTORY_TIMEOUT – время ожидание синхронизации тиков вышло, функция отдала всё что было.

Elbette, CopyTicks işlevinde bir onay işareti alınması şartıyla geliştiricilerin bu hatanın ne anlama geldiğini açıklamasını isterim. Bu hata nasıl işlenir. ps: göstergede arıyorum

 

Lütfen bu sorunu en kısa sürede çözmek için hangi bilgileri sağlamanız gerektiğini bana bildirin.

 void OnStart ()
{
   MqlTick Ticks[];

   Print ( CopyTicksRange ( _Symbol , Ticks, COPY_TICKS_INFO , ( ulong ) D'2020.04.09 10:40:29' * 1000 , ( ulong ) D'2020.04.11' * 1000 )); // 8192
   Print ( _LastError ); // 4407

   ResetLastError ();

   MqlTick Ticks2[];

   Print ( CopyTicksRange ( _Symbol , Ticks2, COPY_TICKS_INFO , ( ulong ) D'2020.04.09 10:40:30' * 1000 )); // 131066
   Print ( _LastError ); // 0
}


Tiki kopyalama yapmıyor, hata veriyor.

Devamlı

Anlam

Tanım

ERR_HISTORY_SMALL_BUFFER

4407

Alıcı dizi, istenen tüm verileri tutamayacak kadar küçük.


Böyle sürprizlerle normal bir şekilde çalışmak imkansız!


GUI aracılığıyla (CTRL+U) keneler sorunsuz alınır.

Arama dizisi : Oshibka 007.
 
fxsaber :

Lütfen bu sorunu en kısa sürede çözmek için hangi bilgileri sağlamanız gerektiğini bana bildirin.

Tiki kopyalama yapmıyor, hata veriyor.

Devamlı

Anlam

Tanım

ERR_HISTORY_SMALL_BUFFER

4407

Alıcı dizi, istenen tüm verileri tutamayacak kadar küçük.

Yerel olarak farklı şekillerde kontrol ettik - henüz yeniden üretilmedi. Ayrıntılara ihtiyacınız var:

1. Terminalin hangi versiyonu?

2. Hangi sunucuyla çalışıyorsunuz?

3. Komut dosyası hangi sembolde çağrılır?

4. COPY_TICKS_INFO ile değil de COPY_TICKS_ALL ile ararsanız, ERR_HISTORY_SMALL_BUFFER hatası da mı çıkıyor?

Teşekkür ederim!

 
Anton :

Yerel olarak farklı şekillerde kontrol ettik - henüz yeniden üretilmedi. Ayrıntılara ihtiyacınız var:

1. Terminalin hangi versiyonu?

2. Hangi sunucuyla çalışıyorsunuz?

3. Komut dosyası hangi sembolde çağrılır?

4. COPY_TICKS_INFO ile değil de COPY_TICKS_ALL ile ararsanız, ERR_HISTORY_SMALL_BUFFER hatası da mı çıkıyor?

Teşekkür ederim!

  1. 2380.
  2. Herhangi bir sunucu - 3. maddeye bakın.
  3. Özel sembol .
  4. Bayrak davranışı değiştirmez.

ZY Karavanda özel. json'dan bir sembol oluşturun, keneleri içe aktarın, bu sembolün grafiğinde bir komut dosyası çalıştırın. Çoğaltılıp çoğaltılmadığını lütfen yazınız.

Dosyalar:
EURUSD.zip  896 kb
 
fxsaber :

Çoğaltılıp çoğaltılmadığını lütfen yazınız.

Evet, 2380'de yeniden üretildi.

Çok teşekkürler! Anlıyoruz.

 
fxsaber :

  1. 2380.
  2. Herhangi bir sunucu - 3. maddeye bakın.
  3. Özel sembol.
  4. Bayrak davranışı değiştirmez.

ZY Karavanda özel. json'dan bir sembol oluşturun, keneleri içe aktarın, bu sembolün grafiğinde bir komut dosyası çalıştırın. Çoğaltılıp çoğaltılmadığını lütfen yazınız.


Tekrar teşekkürler.

Evet, 2380'de sorunu yanlışlıkla getirdiler ve ardından hızla düzelttiler. Ancak 2380'e girmeyi başardı.

Ne yazık ki, o andan beri her şeyin MetaQuotes-Demo'da sabitlendiği yeni bir yapı olmadı.

Herhangi bir önceki yapıya geri dönebilir veya MetaQuotes-Demo'da bir sonraki derlemeyi bekleyebilirsiniz.
 
Anton :
Herhangi bir önceki yapıya geri dönebilir veya MetaQuotes-Demo'da bir sonraki derlemeyi bekleyebilirsiniz.

Önceki yapı iken gerçek için teşekkür ederim. 2380'de çok şey yaptılar...

 

MT5'in en son sürümü 2361'i oluşturdu. Özel sembolle birlikte eklendi. json'dan bir sembol oluşturun, keneleri içe aktarın, bu sembolün grafiğinde bir EA testi çalıştırın.

danışman

 void OnTick ()
{
   MqlTick Tick={ 0 };
   if ( SymbolInfoTick ( _Symbol ,Tick))
  {
     MqlTick OldTicks[];
     Print ( CopyTicks ( _Symbol ,OldTicks, COPY_TICKS_ALL ));
     Print ( GetLastError ());
     Print ( CopyTicks ( _Symbol ,OldTicks, COPY_TICKS_ALL ,( ulong ) D'2020.04.06 00:00:00' * 1000 ));
     Print ( GetLastError ());
  }
   ExpertRemove ();
}

Test Seçenekleri

[Tester]
Expert=test.ex5
Symbol =AUDNZD.RannForex
Period =M1
Optimization= 0
Model= 4
FromDate= 2020.04 . 08
ToDate= 2020.04 . 09
ForwardMode= 0
Deposit= 10000000
Currency=USD
ProfitInPips= 1
Leverage= 100
ExecutionMode= 0
OptimizationCriterion= 6
Visual= 0

1. Netleştirme hesabı.

1.1. Verilen tarihlerle çıktı gerçeğe benzer: 2000 0 2000 0.

1.2. Tarihler 04/07/2020-04/08/2020 olarak değiştirilirken çıktı garip oluyor: -1 4004 1 0.

İlk olarak, hata neden ilk durumda görünüyor? İkincisi, neden ikinci vaka sadece 1 onay alıyor? Onay isteği tarihi değişmedi.

2. Hedge hesabı.

2.1. Verilen tarihlerle çıktı tuhaflaşıyor: 2000 0 1 0.

İkinci vaka neden sadece 1 onay alıyor? Onay isteği tarihi değişmedi.

2.2. Tarihleri 04/07/2020-04/08/2020 olarak değiştirirken, çıktı garip ama aynı olacak: 2000 0 1 0.


Bu nedenle sorular: Sabit parametrelere sahip CopyTicks neden yalnızca test tarihlerine değil, aynı zamanda hesap türüne de bağlıdır? Yoksa bir şeyi özlüyor ve yanlış bir şey mi yapıyorum?

Bu, işi büyük ölçüde karmaşıklaştırır, lütfen mümkünse düzeltin. yeniden üretebildiniz mi? Benden tekrarlaman gereken başka bir şey var mı? Teşekkür ederim.

Dosyalar:
AUDNZD.zip  2448 kb
 
traveller00 :

Bu nedenle sorular: Sabit parametrelere sahip CopyTicks neden yalnızca test tarihlerine değil, aynı zamanda hesap türüne de bağlıdır? Yoksa bir şeyi özlüyor ve yanlış bir şey mi yapıyorum?

Hesap türüne bağımlılık - nedenlerini kabaca hayal edebilirsiniz. Doğru olduğunu söylemeyeceğim. Sembolleri son geçmişle değiş tokuş edin - geliştiricilerin onlarla çit üzerinde ne yapacakları vb. hakkında iyi düşünmeleri gerekir.

CopyTicks'i Tester'da kendim kullanmıyorum. İlk gün önemli değil. Gerçekten net ticaret sinyallerine ihtiyacınız varsa, ilk gün ticaret yapmayın.

 
traveller00 :

MT5'in en son sürümü 2361. Ekteki özel sembol. json'dan bir sembol oluşturun, keneleri içe aktarın, bu sembolün grafiğinde bir EA testi çalıştırın.

danışman

Test Seçenekleri

1. Netleştirme hesabı.

1.1. Verilen tarihlerle çıktı gerçeğe benzer: 2000 0 2000 0.

1.2. Tarihler 04/07/2020-04/08/2020 olarak değiştirilirken çıktı garip oluyor: -1 4004 1 0.

İlk olarak, hata neden ilk durumda görünüyor? İkincisi, neden ikinci vaka sadece 1 onay alıyor? Onay isteği tarihi değişmedi.

2. Hedge hesabı.

2.1. Verilen tarihlerle çıktı tuhaflaşıyor: 2000 0 1 0.

İkinci vaka neden sadece 1 onay alıyor? Onay isteği tarihi değişmedi.

2.2. Tarihleri 04/07/2020-04/08/2020 olarak değiştirirken, çıktı garip ama aynı şekilde duracaktır: 2000 0 1 0.


Bu nedenle sorular: Sabit parametrelere sahip CopyTicks neden yalnızca test tarihlerine değil, aynı zamanda hesap türüne de bağlıdır? Yoksa bir şeyi özlüyor ve yanlış bir şey mi yapıyorum?

Bu, işi büyük ölçüde karmaşıklaştırır, lütfen mümkünse düzeltin. yeniden üretebildiniz mi? Benden tekrarlaman gereken başka bir şey var mı? Teşekkür ederim.

İlk lansman. Tester günlüklerine bakıyoruz

 2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: symbol to be synchronized
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: symbol synchronized, 3720 bytes of symbol info received
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: load 23 Kb of history data to synchronize in 0 : 00 : 00.009
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: history synchronized from 2020.04 . 06 to 2020.04 . 08
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: ticks synchronization started
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: load 567 Kb of tick data to synchronize in 0 : 00 : 00.031
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: history ticks synchronized from 2020.04 . 08 to 2020.04 . 08
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex,M1: history cache allocated for 3897 bars and contains 2868 bars from 2020.04 . 06 00 : 05 to 2020.04 . 07 23 : 59
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex,M1: history begins from 2020.04 . 06 00 : 05
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex,M1 (MetaQuotes-Demo): generating based on real ticks
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex,M1: testing of Experts\test.ex5 from 2020.04 . 08 00 : 00 to 2020.04 . 09 00 : 00 started
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex : real ticks begin from 2020.04 . 08 00 : 00 : 00
2020.04 . 21 10 : 53 : 10.573 Core 01 2020.04 . 08 00 : 01 : 11    - 1
2020.04 . 21 10 : 53 : 10.573 Core 01 2020.04 . 08 00 : 01 : 11    4004
2020.04 . 21 10 : 53 : 10.573 Core 01 2020.04 . 08 00 : 01 : 11    1
2020.04 . 21 10 : 53 : 10.573 Core 01 2020.04 . 08 00 : 01 : 11    0
2020.04 . 21 10 : 53 : 10.573 Core 01 2020.04 . 08 00 : 01 : 11    ExpertRemove() function called
2020.04 . 21 10 : 53 : 10.573 Core 01 removed itself within OnTick

Test cihazı, keneleri 8 Nisan'da yalnızca bir günde senkronize etti. Yani, 8 Nisan'a kadar kene yok.

Başlangıçta 4004 hatası aldık (istenen keneler için yeterli bellek yok). Bu yanlış mesaj, anlayacağız. Varsayılan parametrelere sahip istek, mevcut kenelerin sınırında görünüyor

Aşağıdaki istek oldukça haklı olarak size 1 onay verdi. Çünkü 2020.04.06 00:00:00'dan şu anki test anına kadar, ilk tik geldiğinde sadece bir tik var.

Danışmanı biraz ayarlayacağız

 void OnTick ()
  {
   MqlTick Tick= { 0 };
   if ( SymbolInfoTick ( _Symbol ,Tick))
     {
       MqlTick OldTicks[];
       Print ( CopyTicks ( _Symbol ,OldTicks, COPY_TICKS_ALL ));
       if ( GetLastError ()!= 0 )
         return ;
       Print ( GetLastError ());
       Print ( CopyTicks ( _Symbol ,OldTicks, COPY_TICKS_ALL ,( ulong ) D'2020.04.06 00:00:00' * 1000 ));
       Print ( GetLastError ());
     }
   ExpertRemove ();
  }

ve ikinci tikten itibaren kenelerin tırmanmaya başladığını görüyoruz. Her iki durumda da - 2 tik

 2020.04 . 21 11 : 14 : 13.256 Core 01 AUDNZD.RannForex : real ticks begin from 2020.04 . 08 00 : 00 : 00
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 11    - 1
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 19    2
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 19    0
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 19    2
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 19    0
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 19    ExpertRemove () function called

Yani, kenelerin varlığının sınırındaki istek hatası varsayımının doğru olduğu ortaya çıktı.

Başlangıç tarihini 7 Nisan olarak değiştirin

 2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex: history ticks synchronized from 2020.04 . 07 to 2020.04 . 08
2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex,M1: history cache allocated for 3486 bars and contains 1429 bars from 2020.04 . 06 00 : 05 to 2020.04 . 06 23 : 59
2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex,M1: history begins from 2020.04 . 06 00 : 05
2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex,M1 (MetaQuotes-Demo): generating based on real ticks
2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex,M1: testing of Experts\test.ex5 from 2020.04 . 07 00 : 00 to 2020.04 . 09 00 : 00 started
2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex : real ticks begin from 2020.04 . 07 00 : 00 : 00
2020.04 . 21 11 : 18 : 17.775 Core 01 2020.04 . 07 00 : 01 : 28    - 1
2020.04 . 21 11 : 18 : 17.775 Core 01 2020.04 . 07 00 : 01 : 28    4004
2020.04 . 21 11 : 18 : 17.775 Core 01 2020.04 . 07 00 : 01 : 28    1
2020.04 . 21 11 : 18 : 17.775 Core 01 2020.04 . 07 00 : 01 : 28    0
2020.04 . 21 11 : 18 : 17.775 Core 01 2020.04 . 07 00 : 01 : 28    ExpertRemove() function called
2020.04 . 21 11 : 18 : 17.775 Core 01 removed itself within OnTick

Hepsi aynı. Tiklerimizin 2 gündür senkronize edilmiş olması dışında - test veri tabanında 7 ve 8 Nisan için keneler var.

Başlangıç tarihini 8 Nisan olarak belirledik. Ve beklenen çıktıyı görüyoruz

 2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex: load 47 bytes of history data to synchronize in 0 : 00 : 00.000
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex: history synchronized from 2020.04 . 06 to 2020.04 . 08
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex: ticks synchronization started
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex: load 54 bytes of tick data to synchronize in 0 : 00 : 00.000
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex: history ticks synchronized from 2020.04 . 07 to 2020.04 . 08
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex,M1: history cache allocated for 3897 bars and contains 2868 bars from 2020.04 . 06 00 : 05 to 2020.04 . 07 23 : 59
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex,M1: history begins from 2020.04 . 06 00 : 05
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex,M1 (MetaQuotes-Demo): generating based on real ticks
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex,M1: testing of Experts\test.ex5 from 2020.04 . 08 00 : 00 to 2020.04 . 09 00 : 00 started
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex : real ticks begin from 2020.04 . 07 00 : 00 : 00
2020.04 . 21 11 : 20 : 51.257 Core 01 2020.04 . 08 00 : 01 : 11    2000
2020.04 . 21 11 : 20 : 51.257 Core 01 2020.04 . 08 00 : 01 : 11    0
2020.04 . 21 11 : 20 : 51.257 Core 01 2020.04 . 08 00 : 01 : 11    2000
2020.04 . 21 11 : 20 : 51.257 Core 01 2020.04 . 08 00 : 01 : 11    0
2020.04 . 21 11 : 20 : 51.257 Core 01 2020.04 . 08 00 : 01 : 11    ExpertRemove() function called
2020.04 . 21 11 : 20 : 51.257 Core 01 removed itself within OnTick

Çünkü test cihazı, ilk lansmandan daha fazla onay işaretine sahiptir. Ve netleştirme ile korunmanın bununla hiçbir ilgisi yok