Скачать MetaTrader 5

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

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

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

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

Понимаю) Желаю успеха)
MikeM
289
MikeM 2012.06.08 11:30  
Stingerrr:
... каким образом это лучше сделать...скрипт, индикатор, может и то и то, взаимодействие между ними...я не очень представляю.
Скрипт - программа, выполняющаяся только один раз после запуска.
Индикатор - программа,часть которой автоматически выполняется с приходом каждого нового тика.
MikeM
289
MikeM 2012.06.08 11:31  
Stingerrr:
значения то одни и те же...почему линии не соответствуют друг другу?
Хорошо бы увидеть пример числовых данных и линий, а то непонятно.
Михаил
77
Михаил 2012.06.08 11:38  
#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);
  }
Начнем с начала. Вот индикатор. Допустим, при переходе на новый таймфрейм индикатор выполняется и рисует линию. МА мы вызываем, он работает на часовом периоде. И по сути каждый раз строит линию по часовому периоду. Но значение линий в одинаковых точках на разных таймфреймах не одинаковы. Если есть желание, можете сами попробовать)
Комбинатор
16010
Комбинатор 2012.06.08 11:40  
MTF MA гуглите.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий