Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Храни исходные коды в MQL5 Storage. Это безопасно!
Forex Trader
114252
Forex Trader 2005.10.31 23:56 
Подскажите пожалуйста простейший каркас индикатора выводящего просто Close в окно
И может кто знает как всё это отрабатывает
например в mql2 можно было простейший индикатор написать в 1 строку и в цикле
вывести в окно функцией SetIndexValue всё это занимало 5 строк
а сдесь не пойму как это всё двигается. Вроде есть цикл, а как в окно индикатор выводится ?
Вроде и хелп читал и примеры смотрел но не пойму если был бы в хелпе элементарный пример....
Но его нет.
Прошу извинить меня тех. для кого мой вопрос показался тупым и глупым.
Forex Trader
114252
Forex Trader 2005.11.01 08:34  
что значит "выводящего просто Close"?
для алерта используем в цикле
for( i=Bars-1; i>=0; i-- )
{
  Alert(Close[i]);
}


можно то же самое с int MessageBox( string text=NULL, string caption=NULL, int flags=EMPTY) или Comment( ... ) ,
а если имеешь в виду графическое отображение , то все просто, вместо сетбуффер (если не ошибаюсь так было раньше) устанавливаешь сколько у тебя буферов объявляешь массивы в которые будешь писать значения и привязываешь буферы к массивам, как только в массиве появляются данные они тут же отрисовываются на графике т.е.
твой массив[индекс записи в массиве]=значение
индекс в массиве соответствует индексу бара на котором будет отображено значение индикатора

Forex Trader
114252
Forex Trader 2005.11.01 11:59  
//+------------------------------------------------------------------+
//|                        Bars with Ask                             |
//+------------------------------------------------------------------+
#property  indicator_chart_window
#property  indicator_buffers 2
#property  indicator_color1  Lime
#property  indicator_color2  Lime
double _Ask[],_Bid[];
double Spread;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
  SetIndexStyle(0,DRAW_HISTOGRAM,0,1);
  SetIndexBuffer(0,_Ask);
  SetIndexStyle(1,DRAW_HISTOGRAM,0,1);
  SetIndexBuffer(1,_Bid);
  
  Spread=MarketInfo(Symbol(),MODE_SPREAD)*Point;
  return(0);
}

int start()
{
  int i,counted_bars=IndicatorCounted();

  if(counted_bars==0)
  {
    for(i=Bars; i>0; i--)
    {
      _Bid[i]=High[i];
      _Ask[i]=High[i]+Spread;
    }
  }

  _Ask[0]=Ask; _Bid[0]=Bid;

  return(0);
}
Forex Trader
114252
Forex Trader 2005.11.01 23:29  
Извиняюсь что не точно выразил что я хотел узнать под Close я подразумевал цену закрытия барров на графике.
Вообщем большое спасибо ответившим за ответы они помогли мне разобраться.
И вот что получилось:
//+------------------------------------------------------------------+
//|Индикатор выводит в отдельное окно цену закрытия барров |
//|чисто для пониманиая как его написать на MQL4. |
//+------------------------------------------------------------------+
#property indicator_separate_window // Индикатор рисуется в отдельном окне
#property indicator_buffers 1 // Количество индикаторных массивов или линий которые будут отрисованны
#property indicator_color1 Red // Цвет линии или гистограммы индикатора
double _Close[]; // Обьявление массива для отрисовки

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init() //Специальнеая функция init()
{//1
SetIndexStyle(0,DRAW_HISTOGRAM,0,1); //Функция определяющая параметры отрисовки массива
SetIndexBuffer(0,_Close); //Функция определяющая массив который будет отрисован в отдельном окне

return(0); //Успешное завершение функции init()
}//-1
//+------------------------------------------------------------------+
//| Close |
//+------------------------------------------------------------------+
int start() //Специальнеая функция start()
{// 1
int i; //Обьявление переменной для счётчика в цикле
for(i=Bars; i>0; i--) //Цикл в котором считается индикатор
{// 2
_Close[i]=Close[i]; //Сама формула индикатора
}//-2
return(0); //Успешное завершение функции start()
}//-1
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий