Эмуляция нового тика в MetaTrader5 - страница 2

 

Здесь привязка к чарту.

 
. ... Rick D. ... .:

Да все просто. Например трейдер изменил параметры индикатора. Индикатор дал dll команду начать вычисления. Пусть из Oninit. По завершении вычислений dll эмулирует тик, индикатор попадает в OnCalculate и начинает отрисовку.

так если трейдер изменил параметры, значит мы знаем, что нужно пересчитать всё заново - значит делаем дополнительный запрос iCustom через х-секунд

 
. ... Rick D. ... .:

Параллельно вопрос. Есть ли способ узнать из MQL, индикатор запущен через iCustom или наброшен на чарт автономно?

создаете, в индикаторе, пустой стринговый параметр, например:

input string   comm1=""; //-     -   -- ---- ZigZag ---- --   -     -

в нормальных условиях, ни один пользователь не будет его изменять, а через iCustom можно передавать туда что-то нужное

 
Taras Slobodyanik:

так если трейдер изменил параметры, значит мы знаем, что нужно пересчитать всё заново - значит делаем дополнительный запрос iCustom через х-секунд

В идеале мы в OnInit эксперта получаем handle индикатора и в теле эксперта вызываем CopyBuffers. Как вы советуете делать дополнительный запрос iCustom через х-секунд ?

 
. ... Rick D. ... .:

В идеале мы в OnInit эксперта получаем handle индикатора и в теле эксперта вызываем CopyBuffers. Как вы советуете делать дополнительный запрос iCustom через х-секунд ?

Да, в МТ5 нужно будет пересоздавать хэндлы. 
То есть создавать/удалять индикатор в таймере по флагу-запросу.

 

Проверил в эксперте такой код:

int OnInit()
{ 
  string ind_name = "i-TestInd";
  int hInd = iCustom(Symbol(), PERIOD_CURRENT, ind_name);

  EventSetTimer(3);

  return (INIT_SUCCEEDED);
}

void OnTimer()
{
  ChartSetSymbolPeriod(0, ChartSymbol(), ChartPeriod()); 
}

Да, OnCalculate индикатора вызывается по таймеру синхронно. Из недостатков - чарт слегка мелькает.

 
Кто-нибудь знает способ. как убрать с чарта мелькание при вызове ChartSetSymbolPeriod? :)
 
У меня не мерцает.
 
Dmitry Fedoseev:
У меня не мерцает.

У меня цены в верхнем левом углу чарта мерцают. Остальное вроде не мерцает.

Но все равно я доволен. ))
 
. ... Rick D. ... .:

Нужно ускорить работу эсперта на чарте из dll, сненерировав новый тик.

В MetaTrader4 работал такой код:

В MetaTrader5 попробовал по аналогии. Не работает.

Может кто сумел найти способ?

Если это форекс, то иногда можно заставить сервер брокера сгенерировать тик выставив и удалив отложенный ордер. Произойдет изменение тиковых объёмов - соответственно сгенерируется тик.
Причина обращения: