Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 362

 
Sepulca:


Ну вот, вроде что-то рисуется

Хотя я может не до

конца понял смысл индикатора

Смысл в том, что если при падении или росте не превышающем 50 пунктов индикатор не должен меняться по отношению к прошлому значению,

которое мы записали, если не было превышения. И на каждом тике сравниваем.

И пока нет превышения рисуется ровная линия, при превышении индикатор получает текущее значение.

Примерно так

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

на эти самые 50 пунктов. Визуально видно, что он запаздывает особенно на росте, начинает менятся через бар.

Где-то в нем я ошибся, не пойму где.

//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_SECTION,0,1);
   SetIndexBuffer(0,ExtMapBuffer1);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    raznica,raznica_static,MA_1_t,MA_2_t;
    
  if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
  static double MA_otshet; 
  for(int i=0;i<limit;i++)
   {    
      MA_1_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+1); 
      raznica=MA_1_t-MA_2_t;
      raznica_static=MA_1_t-MA_otshet;
      if(raznica_static > -0.005 && raznica_static < 0.005)
      {
      ExtMapBuffer1[i]=MA_otshet;
      }
      else
      if(raznica > -0.005 && raznica < 0.005)
      {
      ExtMapBuffer1[i]=MA_2_t;
      MA_otshet=MA_2_t;
      }
      if((raznica > 0.005) || (raznica <- 0.005))
      {
      ExtMapBuffer1[i]=MA_1_t;
      }  
   } 
   return(0);
  }
//+------------------------------------------------------------------+
 
ALXIMIKS:


Вы издеваетесь? Ну нету у пунктиров толщины иной кроме стандартной ( и в документации где-то было написано, место не укажу, но помню что читал)

Доказываем:

1) кидаем обычную машку

2) заходим в свойства "Цвета"

3) ставим тип линии - пунктир

4) выбираем толщину 2-5

Результат - пунктир превращается в обычную линию.

Ну, вот и пишу, что без пунктира.
 
XuMuk:
Всем привет!!! Попробовал написать сам простой эксперт. Но возникает какая-то проблема, которую я не пойму. Вот простой осциллограф, подсмотренный в книжке. Я его компилирую и ни чего не отображается. Хотя если в цикле while в место деление поставить "-", то все работает.

Ну вот, даже рисует

#property indicator_buffers 1
#property indicator_separate_window
extern int Period_valroc=10;
double Line0[];
int init()
  {
   SetIndexBuffer(0,Line0);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,Magenta);

   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    i,Counted_bars=1000+Period_valroc;
    for (i=Counted_bars-1-Period_valroc; i>=0;i--)
      {
        Line0[i]=100*(Close[i]/Close[i+Period_valroc]);
//        i--;
      }
//----
   return(0);
  }

фиолетовый Ваш индюк)))

 

Вечер добрый.

Решил качнуть историю, а то только один год был по USD|JPY

В общем плохая идея как оказалось, теперь не график а каша.

Как вернуть все в исходную :( ???

ДЦ: Ф о Р ю

Спасибо !!

 
Forexman77:

Смысл в том, что если при падении или росте не превышающем 50 пунктов индикатор не должен меняться по отношению к прошлому значению,

которое мы записали, если не было превышения. И на каждом тике сравниваем.

И пока нет превышения рисуется ровная линия, при превышении индикатор получает текущее значение.

Примерно так

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

на эти самые 50 пунктов. Визуально видно, что он запаздывает особенно на росте, начинает менятся через бар.

Где-то в нем я ошибся, не пойму где.


На первый взгляд - все нормально. Единственное, что я, например, предпочитаю циклы по барам из прошлого в будущее: меньше возможностей поменять значения индикатора по истории. Запаздывание может быть связано с использованием мувинга (у Вас 7 периодный) а "дребезг" - с использованием цены закрытия нулевого бара - оно постоянно меняется в течение бара.
 
VladislavVG:

На первый взгляд - все нормально. Единственное, что я, например, предпочитаю циклы по барам из прошлого в будущее: меньше возможностей поменять значения индикатора по истории. Запаздывание может быть связано с использованием мувинга (у Вас 7 периодный) а "дребезг" - с использованием цены закрытия нулевого бара - оно постоянно меняется в течение бара.

Сделал условия цикла

for(int i=Bars-1;i>=0;i--)

значительно снизилась скорость тестирования.

Для проверки накидываю в тестере еще 7 периодный мувинг. Отклонения в 50 пунктов есть, а индикатор не сразу менятся начинает.

 
Forexman77:

Сделал условия цикла

значительно снизилась скорость тестирования.



  for(int i=limit-1;i>=0;i--)

Остальное как в Вашем варианте

ЗЫ И еще, ИМХО, не стоит использовать абсолютные величины при сравнении - 0.005 - лучше 50*Point. Иначе на разных парах получите разный результат.

 
VladislavVG:

Остальное как в Вашем варианте

ЗЫ И еще, ИМХО, не стоит использовать абсолютные величины при сравнении - 0.005 - лучше 50*Point. Иначе на разных парах получите разный результат.

Спасибо! Вроде работает.

Вы не встречали что-либо подобное? Может кто осуществил данную идею?

Пока нашел про скользящую Кауфмана и зигзаг. В принципе индикатор зигзаг похоже сделан.

 
Forexman77:

Спасибо! Вроде работает.

Вы не встречали что-либо подобное? Может кто осуществил данную идею?

Пока нашел про скользящую Кауфмана и зигзаг. В принципе индикатор зигзаг похоже сделан.



Не, такого не встречал.
 
fozi:

Вечер добрый.

Решил качнуть историю, а то только один год был по USD|JPY

В общем плохая идея как оказалось, теперь не график а каша.

Как вернуть все в исходную :( ???

ДЦ: Ф о Р ю

Спасибо !!

Если на графике нажать правую мышь и выбрать "обновить" ?
Причина обращения: