Если Вы хотите заказать советник или индикатор, то публикуйте в эту группу тех. задание. Если Ваш заказ не очень сложный, то велика вероятность, что Вам его смогут сделать даже бесплатно
Программистам MQL: подпишитесь на группу, чтобы получать уведомления о заказах.
Здесь я добавил 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-й топик, я еще пока не представляю как буду это реализовывать.
Комментарии (6)
35 AM2 Сообщений: 16388 - Андрей
В следующем топике можно создать двумерный массив. В первом измерении будет цифра соответствующая паре, во втором волатильность. Затем отсотировать по второму измерению и по цифровому значению определить пары с наибольшей волатильностью.
Отслеживание возрастания волатильности уже на 3-й топик, я еще пока не представляю как буду это реализовывать.
35 AM2 Сообщений: 16388 - Андрей
23 igrun Автор Сообщений: 1689 - igrun
19 Kashtan Сообщений: 739 - Игорь
и ошибку пишет 2018.07.06 01:44:25.896 PairVol GBPJPYc,M5: zero divide in 'PairVol' (78,25)
16 cerber04 Сообщений: 409
23 igrun Автор Сообщений: 1689 - igrun
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий