Erros, bugs, perguntas - página 2010

 
Andrey Dik:
no testador CopyTicks devolve zeros, isto é normal?
Por acaso está a testar, no modo OHLC M1 ou preços de abertura?
 
Alexey Kozitsyn:
Por acaso está a testar, no modo OHLC M1 ou preços de abertura?
Não, tentei tanto "carraças" como "carraças reais", às vezes a estrutura está cheia de zeros, às vezes parcialmente.
 

Por favor, alguém experimente esta EA no testador em diferentes modos de teste:

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


O objectivo é obter um número especificado dos carrapatos mais frescos em cada carrapato. zeros saem, pelo amor de Deus.

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

Por favor, alguém experimente esta EA no testador em diferentes modos de teste:


O objectivo é obter um número especificado dos carrapatos mais frescos em cada carrapato. zeros saem, pelo amor de Deus.


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, alguém experimente esta EA no testador em diferentes modos de teste:


O objectivo é obter um número especificado dos carrapatos mais frescos em cada carrapato. zeros saem, pelo amor de Deus.

Consegui obtê-lo em FORTS, mas apenas um TRADE-flow (usando um indicador). O seu Expert Advisor nem sequer quer correr com carraças reais.
 
Alexey Kozitsyn:
Em FORTS eu consegui obter, mas apenas um TRADE - fluxo (usando um indicador). O seu perito nem sequer quer correr com carraças reais...

sim, há um problema. mas onde? qual é exactamente o problema, essa é a questão.

Mas uma vez, no entanto, houve um erro.

 
Andrey Dik:

Por favor, alguém experimente esta EA no testador em diferentes modos de teste:


A sua essência é obter um número especificado dos carrapatos mais frescos em cada carrapato.

Bem, se quiser os carrapatos mais frescos, não os deve tirar de zero, mas do tempo actual em milissegundos.

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

Bem, se quiser carraças frescas, não as deve tirar de zero, mas do tempo actual em milissegundos.

A ajuda diz:

a partir de

[em] Data a partir da qual as carraças são solicitadas. Especificado em milissegundos a partir de 01.01.1970. Se de=0, é dada a última contagem de carraças.

 

Guardo ficheiro mq5 no Metaeditor, mas a sua versão antiga é guardada (o tempo varia). Neste caso ex5 na compilação corresponde ao que eu vejo em ME. Mas quando eu fechar ME, todos os dados em ficheiro serão perdidos.

Ao tentar salvá-lo com um nome diferente, cria-se um ficheiro, mas existe uma fonte antiga, não aquela que vejo em ME. Há definitivamente espaço na unidade.

 
Comentários não relevantes para este tópico foram transferidos para "Porque é que a EA não funciona".
Razão: