Стандартный класс CiMA

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
AnatoliyFX5
56
AnatoliyFX5  
Кто знает как с помощью класса CiMA получить значение текущего таймфрейма и значение на другом таймфрейме, то есть два значения с разными таймфреймами. Не создавать дополнительных CiMA. Спасибо.
Vladimir Karputov
Модератор
181795
Vladimir Karputov  
AnatoliyFX5:
Кто знает как с помощью класса CiMA получить значение текущего таймфрейма и значение на другом таймфрейме, то есть два значения с разными таймфреймами. Не создавать дополнительных CiMA. Спасибо.

На каждый набор настроек - свой индикатор. Если хотите с двух таймрфеймов - значит создавайте два индикатора. В чем именно сложность?

AnatoliyFX5
56
AnatoliyFX5  
Ну, другой вопрос. Как добавить с помощью метода AddToChart() в советнике, если имеется два индикатора?
Vladimir Karputov
Модератор
181795
Vladimir Karputov  

Пример работы с двумя индикаторами класса CiMA

//+------------------------------------------------------------------+
//|                                                 CiMA Example.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//---
#include <Indicators\Trend.mqh>
CiMA           m_ima_h1;                     // pending orders object
CiMA           m_ima_m15;                    // pending orders object
//--- input parameters
input int      Input1=9;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- if the indicator is not created
   if(!m_ima_h1.Create(Symbol(),PERIOD_H1,12,0,MODE_SMA,PRICE_CLOSE))
     {
      //--- tell about the failure and output the error code
      PrintFormat("Failed to create of the iMA indicator H1 for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(PERIOD_H1),
                  GetLastError());
      //--- the indicator is stopped early
      return(INIT_FAILED);
     }
//--- if the indicator is not created
   if(!m_ima_m15.Create(Symbol(),PERIOD_M15,12,0,MODE_SMA,PRICE_CLOSE))
     {
      //--- tell about the failure and output the error code
      PrintFormat("Failed to create of the iMA indicator M15 for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(PERIOD_M15),
                  GetLastError());
      //--- the indicator is stopped early
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   m_ima_h1.Refresh();
   m_ima_m15.Refresh();
   double h1_0=m_ima_h1.Main(0);
   double m15_0=m_ima_m15.Main(0);
   Comment("H1 #0: ",DoubleToString(h1_0,Digits()+1),"\n",
           "M15 #0: ",DoubleToString(m15_0,Digits()+1));
  }
//+------------------------------------------------------------------+
Файлы:
AnatoliyFX5
56
AnatoliyFX5  
Короче так, нельзя получить два значения с разными таймфреймами одного индикатора.
Vladimir Karputov
Модератор
181795
Vladimir Karputov  
AnatoliyFX5:
Короче так, нельзя получить два значения с разными таймфреймами одного индикатора.

Не может быть один индикатор с двух таймфреймов :)

Для понимания лучше рассмотреть все входные параметры индикатора в комплексе.

bool  Create( 
   string           string,        // symbol 
   ENUM_TIMEFRAMES  period,        // period 
   int              ma_period,     // averaging period 
   int              ma_shift,      // shift 
   ENUM_MA_METHOD   ma_method,     // averaging method 
   int              applied        // price type, handle 
   )

Как видите хендл индикатора создаётся на шести параметрах. Если хоть один параметр изменить - это будет уже ДРУГОЙ хедл индикатор.

AnatoliyFX5
56
AnatoliyFX5  
Спасибо, я разобрался. У меня к вам просьба на обсуждение https://www.mql5.com/ru/forum/321356
Глобальные переменные
Глобальные переменные
  • 2019.09.01
  • www.mql5.com
Как правило передавать значение между двумя файлами с помощью структуры, или класса, или интерфейса...
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий