错误、漏洞、问题 - 页 2010

 
Andrey Dik:
在CopyTicks测试器中返回零,这是否正常?
你是否在OHLC M1模式或开盘价 下进行测试?
 
Alexey Kozitsyn:
你是否在OHLC M1模式或开盘价 下进行测试?
不,我试过 "ticks "和 "real ticks",有时结构数组里全是零,有时是部分零。
 

请有人在测试器中以不同的测试模式 尝试这个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);
}
//——————————————————————————————————————————————————————————————————————————————


它的重点是在每一个刻度上获得指定数量的最新鲜的刻度。"零 "出来了,让人哭笑不得。

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

请有人在测试器中以不同的测试模式 尝试这个EA。


它的重点是在每一个刻度上获得指定数量的最新鲜的刻度。"零 "出来了,让人哭笑不得。


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。


它的重点是在每一个刻度上获得指定数量的最新鲜的刻度。"零 "出来了,让人哭笑不得。

我设法在FORTS上得到了它,但只是一个TRADE-flow(使用一个指标)。你的 "专家顾问 "甚至不愿意在真实的刻度上运行...
 
Alexey Kozitsyn:
在FORTS上,我成功地得到了,但只是一个TRADE - 流动(使用一个指标)。你的专家甚至不愿意在真正的蜱虫上运行...

是的,有一个问题。但问题出在哪里?

但有一次,却出现了一个错误。

 
Andrey Dik:

请有人在测试器中以不同的测试模式 尝试这个EA。


它的本质是在每一个虱子上获得指定数量的最新鲜的虱子。

好吧,如果你想要最新鲜的刻度,你不应该从零开始,而是从当前的时间(毫秒)开始。

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

好吧,如果你想要新鲜的刻度,你不应该从零开始,而应该从当前的时间(毫秒)开始

帮助说。

[in]申请刻度线的日期。从1970年1月1日起,以毫秒为单位指定。如果 from=0,则给定最后一次 计数 ticks

 

我在Metaeditor中保存mq5-文件,但它的旧版本被保存下来(时间不同)。在这种情况下,汇编中的ex5与我在ME中看到的情况是一致的。但当我关闭ME时,文件中的所有数据就会丢失。

试图用不同的名字保存它--文件被创建了,但有一个旧的源头--不是我在ME中看到的那个。驱动器上肯定有空间。

 
与本主题无关的评论已被移至"为什么EA不起作用"。