Hatalar, hatalar, sorular - sayfa 2010

 
Andrey Dik :
test cihazında CopyTicks sıfır döndürür, bu normal mi?
OHLC M1 modunda veya açılış fiyatlarını test etmiyor musunuz?
 
Alexey Kozitsyn :
OHLC M1 modunda veya açılış fiyatlarını test etmiyor musunuz?
hayır, hem "keneler" hem de "gerçek onaylar" denedim, bazen yapı dizisi tamamen, bazen kısmen sıfırlarla doldurulur.
 

Lütfen birisi, bu EA'yı test cihazında farklı test modlarında deneyin:

 //——————————————————————————————————————————————————————————————————————————————
input    int                      AveTicksPeriod_P       = 20 ;

MqlTick G_Ticks [];

//——————————————————————————————————————————————————————————————————————————————
int OnInit ()
{
   // сделаем начальную синхронизацию
  GetLastRequredTicks ( Symbol (), AveTicksPeriod_P, G_Ticks, true , COPY_TICKS_INFO , 0 );

   return ( INIT_SUCCEEDED );
}
//——————————————————————————————————————————————————————————————————————————————

//——————————————————————————————————————————————————————————————————————————————
void OnTick ()
{
   Print ( "---------------------" );

   if (!GetLastRequredTicks ( Symbol (), AveTicksPeriod_P, G_Ticks, true , COPY_TICKS_INFO , 0 ))
  {
     Print ( "Ошибка получения тиков " + ( string ) ArraySize (G_Ticks));
     return ;
  }

   int errors = 0 ;

   for ( int i = 0 ; i < AveTicksPeriod_P; i++)
     if (G_Ticks [i].bid <= 0.0 )
    {
       Print (G_Ticks [i].bid);
      errors++;
    }
  
   if (errors > 0 )
     Print ( "errors: " + ( string )errors);
}
//——————————————————————————————————————————————————————————————————————————————

//——————————————————————————————————————————————————————————————————————————————
// Получение последних тиков c в указанном количестве,
// попытки в течении указанного времени в мс
bool GetLastRequredTicks ( string    symbol,                 //символ
                           int       count,                   //количество
                           MqlTick &ticks [],                 //массив для приёма тиков
                           bool      timeseries = true ,       //0-й элемент самый свежий или нет
                           uint      flag = COPY_TICKS_INFO , //COPY_TICKS_INFO или COPY_TICKS_TRADE или COPY_TICKS_ALL
                           ulong     waitMs = 0 )             //отведённое время на получение в мкс (10(-6)с)
{
   //---
   bool     success = false ;   // флаг успешного выполнения копирования тиков
   MqlTick tick_array [];     // массив для приема тиков
   if (timeseries)
     ArraySetAsSeries (ticks, timeseries);
   ZeroMemory (tick_array);
   ulong startTime   = GetMicrosecondCount ();
   ulong timeElapsed = 0 ; // мкс
   int    received    = 0 ;

   ResetLastError ();
   bool wait = true ;

   while (wait)
  {
     //--- запросим тиковую историю последних тиков в указанном количестве
    received = CopyTicks (symbol, ticks, flag, 0 , count);

    timeElapsed = GetMicrosecondCount () - startTime;

     // если указано допустимое время на синхронизацию
     if (waitMs > 0 )
    {
       // если время превысило допустимое, то попыток больше не будет
       if (timeElapsed >= waitMs)
        wait = false ;
    }

     if (received == count)
    {
       //--- выведем информацию о количестве тиков и затраченном времени времени
       //PrintFormat ("%s: received %d ticks in %d mcs", _Symbol, received, timeElapsed);

       return ( true );
    }

     //--- пауза в 0.1 секунду в ожидании завершения синхронизации тиковой базы
     Sleep ( 100 );
  }

   return ( false );
}
//——————————————————————————————————————————————————————————————————————————————


özü, her bir kene üzerinde belirtilen en son kene sayısını elde etmektir. sıfırlar elde edilir, hatta çatlar.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии ( советники ) перед началом использования их в реальной торговле. При...
 
Andrey Dik :

Lütfen birisi, bu EA'yı test cihazında farklı test modlarında deneyin:


özü, her bir kene üzerinde belirtilen en son kene sayısını elde etmektir. sıfırlar elde edilir, hatta çatlar.


Ticks   EURUSD: ticks synchronization started
OE       0        00 : 31 : 42.376     Ticks   EURUSD: load 34 bytes of tick data to synchronize in 0 : 00 : 00.000
KP       0        00 : 31 : 42.376     Ticks   EURUSD: history ticks synchronized from 2017.07 . 16 to 2017.09 . 20
DK       0        00 : 31 : 42.442     History EURUSD,M15: history cached from 2016.01 . 03 23 : 00
CK       0        00 : 31 : 42.442     Tester  EURUSD,M15 (): generating based on real ticks
MS       0        00 : 31 : 42.442     Tester  EURUSD,M15: testing of Experts\test_getTicks.ex5 from 2017.09 . 20 00 : 00 to 2017.09 . 21 00 : 00 started with inputs:
CO       0        00 : 31 : 42.442     Tester    AveTicksPeriod_P= 20
HH       0        00 : 31 : 42.681     Ticks   EURUSD : real ticks begin from 2017.07 . 16 00 : 00 : 00
EL       3        00 : 31 : 42.681     Ticks   EURUSD : 2017.09 . 20 00 : 00 - 2017.09 . 21 00 : 00   last prices translation turned on for 1333 minute bars
PN       0        00 : 31 : 42.682     test_getTicks (EURUSD,M15)       2017.09 . 20 00 : 00 : 19    ---------------------
IE       0        00 : 31 : 42.763     test_getTicks (EURUSD,M15)       2017.09 . 20 00 : 00 : 23    ---------------------
LE       0        00 : 31 : 42.877     test_getTicks (EURUSD,M15)       2017.09 . 20 00 : 00 : 23    0.0
RP       0        00 : 31 : 42.877     test_getTicks (EURUSD,M15)       2017.09 . 20 00 : 00 : 23    errors: 1
FG       0        00 : 31 : 42.878     test_getTicks (EURUSD,M15)       2017.09 . 20 00 : 00 : 23    ---------------------
HG       0        00 : 31 : 42.949     test_getTicks (EURUSD,M15)       2017.09 . 20 00 : 00 : 23    0.0
FR       0        00 : 31 : 42.949     test_getTicks (EURUSD,M15)       2017.09 . 20 00 : 00 : 23    errors: 1
RI       0        00 : 31 : 42.950     test_getTicks (EURUSD,M15)       2017.09 . 20 00 : 00 : 24    ---------------------
 
Andrey Dik :

Lütfen birisi, bu EA'yı test cihazında farklı test modlarında deneyin:


özü, her bir kene üzerinde belirtilen en son kene sayısını elde etmektir. sıfırlar elde edilir, hatta çatlar.

FORTS'ta elde etmek mümkündü, ancak yalnızca TİCARET - bir akış (bir gösterge yardımıyla). EA'nız gerçek keneler üzerinde çalışmak bile istemiyor...
 
Alexey Kozitsyn :
FORTS'ta elde etmek mümkündü, ancak yalnızca TİCARET - bir akış (bir gösterge yardımıyla). EA'nız gerçek keneler üzerinde çalışmak bile istemiyor...

evet, ne sorun. ama nerede? Sorun tam olarak nedir, soru bu.

çizelgelerde fx-semboller sorunsuz pulluklar. Doğru, bir kez aynı hatayı kaydırdı.

 
Andrey Dik :

Lütfen birisi, bu EA'yı test cihazında farklı test modlarında deneyin:


özü, her bir kene üzerinde belirtilen en son kene sayısını elde etmektir. sıfırlar elde edilir, hatta çatlar.

Peki, taze kenelere ihtiyacınız varsa, onları sıfırdan değil, şimdiki zamandan milisaniye cinsinden almanız gerekir.

    received = CopyTicks (symbol, ticks, flag, TimeCurrent ()* 1000 , count);
 
Alexey Viktorov :

Eh, yeni kenelere ihtiyacınız varsa, onları sıfırdan değil, şimdiki zamandan milisaniye cinsinden almanız gerekir .

Yardım diyor ki:

itibaren

[içinde] Kenelerin istendiği tarih. 01/01/1970 tarihinden itibaren milisaniye cinsinden belirtilir. =0'dan gelen parametre ise , son sayım keneleri döndürülür.

 

mq5 dosyasını Metaeditor'a kaydettim ve eski sürümü kaydedildi (zaman değişiklikleri). Aynı zamanda, derleme sırasındaki ex5, ME'de gördüklerime karşılık geliyor. Ancak ME'yi kapattığınızda, dosyadaki tüm veriler kaybolacak.

Farklı bir adla kaydetmeye çalışıyorum - dosya oluşturuldu, ancak eski bir kaynak var - ME'de gördüğüm kaynak değil. Diskte kesinlikle yer var.

 
Bu konuyla ilgili olmayan yorumlar " EA neden çalışmıyor " bölümüne taşındı.