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

 
barabashkakvn:
Все расчеты производятся в OnCalculate (то естб событие появления нового бара определяется здесь)
Спасибо, посмотрю. Может я чего недопонимаю, но нет вроде в пятерке возможности указать индекс буфера для получения значения пользовательского индикатора.
 
forexman77:
Спасибо, посмотрю. Может я чего недопонимаю, но нет вроде в пятерке возможности указать индекс буфера для получения значения пользовательского индикатора.
iCustom выдает хендл пользовательского индикатора. Затем CopyBuffer в которой второй параметр как раз и есть номер буфера.
 
Подскажите пожалуйста- есть какая-либо функция которая полностью останавливает оптимизацию эксперта ,а не отдельный  проход оптимизации ?
 
barabashkakvn:
iCustom выдает хендл пользовательского индикатора. Затем CopyBuffer в которой второй параметр как раз и есть номер буфера.

Скажите, в скрипте можно получить значение индикатора?

Попробовал так:

input int MA_Period=21;
input int MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMA;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
double MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",
                     MA_Period,
                     MA_Shift,
                     MA_Method,
                     PRICE_CLOSE // считаем по ценам закрытия
                     );  
Alert("MA_handle=",MA_handle);
  }

Получаю значение на любых индикаторах 10. 

Попробовал еще так (выходит ошибка 4807):

input int MA_Period=21;
input int MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMA;
int MA_handle;
double ma1Val[]; 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

//--- массив значений индикатора MA
   ArraySetAsSeries(ma1Val,true);
//--- копируем значения индикаторов из индикаторных буферов
   if(CopyBuffer(MA_handle,0,0,3,ma1Val)<0)
     {
      Alert("Ошибка копирования буферов индикатора Moving Average - номер ошибки:",GetLastError(),"!!");
      return;
     }
MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",
                     MA_Period,
                     MA_Shift,
                     MA_Method,
                     PRICE_CLOSE // считаем по ценам закрытия
                     );  
Alert("ma1Val[0]=",ma1Val[0]);
  }
 
forexman77:
barabashkakvn:
iCustom выдает хендл пользовательского индикатора. Затем CopyBuffer в которой второй параметр как раз и есть номер буфера.

Скажите, в скрипте можно получить значение индикатора?

Попробовал так:

Получаю значение на любых индикаторах 10. 

Попробовал еще так (выходит ошибка 4807):

1.Прочитать справку по iCustom.
2. Порядок получения значения буфера индикатора: получить хендл индикатора, а затем по этому хендлу, с помощью CopyBuffer, копировать нужный буфер индикатора.
 
barabashkakvn:
1.Прочитать справку по iCustom.
2. Порядок получения значения буфера индикатора: получить хендл индикатора, а затем по этому хендлу, с помощью CopyBuffer, копировать нужный буфер индикатора.
Понятно буду изучать. Про скрипт спросил, потому что в нем нет "OnInit", а в нем хендл получают. Получается в скрипте запрашиваем хендл перед  "OnStart"?
 
forexman77:
Понятно буду изучать. Про скрипт спросил, потому что в нем нет "OnInit", а в нем хендл получают. Получается в скрипте запрашиваем хендл перед  "OnStart"?
OnInit есть в экспертах и индикаторах.
 
barabashkakvn:
OnInit есть в экспертах и индикаторах.
Все получилось! Спасибо!!
 
forexman77:
Все получилось! Спасибо!!
Пожалуйста.
 
Fleder:
Продукты в Маркете имеют от 5 до 20 активаций (на усмотрение продавца). Если Вы не израсходовали свои попытки на активацию - то можете не переживать, лишнее  бабло не снимут.
Спасибо за ответ, буду жать кнопку купить. Других-то нет :-)
Причина обращения: