Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 149

 
fxsaber:

Новый бар появляется по таймеру. К сожалению, в этот момент open[rates_total - 1] != close[rates_total - 2].

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

Запустив мой код для воспроизведения в визуальном режиме, вы явно увидите, что OnCalculete вызван по тику в начале нового бара, все котировки в OnCalculete свежие с нового бара, а время возвращается с прошлого.

 
fxsaber:

Новый бар появляется по таймеру. К сожалению, в этот момент open[rates_total - 1] != close[rates_total - 2]. Отсюда получается почти заглядывание в будущее.

Не совсем так. По таймеру появляется тик начала бара в режиме "Все тики", что порождает Calculate-событие в этом время.

Вроде, так. Тогда, действительно, время должно обновиться.


ЗЫ Попробовал тестерный грааль на реальных тиках

Индикатор

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots indicator_buffers

double Buffer[];
const bool Init = SetIndexBuffer(0, Buffer);

int OnCalculate( const int rates_total, const int prev_calculated, const int, const double& price[] )
{
  if (rates_total > prev_calculated)
    Buffer[rates_total - 1] = price[rates_total - 1];
      
  return(rates_total);
}


Советник

#include <MT4Orders.mqh>

const bool Init = EventSetTimer(PeriodSeconds(PERIOD_M1));

// Возвращает следующий Bid
double GetNextBid()
{
  static const int Handle = iCustom(_Symbol, PERIOD_M1, "GraalIndicator", PRICE_OPEN);

  double Bid[] = {0};
  
  CopyBuffer(Handle, 0, 0, 1, Bid);
  
  return(Bid[0]);  
}

void OnTimer()
{ 
  const double Bid = GetNextBid();
  const double Ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
  
  if (Bid > Ask)
    OrderSend(_Symbol, OP_BUY, 0.1, Ask, 0, 0, Bid);
}


Не вышло - нет заглядывания в будущее.


ЗЗЫ TimeCurrent в начале теста равен началу интервала тестирования - правильно. Т.к. прошла сделка пополнения баланса с этим временем - время сервера обновилось.

 
fxsaber:

Не совсем так. По таймеру появляется тик начала бара в режиме "Все тики", что порождает Calculate-событие в этом время.

Вроде, так. Тогда, действительно, время должно обновиться.

Да, это похоже на истину.

 
Кастомные бары пишутся медленнее тиков
Saved ticks = 28304616 (2401817 ticks/sec)

Saved Rates = 355346 (915288 rates/sec)
 
Возможно ли в записи Оптимизатора
2019.02.11 00:10:43.900 Core 6  pass 1788 returned result 9227.00 in 0:00:03.580
добавить соответствующие значения входных параметров?
 

Версия 1983.

datetime больше нельзя задать в таком виде D'0:00'.

Идет warning invalid date.

Заменяешь на D'1970.01.01 0:00'. Все компилируется без предупреждений.

 
pivomoe:

Версия 1983.

datetime больше нельзя задать в таком виде D'0:00'.

Идет warning invalid date.

Заменяешь на D'1970.01.01 0:00'. Все компилируется без предупреждений.

Да, мы исключили вольную работу с датами.

 
Renat Fatkhullin:

Да, мы исключили вольную работу с датами.

Не очень логично теперь задавать интервал суток торговли. Раньше можно было написать, торгуй с D'12:45'.

 

После обновления на 1984 MT5 не запускается. Что предоставить, чтобы починить?

Все последние записи в журнале

IS      0       17:40:12.179    Terminal        exit with code 0
MR      0       17:40:12.309    Network 'xxxx': disconnected from MetaQuotes-Beta
KJ      0       17:40:13.875    Terminal        stopped
IN      0       17:40:14.902    LiveUpdate      updating...
GF      0       17:40:15.469    LiveUpdate      'C:\Program Files\ICMarkets - MetaTrader 5\terminal64.exe' updated
ES      0       17:40:16.235    LiveUpdate      'C:\Program Files\ICMarkets - MetaTrader 5\metaeditor64.exe' updated
PO      0       17:40:19.097    LiveUpdate      'C:\Program Files\ICMarkets - MetaTrader 5\metatester64.exe' updated
CJ      0       17:40:19.127    LiveUpdate      updated successfully
RS      0       17:40:19.995    Terminal        update C:\Program Files\ICMarkets - MetaTrader 5\MQL5 folder started
DP      0       17:40:20.231    Terminal        update C:\Program Files\ICMarkets - MetaTrader 5\MQL5 folder finished
LK      0       17:40:20.351    Terminal        ICMarkets - MetaTrader 5 x64 build 1983 started (International Capital Markets Pty Ltd.)
MK      0       17:40:20.351    Terminal        Windows 7 Service Pack 1 (build 7601) x64, IE 11, Intel Core i7-2700K  @ 3.50GHz, Memory: 6186 / 16301 Mb, Disk: 9 / 29 Gb, GMT+2
GG      0       17:40:20.351    Terminal        C:\Program Files\ICMarkets - MetaTrader 5
JK      0       17:40:20.381    HistoryCenter   delete old files from C:\Program Files\ICMarkets - MetaTrader 5\bases\MetaQuotes-Beta\history\EOSUSDT-03.19, last access time 2018.12.10 05:03
NF      0       17:40:21.739    Network 'xxxx': authorized on MetaQuotes-Beta through MetaTrader 5 Access Server (ping: 61.30 ms)
QJ      0       17:40:21.739    Network 'xxxx': previous successful authorization performed from xxx.xxx.xxx.xxx on 2019.02.10 02:19:45
LG      0       17:40:21.819    Network 'xxxx': terminal synchronized with MetaQuotes Software Corp.
MP      0       17:40:21.819    Network 'xxxx': trading has been enabled - hedging mode
JH      1       17:41:10.975    Network 'xxxx': connection to MetaQuotes-Beta lost
PH      0       17:42:19.282    Network 'xxxx': authorized on MetaQuotes-Beta through MetaTrader 5 Access Server (ping: 61.30 ms)
GQ      0       17:42:19.282    Network 'xxxx': previous successful authorization performed from xxx.xxx.xxx.xxx on 2019.02.11 17:40:22
PR      0       17:42:19.362    Network 'xxxx': terminal synchronized with MetaQuotes Software Corp.
QO      0       17:42:19.362    Network 'xxxx': trading has been enabled - hedging mode
QG      0       17:42:19.552    Network 'xxxx': scanning network for access points
CQ      0       17:42:19.992    Network 'xxxx': scanning network finished
LE      1       17:42:20.162    Network 'xxxx': connection to MetaQuotes-Beta lost
HM      0       17:42:33.286    LiveUpdate      new version build 1984 (IDE: 1984, Tester: 1984) is available
GD      0       17:42:33.493    Network 'xxxx': authorized on MetaQuotes-Beta through MetaTrader 5 Access Server
GE      0       17:42:33.493    Network 'xxxx': previous successful authorization performed from xxx.xxx.xxx.xxx on 2019.02.11 17:42:20
IF      0       17:42:33.583    Network 'xxxx': terminal synchronized with MetaQuotes Software Corp.
HS      0       17:42:33.583    Network 'xxxx': trading has been enabled - hedging mode
GK      0       17:42:34.302    Network 'xxxx': scanning network for access points
GM      0       17:42:35.116    Network 'xxxx': scanning network finished
KK      0       17:43:12.123    LiveUpdate      'mt5clw64' downloaded (20315 kb)
EM      0       17:43:47.652    LiveUpdate      'mt5clwide64' downloaded (18911 kb)
MG      0       17:44:05.596    LiveUpdate      'mt5clwtst64' downloaded (9532 kb)
MM      0       17:44:05.793    LiveUpdate      downloaded successfully
HD      0       17:44:39.427    Terminal        exit with code 0
OO      0       17:44:39.427    Network 'xxxx': disconnected from MetaQuotes-Beta
QI      0       17:44:40.925    Terminal        stopped
ES      0       17:44:41.957    LiveUpdate      updating...
RQ      0       17:44:42.565    LiveUpdate      'C:\Program Files\ICMarkets - MetaTrader 5\terminal64.exe' updated
GL      0       17:44:42.997    LiveUpdate      'C:\Program Files\ICMarkets - MetaTrader 5\metaeditor64.exe' updated
KH      0       17:44:44.304    LiveUpdate      'C:\Program Files\ICMarkets - MetaTrader 5\metatester64.exe' updated
NG      0       17:44:44.344    LiveUpdate      updated successfully
MN      0       17:44:45.085    Terminal        update C:\Program Files\ICMarkets - MetaTrader 5\MQL5 folder started
FE      0       17:44:45.353    Terminal        update C:\Program Files\ICMarkets - MetaTrader 5\MQL5 folder finished
 
Renat Fatkhullin:

Ренат, в связи с добавлением кастомных стаканов обратите, пожалуйста, внимание на мой пост.

Причина обращения: