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

Рейтинг 2087



РЕКОМЕНДУЮ



индикатор максимальная волатильность

здравствуйте Андрей.

прошу выполнить заказ zakaz.opentraders.ru/45678.html
  • +1
  • Просмотров: 2712
  • 1 июля 2018, 08:41
  • igrun
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
посмотрю в среду что можно сделать
avatar

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

  • 1 июля 2018, 11:43
+
0
Здесь я добавил 3 пары плюс вывод максимального значения в коммент. По реализации алгоритма индикатора полностью уже не ко мне.




//+------------------------------------------------------------------+
//|                                                      PairVol.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window

input string s1="EURUSD";
input string s2="GBPUSD";
input string s3="USDCHF";
input string s4="AUDUSD";
input string s5="USDJPY";
input string s6="USDCAD";

input string s7="EURGBP";
input string s8="GBPJPY";
input string s9="NZDUSD";

input int count=10;

int vol[9];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string text,string name,int x,int y)
  {
   ObjectDelete(0,name);
//--- создадим текстовую метку
   ObjectCreate(0,name,OBJ_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,1);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
   double h1=iHigh(s1,0,iHighest(s1,0,MODE_HIGH,count,0));
   double l1=iLow(s1,0,iLowest(s1,0,MODE_LOW,count,0));
   int v1=(int)((h1-l1)/MarketInfo(s1,MODE_POINT));
   int sp1=(int)MarketInfo(s1,MODE_SPREAD);
   vol[0]=v1;

   double h2=iHigh(s2,0,iHighest(s2,0,MODE_HIGH,count,0));
   double l2=iLow(s2,0,iLowest(s2,0,MODE_LOW,count,0));
   int v2=(int)((h2-l2)/MarketInfo(s2,MODE_POINT));
   int sp2=(int)MarketInfo(s2,MODE_SPREAD);
   vol[1]=v2;

   double h3=iHigh(s3,0,iHighest(s3,0,MODE_HIGH,count,0));
   double l3=iLow(s3,0,iLowest(s3,0,MODE_LOW,count,0));
   int v3=(int)((h3-l3)/MarketInfo(s3,MODE_POINT));
   int sp3=(int)MarketInfo(s3,MODE_SPREAD);
   vol[2]=v3;

   double h4=iHigh(s4,0,iHighest(s4,0,MODE_HIGH,count,0));
   double l4=iLow(s4,0,iLowest(s4,0,MODE_LOW,count,0));
   int v4=(int)((h4-l4)/MarketInfo(s4,MODE_POINT));
   int sp4=(int)MarketInfo(s4,MODE_SPREAD);
   vol[3]=v4;

   double h5=iHigh(s5,0,iHighest(s5,0,MODE_HIGH,count,0));
   double l5=iLow(s5,0,iLowest(s5,0,MODE_LOW,count,0));
   int v5=(int)((h5-l5)/MarketInfo(s5,MODE_POINT));
   int sp5=(int)MarketInfo(s5,MODE_SPREAD);
   vol[4]=v5;

   double h6=iHigh(s6,0,iHighest(s6,0,MODE_HIGH,count,0));
   double l6=iLow(s6,0,iLowest(s6,0,MODE_LOW,count,0));
   int v6=(int)((h6-l6)/MarketInfo(s6,MODE_POINT));
   int sp6=(int)MarketInfo(s6,MODE_SPREAD);
   vol[5]=v6;

   double h7=iHigh(s7,0,iHighest(s7,0,MODE_HIGH,count,0));
   double l7=iLow(s7,0,iLowest(s7,0,MODE_LOW,count,0));
   int v7=(int)((h7-l7)/MarketInfo(s7,MODE_POINT));
   int sp7=(int)MarketInfo(s7,MODE_SPREAD);
   vol[6]=v7;

   double h8=iHigh(s8,0,iHighest(s8,0,MODE_HIGH,count,0));
   double l8=iLow(s8,0,iLowest(s8,0,MODE_LOW,count,0));
   int v8=(int)((h8-l8)/MarketInfo(s8,MODE_POINT));
   int sp8=(int)MarketInfo(s8,MODE_SPREAD);
   vol[7]=v8;

   double h9=iHigh(s9,0,iHighest(s9,0,MODE_HIGH,count,0));
   double l9=iLow(s9,0,iLowest(s9,0,MODE_LOW,count,0));
   int v9=(int)((h9-l9)/MarketInfo(s9,MODE_POINT));
   int sp9=(int)MarketInfo(s9,MODE_SPREAD);
   vol[8]=v9;
//---
   PutLabel(s1+" VOL: "+(string)v1+" SPREAD: "+(string)sp1,s1,260,10);
   PutLabel(s2+" VOL: "+(string)v2+" SPREAD: "+(string)sp2,s2,260,30);
   PutLabel(s3+" VOL: "+(string)v3+" SPREAD: "+(string)sp3,s3,260,50);
   PutLabel(s4+" VOL: "+(string)v4+" SPREAD: "+(string)sp4,s4,260,70);
   PutLabel(s5+" VOL: "+(string)v5+" SPREAD: "+(string)sp5,s5,260,90);
   PutLabel(s6+" VOL: "+(string)v6+" SPREAD: "+(string)sp6,s6,260,110);
   PutLabel(s7+" VOL: "+(string)v7+" SPREAD: "+(string)sp7,s7,260,130);
   PutLabel(s8+" VOL: "+(string)v8+" SPREAD: "+(string)sp8,s8,260,150);
   PutLabel(s9+" VOL: "+(string)v9+" SPREAD: "+(string)sp9,s9,260,170);

   ArraySort(vol,WHOLE_ARRAY,0,MODE_DESCEND);

   Comment("\n Max Vol: ",vol[0]);

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


В следующем топике можно создать двумерный массив. В первом измерении будет цифра соответствующая паре, во втором волатильность. Затем отсотировать по второму измерению и по цифровому значению определить пары с наибольшей волатильностью.

Отслеживание возрастания волатильности уже на 3-й топик, я еще пока не представляю как буду это реализовывать.
avatar

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

  • 4 июля 2018, 21:58
+
0
Кинул на график — все показывает как надо.
avatar

  22  igrun Автор Сообщений: 1572 - igrun

  • 5 июля 2018, 10:08
+
0
*loss* 
avatar

  18  Kashtan Сообщений: 737 - Игорь

  • 5 июля 2018, 17:25
+
0
у меня почему то не отображается информация на графике
и ошибку пишет 2018.07.06 01:44:25.896 PairVol GBPJPYc,M5: zero divide in 'PairVol' (78,25)
avatar

  16  cerber04 Сообщений: 409

  • 6 июля 2018, 01:52
+
0
а у тебя открыты эти графики?
avatar

  22  igrun Автор Сообщений: 1572 - igrun

  • 6 июля 2018, 11:17

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