Если Вы хотите заказать советник или индикатор, то публикуйте в эту группу тех. задание. Если Ваш заказ не очень сложный, то велика вероятность, что Вам его смогут сделать даже бесплатно
Программистам MQL: подпишитесь на группу, чтобы получать уведомления о заказах.
Комментарии (11)
multi symbols rsi 2.mq4 (9 Kb)
12 Slava78 Автор Сообщений: 598
35 AM2 Сообщений: 16664 - Андрей
12 Slava78 Автор Сообщений: 598
Расчет
Основная формула расчета технического индикатора Relative Strength Index:
RSI = 100 — (100 / (1 + U / D))
Где:
U — среднее значение положительных ценовых изменений;
D — среднее значение отрицательных ценовых изменений.
16 ssg Сообщений: 817
35 AM2 Сообщений: 16664 - Андрей
12 Slava78 Автор Сообщений: 598
если эта формула
то дайте исходную, я напишу сам. и тз на индикатор как и просил в начале. без тз сделал то что понял
35 AM2 Сообщений: 16664 - Андрей
<code> //+------------------------------------------------------------------+ //| hetmap_sw 2 line.mq4 | //| Copyright 2013, MetaQuotes Software Corp. | //| http://www.mункцql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.mункцql5.com" #property version "1.00" #property strict #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 clrRed #property indicator_color2 clrLime #property indicator_level1 0.0 input string s1="EURUSD"; input string s2="GBPUSD"; input int limit = 5; double line1[],line2[],line3[]; double Price_s1=0; double Price_s2=0; double Price_s3=0; int period_D=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,line1); SetIndexStyle(0,DRAW_LINE,0,2,clrRed); SetIndexLabel(0,s1); SetIndexBuffer(1,line2); SetIndexStyle(1,DRAW_LINE,0,2,clrLime); SetIndexLabel(1,s2); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| 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[]) { //--- for(int i=limit; i>=0; i--) { if (TimeDay(iTime(s1,0,i))!=period_D) { period_D=TimeDay(iTime(s1,0,i)); Price_s1=0;Price_s2=0; } /* double delta1=(iClose(Symb1,PERIOD_D1,0)/iClose(Symb1,PERIOD_D1,1)-1)*100.0; double delta2=(iClose(Symb2,PERIOD_D1,0)/iClose(Symb2,PERIOD_D1,1)-1)*100.0; double Delta=MathAbs(delta1-delta2); */ Price_s1=Price_s1+(iClose(s1,0,i)/iClose(s1,0,i+1)-1)*100.0; line1[i]=Price_s1; Price_s2=Price_s2+(iClose(s2,0,i)/iClose(s2,0,i+1)-1)*100.0; line2[i]=Price_s2; double Delta=MathAbs(line1[i]-line2[i]); SetLabel("Label1", "Суточное отклонение пары "+s1+""+NormalizeDouble(line1[i],2), clrRed, 5, 15, 3, 10); SetLabel("Label2", "Суточное отклонение пары "+s2+""+NormalizeDouble(line2[i],2), clrLime, 5, 30, 3, 10); SetLabel("Label3", "Дельта отклонений "+s1+" / "+s1+" "+NormalizeDouble(Delta,2), clrYellow, 5, 45, 3, 10); } for (int i=0; i<5; i++) { datetime dt=StrToTime((TimeToStr(TimeCurrent()-i*1440*60, TIME_DATE))+" 00:00"); int nb=iBarShift(s1, 0, dt, True); SetVLine(Coral, "VLine"+i, Time[nb], STYLE_DOT); } //--- return value of prev_calculated for next call return(rates_total); } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 02.07.2008 | //| Описание : Установка объекта OBJ_VLINE вертикальная линия | //+----------------------------------------------------------------------------+ //| Параметры: | //| cl - цвет линии | //| nm - наименование ("" - время открытия текущего бара) | //| t1 - время (0 - время открытия текущего бара) | //| st - стиль линии (0 - простая линия) | //| wd - ширина линии (1 - по умолчанию) | //+----------------------------------------------------------------------------+ void SetVLine(color cl, string nm="", datetime t1=0, int st=0, int wd=1) { if (nm=="") nm=DoubleToStr(Time[0], 0); if (t1<=0) t1=Time[0]; if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_VLINE, 0, 0,0); ObjectSet(nm, OBJPROP_TIME1, t1); ObjectSet(nm, OBJPROP_COLOR, cl); ObjectSet(nm, OBJPROP_STYLE, st); ObjectSet(nm, OBJPROP_WIDTH, wd); } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 12.10.2007 | //| Описание : Установка текстовой метки, объект OBJ_LABEL. | //+----------------------------------------------------------------------------+ //| Параметры: | //| nm - наименование объекта | //| tx - текст | //| cl - цвет метки | //| xd - координата X в пикселах | //| yd - координата Y в пикселах | //| cr - номер угла привязки (0 - левый верхний, | //| 1 - правый верхний, | //| 2 - левый нижний, | //| 3 - правый нижний ) | //| fs - размер шрифта (9 - по умолчанию ) | //+----------------------------------------------------------------------------+ void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) { if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0); ObjectSetText(nm, tx, fs); ObjectSet(nm, OBJPROP_COLOR , cl); ObjectSet(nm, OBJPROP_XDISTANCE, xd); ObjectSet(nm, OBJPROP_YDISTANCE, yd); ObjectSet(nm, OBJPROP_CORNER , cr); ObjectSet(nm, OBJPROP_FONTSIZE , fs); } //+----------------------------------------------------------------------------+ </code>Редактирован: 30 октября 2021, 16:1916 ssg Сообщений: 817
12 Slava78 Автор Сообщений: 598
Рисует столбик гистограммы разницы значений на текущем баре.
16 ssg Сообщений: 817
12 Slava78 Автор Сообщений: 598
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий