0
(0)
Имя:
HVR [ RU | Сп ]
Автор: Писатель (2008.02.11 10:02)
Скачано: 1206
Скачать:
HVR 1
HVR.mq4 (2.9 Кб) Вид
Автор: Альберт, (идея и код в MQL2 - подвал)

HVR-индикатор.

HVR 2
1 комментарий Чтобы опубликовать новый комментарий, пожалуйста авторизоваться или регистр

Следующий код отображает оба 6 & 10 HVR с 100 (все периоды как параметры). Также для большего количества периодов на графике.

//+------------------------------------------------------------------+ 
//|                                                          HVR.mq4 | 
//|      Авторское право © 2005, Альберт,(идея и код в MQL2 - подвал) | 
//|      Рефакторинг © 2010, Брюманц (добавлять 2 Линии HVR)               | 
//|                                                                  | 
//+------------------------------------------------------------------+ 
#свойство Indicator_separate_window
//----
//#свойство индикатор_минимум 0
//#свойство индикатор_максимум 3
#свойство Indicator_buffers 3
//----
#property indicator_color1 Blue
#property indicator_color2 Purple

extern int PeriodLong=100;
внешний интервал PeriodShort = 10;
внешний интервал PeriodVeryShort = 6;

double
   xVeryShort[],
   xShort[],
   длинная[];

#определить kVolfactor 7.211102550927978586238442534941
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//---- buffers 
double HVRSBuffer[];
двойной HVRVSBuffer[];
//+------------------------------------------------------------------+ 
//| Функция инициализации пользовательского индикатора                         | 
//+------------------------------------------------------------------+ 
int инициализация()
  {
   МассивИзменить размер(xVeryShort, ПериодОченьКороткий);
   МассивИзменить размер(xShort, ПериодКороткий);
   МассивИзменить размер(длинная, ПериодДлинный);
   Сетлевелвалуе(0, 0.0);
   Сетлевелвалуе(1, 0.5);
   Сетлевелвалуе(2, 1.0);
   Сетлевелвалуе(3, 2.0);
//---- 2 дополнительные буферы используются для подсчета. 
   ИндикаторБуферы(2);
   Сетиндексбуффер(0,HVRSBuffer);
   Сетиндексбуффер(1,HVRVSBuffer);
//---- indicator line 
   SetIndexStyle(0,DRAW_LINE);
   Сетиндексстиле(1,DRAW_LINE);
//---- name for DataWindow and indicator subwindow label 
   IndicatorShortName("HVR( " + ПериодОченьКороткий +" & " + ПериодКороткий + " /" + ПериодДлинный + ")");
   сетиндекслабел(0,"HVR(" + ПериодКороткий + "/" + ПериодДлинный + ")");
   сетиндекслабел(1,"HVR(" + ПериодОченьКороткий + "/" + ПериодДлинный + ")");
//---- 
//---- 
   возвращаться(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
начало()
   {
двойной hvVeryShort,
   hvShort,
   hvLong,
   среднее значениеVeryShort,
   среднееШорт,
   среднее значение;
   int counted_bars = Индикатор подсчитывается();
//---- last counted bar will be recounted
   if(counted_bars>0) 
      counted_bars--;
   int ixLimit = Bars-counted_bars-1;
   для(интервал ix=ixLimit; икс>=0; ix--)
   {
      если(ix+PeriodLong >= Бары)
         продолжать;
      среднее значение очень короткого = 0;
      средний шорт = 0;
      среднее значение=0;
      для(интервал я = 0; я<ПериодДлинный; я++)
      {
         двойной myLog=MathLog(Закрывать[икс+я]/Закрывать[икс+я+1]);
         длинная[я]=мой журнал;
         среднее значение+=мой журнал;
         если(я<ПериодКороткий)
         {
            xShort[я]=мой журнал;
            среднее значение+=мой журнал;
         }
         если(я<ПериодОченьКороткий)
         {
            xVeryShort[я]=мой журнал;
            meanVeryShort+=мой журнал;
         }
      }

      среднееВериШорт/=ПериодВериШорт;
      среднее/=PeriodShort;
      среднее значение/=периоддлинный;

      hvVeryShort=0;
      для(я=0; я<ПериодОченьКороткий; я++)
         hvVeryShort+=(xVeryShort[я] - среднее значениеVeryShort)*(xVeryShort[я] - среднее значениеVeryShort);
      hvVeryShort=MathSqrt(hvVeryShort/(PeriodVeryShort-1)) * kVolfactor;

      hvShort=0;
      для(я=0; я<ПериодКороткий; я++)
         hvShort+=(xShort[я] - среднееШорт)*(xShort[я] - среднееШорт);
      hvShort=MathSqrt(hvShort/(ПериодШорт-1)) * kVolfactor;

      hvLong=0;
      для(я=0; я<ПериодДлинный; я++)
         hvLong+=(длинная[я] - среднее значение)*(длинная[я] - среднее значение);
      hvLong=MathSqrt(hvLong/(PeriodLong-1)) * kVolfactor;

      HVRVSBuffer[икс]= hvVeryShort/hvLong;
      HVRSBuffer[икс]= hvShort/hvLong;
   }
}
//+------------------------------------------------------------------+

Насколько полезным был этот пост?

Нажмите на звездочку, чтобы оценить!

Средний рейтинг 0 / 5. Подсчет голосов: 0

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Давайте улучшим этот пост!

Расскажите нам, как мы можем улучшить этот пост?



Автор: Команда Форекс Вики
Мы команда опытных трейдеров Forex. [2000-2023] которые посвящены жизни на наших собственных условиях. Наша основная цель - достижение финансовой независимости и свободы, и мы занимались самообразованием и приобрели обширный опыт на рынке Forex, чтобы достичь самодостаточного образа жизни..