Erreurs, bugs, questions - page 2010

 
Alexey Kozitsyn:
Est-ce que vous testez, par hasard, en mode OHLC M1 ou en prix d'ouverture?
Non, j'ai essayé à la fois les "ticks" et les "ticks réels", parfois le tableau de la structure est rempli de zéros, parfois partiellement.
 

S'il vous plaît, que quelqu'un essaie cet EA dans le testeur dans différents modes de test:

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


Le but est d'obtenir un nombre déterminé des ticks les plus frais à chaque tic. Les zéros sortent, bon sang de bonsoir.

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

S'il vous plaît, que quelqu'un essaie cet EA dans le testeur dans différents modes de test:


Le but est d'obtenir un nombre déterminé des ticks les plus frais à chaque tic. Les zéros sortent, bon sang de bonsoir.


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:

S'il vous plaît, que quelqu'un essaie cet EA dans le testeur dans différents modes de test:


Le but est d'obtenir un nombre déterminé des ticks les plus frais à chaque tic. Les zéros sortent, bon sang de bonsoir.

J'ai réussi à l'obtenir sur FORTS, mais seulement un flux TRADE (en utilisant un indicateur). Votre conseiller-expert ne veut même pas fonctionner sur des ticks réels...
 
Alexey Kozitsyn:
Sur FORTS j'ai réussi à obtenir, mais seulement un TRADE - flow (en utilisant un indicateur). Votre expert ne veut même pas fonctionner avec de vrais ticks...

oui, il y a un problème. mais où ? quel est exactement le problème, telle est la question.

Mais une fois, cependant, il y a eu une erreur.

 
Andrey Dik:

S'il vous plaît, que quelqu'un essaie cet EA dans le testeur dans différents modes de test:


Il s'agit essentiellement d'obtenir un nombre déterminé des tiques les plus fraîches à chaque tique.

Eh bien, si vous voulez les ticks les plus frais, vous ne devez pas les prendre à partir de zéro, mais à partir du temps actuel en millisecondes.

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

Eh bien, si vous voulez des ticks frais, vous ne devez pas les prendre à partir de zéro, mais à partir du temps actuel en millisecondes.

L'aide dit :

de

[Date à partir de laquelle les ticks sont demandés. Spécifié en millisecondes à partir du 01.01.1970. Si from=0, le dernier compte de ticks est donné .

 

Je sauvegarde le fichier mq5 dans Metaeditor, mais son ancienne version est sauvegardée (le temps varie). Dans ce cas, ex5 à la compilation correspond à ce que je vois dans ME. Mais quand je ferme ME, toutes les données du fichier sont perdues.

J'essaie de l'enregistrer sous un autre nom - le fichier est créé, mais il y a une ancienne source - pas celle que je vois dans ME. Il y a vraiment de la place sur le disque.

 
Les commentaires non pertinents pour ce sujet ont été déplacés vers "Pourquoi l'EE ne fonctionne pas".
 
Ai-je bien compris que de tels tableaux ne peuvent pas être initialisés de manière raisonnable ?
class A {};

A* const Array[] = {NULL};

Et n'ont de sens que comme paramètres d'entrée des fonctions/méthodes ?

void f( const A* const &Array[] );