Изучаем и пишем вместе на MQL5 - страница 40

 
Индикатор попадает в общий независимый процесс пересчета индикаторов, который работает параллельно экспертам.
 
Dimka-novitsek: ... а что заставит хендл индикатора перерисовываться с приходом новых тиков или хотя бы баров, если он создается в он инит?

Перерисовывается не хендл индикатора, а графические построения самого индикатора. Хендл - это просто некое целочисленное значение.

Dimka-novitsek:
Как-то нереально получается, если писать в инит!

По-простому попробую обьяснить. Запустить индикатор можно двумя способами: вручную и программно. В обоих случаях терминал создаёт и поддерживает одни и те же вычислительные процессы. При программном запуске, так же как и при ручном, достаточно запустить индикатор один раз - дальше всё будет вычисляться в соответствии с кодом. Для программного запуска индикатора используется функция iCustom() и ей аналогичные. Т.е., стоит один раз удачно запустить функцию iCustom() с правильным набором параметров, - и соответствующие вычислительные процессы заработают также, как и при ручном запуске.

При этом программно может быть запущено сразу несколько индикаторов. Хендл - это всего лишь некий идентификатор, позволяющий обращаться к определённому вычислительному процессу. С помощью хендла можно копировать рассчитанные данные конкретного индикатора, запущенного программно.

Соответственно, для того, чтобы запустить индикатор программно и получить его хендл, достаточно в общем случае сделать это в OnInit(). Вы же не запускаете вручную индикатор с приходом каждого тика, чтобы он "перерисовывался".

 
Спасибо!!!!
 
Спасибо! Я в общем понял. И вот сижу и думаю, уже два часа. Ну не устраивает меня обьявление хендла в инит.  Это робот-мультивалютник, где перечислены около двадцати валютных пар. В разных местах робота происходят обращения к указанным функциям, задаются разные таймфреймы.. Обьявить в ините до рассчетов такое множество хендлов нереально, т.е. может реально, но это ахинея.. На четверке работало и шелестело!! Сижу и реально тиряюсь..
int OnInit()
  {
//---
  if(Digits() == 3 || Digits() == 5) slip=slip *10; 
  //рисовка места под дашборд   
   time1 = 0;
   initGraph();
   ArrayInitialize(avg_,1);
//---
 ATR_handle=iATR(symbol,periodd(timeframe),period);
   return(0);
  }
//+------------------------------------------------------------------+
 
Собственно,     ERR_MARKET_NOT_SELECTED 4302 Символ не выбран в MarketWatch  -разбираюсь с вопросом дальше, типо где корень проблемы-то.

Как не выбран?? Чего это не выбран? Что же такое MarketWatch? Какой вообще символ? Валютной пары? Так нет, у меня в коде валютная пара на вход функции очень хорошо подается! 
 
Я даже проверю, и кажется знаю как. Правда MarketWatch в гугле и яндексе не нашол, кроме одной строки, что в новой версии он исправлен.
 
Dimka-novitsek:
Собственно,     ERR_MARKET_NOT_SELECTED 4302 Символ не выбран в MarketWatch  -разбираюсь с вопросом дальше, типо где корень проблемы-то.

Как не выбран?? Чего это не выбран? Что же такое MarketWatch? Какой вообще символ? Валютной пары? Так нет, у меня в коде валютная пара на вход функции очень хорошо подается! 

Посмотрите функцию SymbolSelect(). MarketWatch - это окно Обзор Рынка. Перед тем, как задать вопрос попробуйте найти ответ с помощью поиска на форуме в правом верхнем углу.

P.S. Спасибо не обязательно писать через каждый пост. :) 

 

Ага. 

 

Проверил- вписал принт, вот так

 double iATRf (string symbol, int timeframe, int period, int shift  ){
  
  Print("symbol");Print(symbol); Print("timeframe");Print(timeframe); Print( "period");Print( period);Print("shift");Print(shift);  
  
    ATR_handle=iATR(symbol,periodd(timeframe),period);
   CopyBuffer(ATR_handle,0,0,100,ATR);
    ArraySetAsSeries(ATR,true); 
    return( ATR[shift]); }  

 И вы знаете, проверка показала, вроде бы, что функция принимает в себя нормальные, вменяемые параметры. Вот.   А я щас пройду по ссылкам, что бы лучше понять вопрос ! Спасибо!

 
Dimka-novitsek:
Я даже проверю, и кажется знаю как. Правда MarketWatch в гугле и яндексе не нашол, кроме одной строки, что в новой версии он исправлен.
Ну, Димон Владимирыч, ты и приколист :)
 

Спасибо!! 

 

А значит ли это, что работа с данной парой в платформе вовсе не предусмотрена? 2012.09.21 16:23:17  Не удалось создать хэндл индикатора iMA для пары CADJPY/PERIOD_D1, код ошибки 4302

Документация по MQL5: Технические индикаторы / iMA
Документация по MQL5: Технические индикаторы / iMA
  • www.mql5.com
Технические индикаторы / iMA - Документация по MQL5
Причина обращения: