오류, 버그, 질문 - 페이지 2010

 
Andrey Dik :
테스터에서 CopyTicks는 0을 반환합니다. 정상입니까?
혹시 OHLC M1 모드나 시가가 아닌 상태에서 테스트 중이신 가요?
 
Alexey Kozitsyn :
혹시 OHLC M1 모드나 시가가 아닌 상태에서 테스트 중이신 가요?
아니요, "tick"과 "real ticks"를 모두 시도했습니다. 때로는 구조 배열이 완전히 0으로 채워지고 때로는 부분적으로 채워집니다.
 

다른 테스트 모드의 테스터에서 이 EA를 사용해 보세요.

 //——————————————————————————————————————————————————————————————————————————————
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 );
}
//——————————————————————————————————————————————————————————————————————————————


핵심은 각 틱에서 가장 최근 틱의 지정된 수를 얻는 것입니다. 0, 심지어 균열이 얻어집니다.

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

다른 테스트 모드의 테스터에서 이 EA를 사용해 보세요.


핵심은 각 틱에서 가장 최근 틱의 지정된 수를 얻는 것입니다. 0, 심지어 균열이 얻어집니다.


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 :

다른 테스트 모드의 테스터에서 이 EA를 사용해 보세요.


핵심은 각 틱에서 가장 최근 틱의 지정된 수를 얻는 것입니다. 0, 심지어 균열이 얻어집니다.

FORTS에서는 얻을 수 있었지만 TRADE 만 - 흐름 (표시기의 도움으로). 귀하의 EA는 실제 틱에서 실행하고 싶지도 않습니다...
 
Alexey Kozitsyn :
FORTS에서는 얻을 수 있었지만 TRADE 만 - 흐름 (표시기의 도움으로). 귀하의 EA는 실제 틱에서 실행하고 싶지도 않습니다...

네, 어떤 문제가 있습니다. 하지만 어디? 문제가 정확히 무엇인지, 그것이 질문입니다.

차트에서 fx-symbols는 문제 없이 쟁기질합니다. 사실, 한 번 모든 동일한 오류가 미끄러졌습니다.

 
Andrey Dik :

다른 테스트 모드의 테스터에서 이 EA를 사용해 보세요.


핵심은 각 틱에서 가장 최근 틱의 지정된 수를 얻는 것입니다. 0, 심지어 균열이 얻어집니다.

글쎄, 새로운 진드기가 필요한 경우 0이 아니라 현재 시간(밀리초)에서 가져와야 합니다.

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

글쎄, 새로운 틱이 필요한 경우 0이 아니라 현재 시간(밀리초)에서 가져와야 합니다.

도움말은 다음과 같이 말합니다.

~에서

【인】 틱이 요청된 날짜입니다. 1970년 1월 1일부터 밀리초 단위로 지정됩니다. 매개변수 =0이면 마지막 카운트 이 반환됩니다.

 

메타에디터에 mq5 파일을 저장했는데 그 이전 버전이 저장됩니다(시간 변경). 동시에 컴파일 중 ex5는 ME에서 보는 것과 일치합니다. 그러나 ME를 닫으면 파일의 모든 데이터가 손실됩니다.

다른 이름으로 저장하려고 합니다. 파일이 생성되었지만 ME에서 볼 수 없는 이전 소스가 있습니다. 디스크에 공간이 확실히 있습니다.

 
이 주제와 관련이 없는 댓글은 " EA가 작동하지 않는 이유 "로 이동되었습니다.