Скачать MetaTrader 5

MetaEditor build 1476

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужен торговый робот? Закажи его в сервисе Фриланс!
Vladimir Karputov
Модератор
46109
Vladimir Karputov 2016.11.24 09:12 
2016.11.24 10:15:00.776 Terminal        MetaTrader 5 x64 build 1476 started (MetaQuotes Software Corp.)
2016.11.24 10:15:00.777 Terminal        Windows 10 Pro (x64 based PC), IE 11.00, UAC, Intel Core i3-3120M  @ 2.50GHz, RAM: 3868 / 8077 Mb, HDD: 385284 / 476372 Mb, GMT+02:00
2016.11.24 10:15:00.777 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

При запуске тестирования, режим "Отладка на истории", режим генерации тиков "Каждый тик на основе реальных тиков":

  • в OnInit() цены получаем сразу и с первого раза
  • в OnTick() цены Bid и Ask равны нулю  - примерно первые пять-десять запусков.
Проверочный эксперт:

//+------------------------------------------------------------------+
//|                                                 RefreshRates.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Trade\SymbolInfo.mqh>  
//--- global variable
CSymbolInfo    m_symbol;                     // symbol info object
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(!RefreshRates())
     {
      Print(__FUNCTION__,", Error RefreshRates. Bid=",DoubleToString(m_symbol.Bid(),Digits()),
            ", Ask=",DoubleToString(m_symbol.Ask(),Digits()));
      return(INIT_FAILED);
     }
   else
     {
      Print(__FUNCTION__,", There are no mistakes. Bid=",DoubleToString(m_symbol.Bid(),Digits()),
            ", Ask=",DoubleToString(m_symbol.Ask(),Digits()));
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- limit the number of runs
   static long count=0;
   count++;
   if(count>21)
      return;
//---
   if(!RefreshRates())
     {
      Print(__FUNCTION__,", Error RefreshRates. Bid=",DoubleToString(m_symbol.Bid(),Digits()),
            ", Ask=",DoubleToString(m_symbol.Ask(),Digits()));
      return;
     }
   else
     {
      Print(__FUNCTION__,", There are no mistakes. Bid=",DoubleToString(m_symbol.Bid(),Digits()),
            ", Ask=",DoubleToString(m_symbol.Ask(),Digits()));
     }
  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates()
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
      return(false);
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+


Журнал тестера, в режиме "Каждый тик на основе реальных тиков":

O       0       10:09:03.777    RefreshRates (EURUSD,M1)        2016.11.23 00:00:00   OnInit, There are no mistakes. Bid=1.06243, Ask=1.06258
HS      3       10:09:03.888    Ticks   EURUSD : real ticks begin from 2015.06.15 00:00:00
HO      0       10:09:03.915    RefreshRates (EURUSD,M1)        2016.11.23 00:00:19   OnTick, Error RefreshRates. Bid=0.00000, Ask=0.00000
KI      0       10:09:04.211    RefreshRates (EURUSD,M1)        2016.11.23 00:00:21   OnTick, Error RefreshRates. Bid=0.00000, Ask=0.00000
OJ      0       10:09:04.532    RefreshRates (EURUSD,M1)        2016.11.23 00:00:21   OnTick, Error RefreshRates. Bid=0.00000, Ask=0.00000
CK      0       10:09:04.853    RefreshRates (EURUSD,M1)        2016.11.23 00:00:21   OnTick, Error RefreshRates. Bid=0.00000, Ask=0.00000
JD      0       10:09:05.174    RefreshRates (EURUSD,M1)        2016.11.23 00:00:29   OnTick, Error RefreshRates. Bid=0.00000, Ask=0.00000
OE      0       10:09:05.494    RefreshRates (EURUSD,M1)        2016.11.23 00:00:36   OnTick, Error RefreshRates. Bid=0.00000, Ask=0.00000
LF      0       10:09:05.816    RefreshRates (EURUSD,M1)        2016.11.23 00:00:37   OnTick, Error RefreshRates. Bid=0.00000, Ask=0.00000
IG      0       10:09:06.137    RefreshRates (EURUSD,M1)        2016.11.23 00:00:40   OnTick, Error RefreshRates. Bid=0.00000, Ask=0.00000

KO      0       10:09:06.458    RefreshRates (EURUSD,M1)        2016.11.23 00:00:57   OnTick, There are no mistakes. Bid=1.06227, Ask=1.06295
NN      0       10:09:06.779    RefreshRates (EURUSD,M1)        2016.11.23 00:02:07   OnTick, There are no mistakes. Bid=1.06227, Ask=1.06295
RM      0       10:09:07.100    RefreshRates (EURUSD,M1)        2016.11.23 00:02:07   OnTick, There are no mistakes. Bid=1.06227, Ask=1.06285
EL      0       10:09:07.421    RefreshRates (EURUSD,M1)        2016.11.23 00:02:08   OnTick, There are no mistakes. Bid=1.06227, Ask=1.06285
GL      0       10:09:07.741    RefreshRates (EURUSD,M1)        2016.11.23 00:02:08   OnTick, There are no mistakes. Bid=1.06228, Ask=1.06285
GS      0       10:09:08.062    RefreshRates (EURUSD,M1)        2016.11.23 00:02:27   OnTick, There are no mistakes. Bid=1.06228, Ask=1.06285
MR      0       10:09:08.382    RefreshRates (EURUSD,M1)        2016.11.23 00:02:27   OnTick, There are no mistakes. Bid=1.06228, Ask=1.06275
OQ      0       10:09:08.703    RefreshRates (EURUSD,M1)        2016.11.23 00:02:28   OnTick, There are no mistakes. Bid=1.06228, Ask=1.06275
HQ      0       10:09:09.023    RefreshRates (EURUSD,M1)        2016.11.23 00:02:28   OnTick, There are no mistakes. Bid=1.06229, Ask=1.06275
HP      0       10:09:09.343    RefreshRates (EURUSD,M1)        2016.11.23 00:02:29   OnTick, There are no mistakes. Bid=1.06229, Ask=1.06275
MG      0       10:09:09.664    RefreshRates (EURUSD,M1)        2016.11.23 00:02:29   OnTick, There are no mistakes. Bid=1.06229, Ask=1.06276
DF      0       10:09:09.985    RefreshRates (EURUSD,M1)        2016.11.23 00:02:37   OnTick, There are no mistakes. Bid=1.06229, Ask=1.06276
GF      0       10:09:10.305    RefreshRates (EURUSD,M1)        2016.11.23 00:02:37   OnTick, There are no mistakes. Bid=1.06229, Ask=1.06275

Видно, что в OnInit() ошибок нет, а в OnTick() первые несколько запусков возвращают в ценах нули.

Файлы:
Vitalii Manolaki
410
Vitalii Manolaki 2016.11.24 10:45  
Спасибо автору .Очень познавательно.
Igor Volodin
3797
Igor Volodin 2016.11.25 11:49  

А при чем здесь MetaEditor?

У меня, в 1485 билде нет такой ошибки. Ontick сразу выдает значения

Vladimir Karputov
Модератор
46109
Vladimir Karputov 2016.11.25 12:10  
Igor Volodin:

А при чем здесь MetaEditor?

У меня, в 1485 билде нет такой ошибки. Ontick сразу выдает значения

Вы проверяете в режиме "Каждый тик на основе реальных тиков"? Я ведь указал, что только для этого режима существует проблема выдачи нулевых цен в тестере при отладке на истории.
Igor Volodin
3797
Igor Volodin 2016.11.25 12:48  

Именно так:

  

Vladimir Karputov
Модератор
46109
Vladimir Karputov 2016.11.25 12:53  
Igor Volodin:

Именно так:

  

Обновился. Всё равно в режиме каждый тик на основе реальных тиков один раз в OnTick() (самый первый тик) проскакивают нули.
Igor Volodin
3797
Igor Volodin 2016.11.25 13:09  
Да нехорошая ситуация. Но если так происходит в самом начале, в принципе это можно блокировать. Может проблема с тиковой историей?
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий