Помощь по индикатору

 

Доброго времени суток! Нужна ваша помощь господа!

Нужно сделать индикатор так что бы показывал начало и конец тренда.....

Он то показывает но........короче нужно смотреть чем писать....

Буду за ранее вам признателен в помощи!!!

#property description "Индикатор демонстрирует центральную предельную  теорему, которая гласит:" 
#property description "Сумма достаточно большого количества слабо зависимых случайных величин, " 
#property description "имеющих примерно одинаковые масштабы (ни одно из слагаемых не доминирует," 
#property description "не вносит в сумму определяющего вклада), имеет распределение, близкое к нормальному."
 
#property indicator_separate_window
#property indicator_buffers 1 
//--- свойства графического построения 
#property indicator_label1  "Label" 
#property indicator_type1   DRAW_LINE 
#property indicator_color1  clrYellow 
#property indicator_style1  STYLE_SOLID 
#property indicator_width1   2
//--- input переменная 
input int      sample =50; 
//--- индикаторный буфер для отрисовки распределения 
double         LabelBuffer[]; 
double         LabelBuff[];
double         LabelB[]; 
 

//--- счетчик тиков 
double         ticks_counter; 
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
void OnInit() 
  { 
//--- связывание массива и индикаторного буфера 
   SetIndexBuffer(0,LabelBuffer,INDICATOR_DATA);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID);

//--- развернем индикаторный буфер из настоящего в прошлое 
   ArraySetAsSeries(LabelBuffer,true); 
//--- инициализируем генератор случайных чисел 
   MathSrand(GetTickCount()); 
//--- инициализируем счетчик тиков 
   ticks_counter=0; 
  } 
//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
int OnCalculate(const int rates_total, 
                const int prev_calculated, 
                const datetime &time[], 
                const double &open[], 
                const double &high[], 
                const double &low[], 
                const double &close[], 
                const long &tick_volume[], 
                const long &volume[], 
                const int &spread[]) 
  { 

int limit; 
     int counted_bars=IndicatorCounted(); 
  //---- последний посчитанный бар будет пересчитан 
     if(counted_bars>0) counted_bars--; 
     limit=Bars-counted_bars; 
  //---- основной цикл 
     for(int i=0; i<limit; i++) 
     //==================================
    
       { 
        //---- ma_shift присваивается 0, потому что SetIndexShift, вызываемый выше 
LabelBuffer[i]=iMA(NULL,0,sample,1,MODE_LWMA,PRICE_CLOSE,i-2)>iMA(NULL,0,sample,2,MODE_LWMA,PRICE_OPEN,i); 


 
     }  

   return(rates_total); 
  }
 
Что тут смотреть? Индикатор перерисовывает (берет данные из будущего, которого в реальности мы не видим). 
 
Ihor Herasko:
Что тут смотреть? Индикатор перерисовывает (берет данные из будущего, которого в реальности мы не видим). 

А как?????????

 
Сергей Дыбленко:

А как?????????

Что именно "а как"?

 

Нужно сделать индикатор так что бы показывал начало и конец тренда.....что то типа RSI

 
Сергей Дыбленко:

Нужно сделать индикатор так что бы показывал начало и конец тренда.....что то типа RSI

Проблема в том, что это всем нужно. Только ни у кого не получается пока. RSI то ведь тоже не показывает начало и конец тренда.

Чтобы индикатор не перерисовывался, нужно изменить в коде, как минимум, две вещи:

  1. Развернуть цикл (обходить бары не справа налево по графику, а слева направо)
  2. Не брать данные с баров, которых еще вполне может не быть. Так, цикл обхода начинается с бара с индексом 0, а далее запрашиваются данные с бара i - 2, т. е. получаем индекс бара -2. А такого бара нет. Значит, чтобы логика индикатора осталась прежней, но без подглядывания в будущее, нужно сместить запрос данных на 2 бара назад:

LabelBuffer[i] = iMA(NULL, 0, sample, 1, MODE_LWMA, PRICE_CLOSE, i) > iMA(NULL, 0, sample, 2, MODE_LWMA, PRICE_OPEN, i + 2); 
Но в таком случае, конечно же, вся граальность индикатора улетучивается...
 
Ihor Herasko:

Проблема в том, что это всем нужно. Только ни у кого не получается пока. RSI то ведь тоже не показывает начало и конец тренда.

Чтобы индикатор не перерисовывался, нужно изменить в коде, как минимум, две вещи:

  1. Развернуть цикл (обходить бары не справа налево по графику, а слева направо)
  2. Не брать данные с баров, которых еще вполне может не быть. Так, цикл обхода начинается с бара с индексом 0, а далее запрашиваются данные с бара i - 2, т. е. получаем индекс бара -2. А такого бара нет. Значит, чтобы логика индикатора осталась прежней, но без подглядывания в будущее, нужно сместить запрос данных на 2 бара назад:

Но в таком случае, конечно же, вся граальность индикатора улетучивается...

Все равно не рисует так как мне нужно....... а хочу что бы было как в Зиг Заг

Файлы:
1835.jpg  348 kb
 
Сергей Дыбленко:

Все равно не рисует так как мне нужно....... а хочу что бы было как в Зиг Заг

То RSI, то ЗигЗаг ))) Хотя бы нарисуйте в качестве примера, как нужно.

 

тут на сайте была-же статья как рисовать зигзаги по всевозможным индикаторам. С примерами и готовым кодом.

просто посмотрите публикации.

 
Ihor Herasko:

То RSI, то ЗигЗаг ))) Хотя бы нарисуйте в качестве примера, как нужно.

картинку прикрепил как рисует а хотел бы как зиг заг

 
Сергей Дыбленко:

картинку прикрепил как рисует а хотел бы как зиг заг

Как отображается, видно. Непонятно, как нужно. Такой рисунок-пример и требуется.

Причина обращения: