Библиотеки: HistoryTicks - страница 3

 
Не заметил, что в КБ версия старая. К сожалению, обновить не получается. Автомат КБ выдает такое
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
В ME все компилируется без ошибок.
 
fxsaber:
Не заметил, что в КБ версия старая. К сожалению, обновить не получается.

Обновлена на версию, которая за месяцы ни разу не подвела.

 
Инструментарий может пригодиться на MT5 из-за такой особенности.

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

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2020.03.16 13:02

На некоторых торговых серверах могут находиться сразу несколько типов счетов. Например, ECN и стандартный. При этом символы могут не иметь префиксов, т.е. названия совпадают.

В этом случае баровая история (включая текущие значение bid/ask/last на чарте) и тиковая история соответствуют всегда только одному типу счета.

А данные из Обзора рынка - тому, к кому подключен.


Из-за этого легко наблюдать, что Обзор рынка полностью не соответствует чартам и тиковой истории.


CopyTicks бессилен. Однако, если маркап на каждую из цен свой, но константа. То можно демаркапить тиковую историю. Тогда CopyTicks заменит HistoryTicks.

// Скрипт показывает маркап тиковой истории.
const MqlTick GetMarketWatchTick()
{
  MqlTick Tick = {0};
  
  SymbolInfoTick(_Symbol, Tick);
  
  return(Tick);
}

const MqlTick GetLastHistoryTick()
{
  MqlTick Tick[1];
  
  CopyTicks(_Symbol, Tick, COPY_TICKS_ALL, 0, 1);
  
  return(Tick[0]);
}

int PriceToInteger( const double Price )
{
  return((int)(Price / _Point + 0.1));
}

int DiffPrice( const double Price1, const double Price2 )
{
  return(PriceToInteger(Price1) - PriceToInteger(Price2));
}

void OnTick()
{
  const MqlTick Tick1 = GetMarketWatchTick();
  const MqlTick Tick2 = GetLastHistoryTick();
  
  if (Tick1.time_msc == Tick2.time_msc)
    Print((string)DiffPrice(Tick1.bid, Tick2.bid) + ", " + (string)DiffPrice(Tick2.ask, Tick1.ask));
}
 
fxsaber:
Если нужно, чтобы исторические тики в советнике не съедали драгоценную VPS-память, можно делать на каждом тике

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


Ещё в коде вижу подкачку тиков с веб-морды раннфорекс. Эта часть была раньше и сейчас не работает или можно тоже использовать?

 
traveller00:

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

Да.

Ещё в коде вижу подкачку тиков с веб-морды раннфорекс. Эта часть была раньше и сейчас не работает или можно тоже использовать?

Эта часть не использовалась, т.к. в индикаторах запрещена WebRequest.

 
fxsaber:

Эта часть не использовалась, т.к. в индикаторах запрещена WebRequest.

А вообще эта часть юзабельная для тиковых данных? Ибо по линку, который он использует, можно слить данные таймфреймов только. А для тиковых похоже только архив, с которым ThirdPartyTicks работает. Или через эту веб-морду и тиковые можно?

 
traveller00:

А вообще эта часть юзабельная для тиковых данных?

Да. Но проще в MT5.

 

Обновлен в целом инструментарий. Результат ускорений на VPS, неочевидные названия символов и т.д.

И, в частности, обновлена кроссплатформенная библиотека ArrayResize из-за недавних изменений в MT5.

 

В МТ4 индикатор моментально выгружается с сообщением global inizialization failed.

Что не так?

 
EvPaul:

В МТ4 индикатор моментально выгружается с сообщением global inizialization failed.

Что не так?

Видимо, в этом причина.

Новая версия платформы MetaTrader 4 build 1340
Новая версия платформы MetaTrader 4 build 1340
  • 2021.07.26
  • www.mql5.com
В пятницу 23 июля 2021 года будет выпущено обновление MetaTrader 4. В нем исправлен ряд ошибок и повышена стабильность работы платформы...
Причина обращения: