Подскажите пожалуйста, как реализовать такую идею.

 
Здравствуйте. Нужна подсказка. Мне необходимо нарисовать линию по МА и пару линий выше и ниже на определенное кол-во пунктов, но необходимо, чтобы данные брались из определенного таймфрейма, и вот эта линия, оставаясь такой же, рисовалась на всех остальных таймфермах. Пробовал просто через индикатор, вызывая МА только с параметром, допустим M30, но, визуально, переключаясь между графиками, линии вроде как похожи, но по цене в одинаковых точках не соответствуют друг другу. Буду очень рад вашему совету, подскажите, как правильно сделать так, чтобы на всех графиках рисовалась одинаковая линия, сгенерированная МА по определенному таймфрейму?
 

От чего берётся МА?
Вообще-то я хотел спросить: программировать умеешь?

 
Программировать умею. Но на MQL4 опыта пока не много.
 
Если умеешь, то посмотри на функции iTime(), iOpen(), iClose(), ...
Если не умеешь - забей!
 
Stingerrr:
Программировать умею. Но на MQL4 опыта пока не много.
Почти моя ситуация, но я исправляюсь )))))
 
Функции мне известны...посмотрю, спасибо. От недостатка опыта в этом языке мне просто было интересно каким образом это лучше сделать...скрипт, индикатор, может и то и то, взаимодействие между ними...я не очень представляю. Тоже хотел задать вопрос, используя iMA(,,) по определенному периоду, запоминаю значения, которые он возвращает и пытаюсь нарисовать на других таймфреймах линию по этим же значениям... чисто теоретически, значения то одни и те же...почему линии не соответствуют друг другу?
 
MikeM:
Почти моя ситуация, но я исправляюсь )))))

Понимаю) Желаю успеха)
 
Stingerrr:
... каким образом это лучше сделать...скрипт, индикатор, может и то и то, взаимодействие между ними...я не очень представляю.
Скрипт - программа, выполняющаяся только один раз после запуска.
Индикатор - программа,часть которой автоматически выполняется с приходом каждого нового тика.
 
Stingerrr:
значения то одни и те же...почему линии не соответствуют друг другу?
Хорошо бы увидеть пример числовых данных и линий, а то непонятно.
 
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 LimeGreen
#property indicator_color3 LimeGreen
//---- indicator parameters
extern int MA_Period=10;
extern int Pips = 50;
//---- indicator buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
//----
int ExtCountedBars=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   int    draw_begin;
   string short_name;
//---- drawing settings
   

   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID);
   SetIndexStyle(1,DRAW_LINE,STYLE_DOT);
   SetIndexStyle(2,DRAW_LINE,STYLE_DOT);
   SetIndexShift(0,0);
   SetIndexShift(1,0);
   SetIndexShift(2,0);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
   if(MA_Period<1) MA_Period=1;
   draw_begin=MA_Period-1;
//---- indicator short name
   IndicatorShortName("Kanal("+MA_Period+")");
   SetIndexLabel(0,"MA"+MA_Period+" for Close");
   SetIndexLabel(1,"Kanal(MA"+MA_Period+")+("+Pips+")Upper");
   SetIndexLabel(2,"Kanal(MA"+MA_Period+")-("+Pips+")Lower");
   SetIndexDrawBegin(0,draw_begin);
   SetIndexDrawBegin(1,draw_begin);
   SetIndexDrawBegin(2,draw_begin);
//---- indicator buffers mapping
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexBuffer(2,ExtMapBuffer3);
   
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   if(Bars<=MA_Period) return(0);
   ExtCountedBars=IndicatorCounted();
//---- check for possible errors
   if (ExtCountedBars<0) return(-1);
//---- last counted bar will be recounted
   if (ExtCountedBars>0) ExtCountedBars--;
   limit=Bars-ExtCountedBars;
//---- Lines counted in the buffers

   for(int i=0; i<limit; i++)
     { 
      ExtMapBuffer1[i] = iMA(NULL,PERIOD_H1,MA_Period,0,MODE_SMA,PRICE_CLOSE,i);
      ExtMapBuffer2[i] = iMA(NULL,PERIOD_H1,MA_Period,0,MODE_SMA,PRICE_CLOSE,i)+Pips*Point;
      ExtMapBuffer3[i] = iMA(NULL,PERIOD_H1,MA_Period,0,MODE_SMA,PRICE_CLOSE,i)-Pips*Point;
     }
//---- done

   return(0);
  }
Начнем с начала. Вот индикатор. Допустим, при переходе на новый таймфрейм индикатор выполняется и рисует линию. МА мы вызываем, он работает на часовом периоде. И по сути каждый раз строит линию по часовому периоду. Но значение линий в одинаковых точках на разных таймфреймах не одинаковы. Если есть желание, можете сами попробовать)
 
MTF MA гуглите.
Причина обращения: