Fehler, Irrtümer, Fragen - Seite 2010

 
Andrey Dik:
im CopyTicks-Tester Nullen zurück, ist das normal?
Testen Sie zufällig im OHLC M1-Modus oder mit Eröffnungskursen?
 
Alexey Kozitsyn:
Testen Sie zufällig im OHLC M1-Modus oder mit Eröffnungskursen?
Nein, ich habe sowohl "Ticks" als auch "echte Ticks" ausprobiert, manchmal ist das Struktur-Array voller Nullen, manchmal nur teilweise.
 

Bitte, jemand probiert diesen EA im Tester in verschiedenen Testmodi aus:

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


Es geht darum, eine bestimmte Anzahl der frischesten Zecken auf jeder Zecke zu erhalten. Nullen kommen heraus, um Himmels willen.

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

Bitte, jemand probiert diesen EA im Tester in verschiedenen Testmodi aus:


Es geht darum, eine bestimmte Anzahl der frischesten Zecken auf jeder Zecke zu erhalten. Nullen kommen heraus, um Himmels willen.


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:

Bitte, jemand probiert diesen EA im Tester in verschiedenen Testmodi aus:


Es geht darum, eine bestimmte Anzahl der frischesten Zecken auf jeder Zecke zu erhalten. Nullen kommen heraus, um Himmels willen.

Ich habe es geschafft, es auf FORTS zu bekommen, aber nur einen TRADE-flow (mit einem Indikator). Ihr Expert Advisor will nicht einmal auf echten Ticks laufen...
 
Alexey Kozitsyn:
Auf FORTS gelang es mir, aber nur ein TRADE - flow (mit einem Indikator) zu bekommen. Ihr Experte will nicht einmal mit echten Zecken arbeiten...

ja, es gibt ein problem. aber wo? was genau ist das problem, das ist die frage.

Doch einmal ist ein Fehler aufgetreten.

 
Andrey Dik:

Bitte, jemand probiert diesen EA im Tester in verschiedenen Testmodi aus:


Im Wesentlichen geht es darum, eine bestimmte Anzahl der frischesten Zecken auf jeder Zecke zu erhalten.

Nun, wenn Sie die frischesten Ticks wollen, sollten Sie sie nicht von Null an nehmen, sondern von der aktuellen Zeit in Millisekunden.

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

Nun, wenn Sie frische Ticks wollen, sollten Sie sie nicht von Null, sondern von der aktuellen Zeit in Millisekunden nehmen.

Die Hilfe sagt:

von

[in] Datum, ab dem die Häkchen angefordert werden. Angegeben in Millisekunden ab dem 01.01.1970. Wenn from=0, wird die letzte Anzahl von Ticks angegeben .

 

Ich speichere die mq5-Datei in Metaeditor, aber die alte Version wird gespeichert (Zeit variiert). In diesem Fall entspricht ex5 bei der Kompilierung dem, was ich in ME sehe. Aber wenn ich ME schließe, gehen alle Daten in der Datei verloren.

Ich versuche, sie unter einem anderen Namen zu speichern - die Datei wird erstellt, aber es gibt einen alten Quelltext - nicht den, den ich in ME sehe. Auf dem Laufwerk ist definitiv noch Platz.

 
Kommentare, die für dieses Thema nicht relevant sind, wurden nach "Warum der EA nicht funktioniert" verschoben.