Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1159

 
Vladimir Karputov:
Вы уверены что биржа работает по запрашиваемому символу ночью? 

Дак я не заставляю терминал посылать мне тики в строго определенное время которых у него нет, я просто отправляю запрос:

from=0,                // дата, начиная с которой запрашиваются тики

count=0                // количество тиков, которые необходимо получить

А он сам мне отправляет историю разве нет?

 
VANDER:

Дак я не заставляю терминал посылать мне тики в строго определенное время которых у него нет, я просто отправляю запрос:

from=0,                // дата, начиная с которой запрашиваются тики

count=0                // количество тиков, которые необходимо получить

А он сам мне отправляет историю разве нет?

Если по запрашиваемому символу торги закрыты (например ночь на дворе) - откуда по запрашиваемому символу возьмутся тики?
 

Проверил, для основного символа RTS-12.19 на котором запущен эксперт последний тик был в 23:59:30 а у SBRF-12.19 в 23:52:21 поэтому чтоли он не мог загрузить тики?

И как интересно функция SymbolInfoTick помогает ему одуплиться? 

 
VANDER:

Проверил, для основного символа RTS-12.19 на котором запущен эксперт последний тик был в 23:59:30 а у SBRF-12.19 в 23:52:21 поэтому чтоли он не мог загрузить тики?

И как интересно функция SymbolInfoTick помогает ему одуплиться? 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.12.08 13:20

Если по запрашиваемому символу торги закрыты (например ночь на дворе) - откуда по запрашиваемому символу возьмутся тики?

 
VANDER:

Проверил, для основного символа RTS-12.19 на котором запущен эксперт последний тик был в 23:59:30 а у SBRF-12.19 в 23:52:21 поэтому чтоли он не мог загрузить тики?

И как интересно функция SymbolInfoTick помогает ему одуплиться? 

Вот советник:

//+------------------------------------------------------------------+
//|                                                  CopyTicks_1.mq5 |
//|                              Copyright © 2015, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.100"
#property description "Сравнение трёх режимов получения тиков"
//--- input parameters
input string   name  = "RTSSiZ9";      // символ по которому запрашиваем тики
input int      ticks = 3000;           // количество запрашиваемых тиков
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
  SymbolSelect(name,true);
//--- succeed
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- массив для приема тиков
   MqlTick ExTicks[];
//--- запросим тики
   ResetLastError();
   int copied=CopyTicks(name,ExTicks,COPY_TICKS_ALL,0,ticks);
//--- если тики получены, то выведем на график значения Bid и Ask
   Print("Получено тиков: ",copied," код ошибки: ",GetLastError());
   if(copied>1)
     {
      Print("Тик: ",ExTicks[0].time," bid: ",ExTicks[0].bid," ask: ",ExTicks[0].ask," last: ",ExTicks[0].last," [0]");
      Print("Тик: ",ExTicks[copied-1].time," bid: ",ExTicks[copied-1].bid," ask: ",ExTicks[copied-1].ask," last: ",ExTicks[copied-1].last," [",copied-1,"]");
     }
  }
//+------------------------------------------------------------------+

Запускаю на RTSSRZ9 (это SBRF-Dec19) - вот настройки:


запрашиваю тики в RTSSiZ9 (это Si-Dec19).

Результат:

2019.08.30 07:00:00   Получено тиков: -1 код ошибки: 4004
2019.08.30 07:00:01   Получено тиков: 2 код ошибки: 0
2019.08.30 07:00:01   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]
2019.08.30 07:00:01   Тик: 2019.08.30 07:00:01 bid: 22552.0 ask: 22697.0 last: 0.0 [1]
2019.08.30 07:00:02   Получено тиков: 3 код ошибки: 0
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:02 bid: 22425.0 ask: 22856.0 last: 0.0 [2]
2019.08.30 07:00:02   Получено тиков: 4 код ошибки: 0
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]

и так далее ...


То есть  на реальном сервере всё работает. Если у Вас не работает: 1. Работайте на реальном, а не демо-сервере, 2. Проверьте свой код.

Файлы:
 

Счет более чем реальный, я на нем торгую. Воспользовался Вашим кодом, даже настройки все точь в точь поставил и Вы таки будете смеяться, привожу полный лог:


2019.12.08 21:08:38.787 MetaTester 5 started on 127.0.0.1:3000
2019.12.08 21:08:38.790 initialization finished
2019.12.08 21:08:39.088 login (build 2265)
2019.12.08 21:08:39.120 4372 bytes of account info loaded
2019.12.08 21:08:39.120 1482 bytes of tester parameters loaded
2019.12.08 21:08:39.120 1212 bytes of input parameters loaded
2019.12.08 21:08:39.138 29043 bytes of symbols list loaded
2019.12.08 21:08:39.138 expert file added: Experts\CopyTicks_1.ex5. 16437 bytes loaded
2019.12.08 21:08:39.152 6116 Mb available, 76 blocks set for ticks generating
2019.12.08 21:08:39.152 initial deposit 10000.00 USD, leverage 1:100
2019.12.08 21:08:39.153 successfully initialized
2019.12.08 21:08:39.153 37 Kb of total initialization data received
2019.12.08 21:08:39.153 Intel Core i5-3450  @ 3.10GHz, 8157 MB
2019.12.08 21:08:39.198 RTS-12.19: symbol to be synchronized
2019.12.08 21:08:39.199 RTS-12.19: symbol synchronized, 4120 bytes of symbol info received
2019.12.08 21:08:39.199 RTS-12.19: history synchronization started
2019.12.08 21:08:39.201 RTS-12.19: load 33 bytes of history data to synchronize in 0:00:00.000
2019.12.08 21:08:39.201 RTS-12.19: history synchronized from 2018.01.12 to 2019.12.06
2019.12.08 21:08:39.201 RTS-12.19: ticks synchronization started
2019.12.08 21:08:39.202 RTS-12.19: load 40 bytes of tick data to synchronize in 0:00:00.000
2019.12.08 21:08:39.202 RTS-12.19: history ticks synchronized from 2019.01.03 to 2019.12.05
2019.12.08 21:08:39.205 RTS-12.19,H1: history cache allocated for 2480 bars and contains 971 bars from 2018.01.12 13:00 to 2019.08.29 23:00
2019.12.08 21:08:39.205 RTS-12.19,H1: history begins from 2018.01.12 13:00
2019.12.08 21:08:39.207 RTS-12.19,H1 (Open-Broker): generating based on real ticks
2019.12.08 21:08:39.207 RTS-12.19,H1: testing of Experts\CopyTicks_1.ex5 from 2019.08.30 00:00 to 2019.11.26 00:00 started with inputs:
2019.12.08 21:08:39.207   name=SBRF-12.19
2019.12.08 21:08:39.207   ticks=3000
2019.12.08 21:08:39.263 SBRF-12.19: symbol to be synchronized
2019.12.08 21:08:39.263 SBRF-12.19: symbol synchronized, 4120 bytes of symbol info received
2019.12.08 21:08:40.615 RTS-12.19 : real ticks begin from 2019.01.03 00:00:00
2019.12.08 21:08:55.958 2019.08.30 00:03:46   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:56.877 2019.08.30 00:03:46   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:57.764 2019.08.30 09:52:14   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:58.739 2019.08.30 10:00:01   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:59.784 2019.08.30 10:00:01   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:04.628 2019.08.30 10:00:03   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:05.579 2019.08.30 10:00:04   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:06.596 2019.08.30 10:00:06   Получено тиков: -1 код ошибки: 4401

Единственная разница у меня стартует он ночью, но потом то даже утром то-же самое..

 
VANDER:

Счет более чем реальный, я на нем торгую. Воспользовался Вашим кодом, даже настройки все точь в точь поставил и Вы таки будете смеяться, привожу полный лог:


Единственная разница у меня стартует он ночью, но потом то даже утром то-же самое..

ERR_HISTORY_NOT_FOUND

4401

Requested history not found

С какой даты и по какую торгуется инструмент SBRF-12.19? Эти даты попадают в интервал 2019.08.30-2019.11.26?

 
Vladimir Karputov:

ERR_HISTORY_NOT_FOUND

4401

Requested history not found

С какой даты и по какую торгуется инструмент SBRF-12.19? Эти даты попадают в интервал 2019.08.30-2019.11.26?

Да попадают, это происходит на любых датах


Ладно забейте, для себя я нашел выход, перед этим использовать функцию

SymbolInfoTick(необходимый символ)

Тогда CopyTicks() начинает с ним работать, может Открывашка глючит на других брокерах не проверял, может кому пригодится.

 
VANDER:

Да попадают, это происходит на любых датах


Ладно забейте, для себя я нашел выход, перед этим использовать функцию

Тогда CopyTicks() начинает с ним работать, может Открывашка глючит на других брокерах не проверял, может кому пригодится.

Явно зависит от торгового сервера - у меня то всё работало.
Может они там по десять лет не обновляют свою серверную часть.
 
fxsaber :

What prevents to fix the code so that there are no warnings?

Когда у вас есть 600 предупреждений, нужно найти строки с ошибками (на самом деле у меня больше, если я включаю строгий режим)

И почти все предупреждения бесполезны. Потому что многие из них о скрытых переменных или преобразованиях типов. Возможно, некоторые люди думают, что вы можете ошибиться с этим, но это не часто встречается у опытных программистов.

Mt4 оправдывался для новичков. Но текущий язык mql5 достаточно сложен, чтобы иметь цель для начинающих программистов. А опытным программистам не нужно 600 строк о чем-то, что явно сделано по какой-то причине


Очевидно, это мое субъективное мнение, но другие языки позволяют решить, насколько многословный уровень вы хотите