Группа "Стол заказов MQL"

Рейтинг 2089



РЕКОМЕНДУЮ



Доработка индикатора волатильности для МТ5

Здравствуйте, Андрей!

Прошу доработать индикатор волатильности (zakaz.opentraders.ru/57386.htm).
Вы писали, что можно изменить алгоритм расчета.
Через вывод волатильности за день для каждого из 5-ти дней, которые учавствуют в расчете.

С уважением, Антонина.
  • 0
  • Просмотров: 1167
  • 1 февраля 2021, 21:08
  • Antonyna
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Пробой трендовой линии
Следующая запись в группе  
Добавить функцию в советник Lopes.mq4
01 февраля 2021
02 февраля 2021

Комментарии (7)

+
0
это не изменение алгоритма, а только проверка расчета.
сделаем проверку. на 15-е
avatar

  34  AM2 Сообщений: 15889 - Андрей

  • 1 февраля 2021, 21:13
+
0
Спасибо
avatar

  8  Antonyna Автор Сообщений: 66

  • 1 февраля 2021, 21:49
+
0
Приветсвую! А что за алгоритм? Можно где-то скачать?
avatar

  1  AndreyMak Сообщений: 17 - Andrey

  • 2 февраля 2021, 16:03
+
0
В предыдущем топике.
zakaz.opentraders.ru/57386.htm
avatar

  11  apologetest Сообщений: 284 - Юрий

  • 2 февраля 2021, 21:16
+
0
индикатор выводит в столбик значения волатильности за каждый день в левом верхнем углу. вручную измерял и считал, все верно.




//+------------------------------------------------------------------+
//|                                                       Volume.mq5 |
//|                                              Copyright 2021, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property indicator_chart_window

#property indicator_plots 0

input int count=5;
input int corner=2;
input color clr=Aqua;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
   ObjectDelete(0,"L");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string text)
  {
   ObjectDelete(0,"L");
//--- создадим текстовую метку
   ObjectCreate(0,"L",OBJ_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,"L",OBJPROP_XDISTANCE,200);
   ObjectSetInteger(0,"L",OBJPROP_YDISTANCE,22);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,"L",OBJPROP_CORNER,corner);
//--- установим текст
   ObjectSetString(0,"L",OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,"L",OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,"L",OBJPROP_FONTSIZE,12);
//--- установим цвет
   ObjectSetInteger(0,"L",OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+
//| 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 vol5=0;
   string s="";

   for(int i=1; i<=count; i++)
     {
      vol5+=int((iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/_Point);
      s+="\n"+string(int((iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/_Point));
     }

   vol5=vol5/count;

   double vol1=int((iHigh(NULL,PERIOD_D1,0)-iLow(NULL,PERIOD_D1,0))/_Point);

   int pro=int(vol1/vol5*100);

   PutLabel("Average: "+string(vol5)+"; Procent: "+string(pro));

   Comment("\n Vol5: ",vol5,
           "\n Vol1: ",vol1,
           "\n Pro: ",pro,
           "\n Days Vol: ",s);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15889 - Андрей

  • 6 февраля 2021, 09:47
+
0
Получается, что предыдущий вариант считал правильно?

Редактирован: 6 февраля 2021, 16:10
avatar

  11  apologetest Сообщений: 284 - Юрий

  • 6 февраля 2021, 16:07
+
0
можете тоже проверить :) 
avatar

  34  AM2 Сообщений: 15889 - Андрей

  • 7 февраля 2021, 11:27

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари