Errores, fallos, preguntas - página 2010

 
Andrey Dik:
en el comprobador de CopyTicks devuelve ceros, ¿es esto normal?
¿Por casualidad está probando en modo OHLC M1 o precios de apertura?
 
Alexey Kozitsyn:
¿Por casualidad está probando en modo OHLC M1 o precios de apertura?
No, he probado tanto con "ticks" como con "ticks reales", a veces el array de la estructura está lleno de ceros, a veces parcialmente.
 

Por favor, que alguien pruebe este EA en el probador en diferentes modos de prueba:

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


El objetivo es obtener un número determinado de las garrapatas más frescas en cada garrapata. los ceros salen, por el amor de Dios.

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

Por favor, que alguien pruebe este EA en el probador en diferentes modos de prueba:


El objetivo es obtener un número determinado de las garrapatas más frescas en cada garrapata. los ceros salen, por el amor de Dios.


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:

Por favor, que alguien pruebe este EA en el probador en diferentes modos de prueba:


El objetivo es obtener un número determinado de las garrapatas más frescas en cada garrapata. los ceros salen, por el amor de Dios.

Conseguí conseguirlo en FORTS, pero sólo un flujo de TRADE (usando un indicador). Su Asesor Experto ni siquiera quiere funcionar con ticks reales...
 
Alexey Kozitsyn:
En FORTS me las arreglé para conseguir, pero sólo un TRADE - flujo (utilizando un indicador). Su experto ni siquiera quiere correr con garrapatas reales...

sí, hay un problema. pero ¿dónde? cuál es exactamente el problema, esa es la cuestión.

Pero una vez hubo un error.

 
Andrey Dik:

Por favor, que alguien pruebe este EA en el probador en diferentes modos de prueba:


Su esencia es obtener un número determinado de las garrapatas más frescas en cada garrapata.

Pues bien, si quieres los ticks más frescos, no debes tomarlos desde cero, sino desde el tiempo actual en milisegundos.

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

Pues bien, si quieres ticks frescos, no debes tomarlos desde cero, sino desde el tiempo actual en milisegundos.

La ayuda dice:

de

[en] Fecha a partir de la cual se solicitan los ticks. Especificado en milisegundos desde el 01.01.1970. Si from=0, se da la última cuenta de ticks.

 

Guardo el archivo mq5 en el Metaeditor, pero su versión antigua se guarda (el tiempo varía). En este caso ex5 en la compilación corresponde a lo que veo en ME. Pero cuando cierro ME, todos los datos del archivo se pierden.

Tratando de guardarlo con otro nombre - el archivo se crea, pero hay una fuente antigua - no la que veo en ME. Definitivamente hay espacio en la unidad.

 
Los comentarios que no son relevantes para este tema se han trasladado a "Por qué no funciona la EA".
Razón de la queja: