Скачать MetaTrader 5

Как использовать класс CiMA в своём советнике?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Сергей Попов
70
Сергей Попов  

Решил использовать в своем советнике стандартные классы индикаторов. Но никак не могу разобраться с классами. :(

Добавил в код такой текст: 

#include <Indicators\Trend.mqh>         //--- Объект класса CiMA
CiMA              myMA;          // Объект класса CiMA

Далее заменил текст

//--- Получить хэндл индикатора Moving Average
   maHandle=iMA(_Symbol,_Period,MA_Period,0,MODE_EMA,PRICE_CLOSE);
//--- Нужно проверить, не были ли возвращены значения Invalid Handle
   if(maHandle<0)
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
     }

на

   myMA.Create(_Symbol,PERIOD_M15,MA_period,0,MODE_EMA,PRICE_CLOSE); 
А вот дальше... Как скопировать значения индикаторных буферов в массивы, какую переменную использовать при проверке условий с использованием КЛАССОВ? Не могу розобраться. Подскажите пожалуйста как пользоваться стандартными классами индикаторов. Может есть пример на форуме?
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
Victor Kirillin
491
Victor Kirillin  

Копировать значения не нужно. Любое доступное значение индикаторного буфера можно получить при помощи метода

   double            Main(const int index) const;

Перед использованием данных буфера (допустим, на новом тике) нужно "освежить" данные, вызвав метод

   virtual void      Refresh(const int flags=OBJ_ALL_PERIODS);

Сравнивать можно прямо значения возвращаемые Main.  Например:

if(myMA.Main(1)>myMA.Main(2))
  {
   //--- что-то делаем
  }
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
Сергей Попов
70
Сергей Попов  
Спасибо за помощь. Будем пробовать.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий