Slava78

 
Уровень 12

  Торгую в компаниях:


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

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от Slava78



Советник Комментариев 9
2020-03-17 14:42:32Рейтинг 0

Советник Комментариев 15
2020-05-28 14:02:26Рейтинг 0

Советник
2020-05-28 05:26:27Рейтинг 0

ТС "Новая Черепаха" Комментариев 3
2020-04-19 10:01:11Рейтинг 0

Советник Комментариев 11
2020-01-02 11:45:26Рейтинг 0

Индикатор hetmap_sw

Уважаемый Андрей! Сделайте пожалуйста этот индикатор в виде линий в подвале на две валютные пары (хотя бы дневной период)
zakaz.opentraders.ru/62485.html
По принципу этого индикатора
multi symbols rsi 2.mq4 (9 Kb)
multi symbols rsi.zi p (0 Kb)
multi symbols rsi — alerts.mq4 (0 Kb)
  • 0
  • Просмотров: 2613
  • 29 октября 2021, 17:39
  • Slava78
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

Брокер для ваших роботов, 15 лет на рынке

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

+
0
Еле прикрепил
multi symbols rsi 2.mq4 (9 Kb)

Редактирован: 29 октября 2021, 18:22
avatar

  12  Slava78 Автор Сообщений: 598

  • 29 октября 2021, 17:58
+
0
тз на индикатор рассмотрю
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 29 октября 2021, 19:06
+
0
Если он похож на рси, то почему тогда разница в данных получается не пойму
<code>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);
</code>


Редактирован: 29 октября 2021, 20:54
avatar

  12  Slava78 Автор Сообщений: 598

  • 29 октября 2021, 20:48
+
0
Разные формулы расчета у них:

Расчет
Основная формула расчета технического индикатора Relative Strength Index:

RSI = 100 — (100 / (1 + U / D))

Где:
U — среднее значение положительных ценовых изменений;
D — среднее значение отрицательных ценовых изменений.
avatar

  16  ssg Сообщений: 817

  • 29 октября 2021, 21:30
+
0
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 29 октября 2021, 21:02
+
0
Спасибо, но я просил по другой формуле расчета. Видимо это сложно для бесплатного заказа *think* 
avatar

  12  Slava78 Автор Сообщений: 598

  • 30 октября 2021, 05:43
+
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);

то дайте исходную, я напишу сам. и тз на индикатор как и просил в начале. без тз сделал то что понял
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 30 октября 2021, 08:31
+
0
Мой вариант индикатора:
<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:19
avatar

  16  ssg Сообщений: 817

  • 30 октября 2021, 09:49
+
0
avatar

  12  Slava78 Автор Сообщений: 598

  • 30 октября 2021, 10:10
+
0
Вот написал еще один вариант.
Рисует столбик гистограммы разницы значений на текущем баре.

//+------------------------------------------------------------------+
//|                                             hetmap_sw 2 hist.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 3
#property indicator_color3 clrYellow
#property indicator_style2 0
#property indicator_level2 0
#property  indicator_width3 3
#property indicator_maximum 1
#property indicator_minimum -1
extern string Symb1="EURAUD";
extern string Symb2="EURNZD";

double line1[],line2[],line3[];
//+------------------------------------------------------------------+
int OnInit(void)
{
   IndicatorBuffers(3);
   SetIndexBuffer(0,line1);
   SetIndexBuffer(1,line2);
   SetIndexBuffer(2,line3);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexLabel(2,"Delta");
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
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 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);
*/
  line1[0] = NormalizeDouble((iClose(Symb1,PERIOD_D1,0)/iClose(Symb1,PERIOD_D1,1)-1)*100.0,2);
  line2[0] = NormalizeDouble((iClose(Symb2,PERIOD_D1,0)/iClose(Symb2,PERIOD_D1,1)-1)*100.0,2);
  line3[0] = MathAbs(line1[0]-line2[0]);
  Comment(
           "Символ №1 - "+Symb1+"  "+DoubleToString(line1[0],2)+
           " \nСимвол №2 - "+Symb2+"  "+DoubleToString(line2[0],2)+
           " \nРазница = "+DoubleToString(line3[0],2)
           );
   
   return(rates_total);
  }
//+------------------------------------------------------------------+
avatar

  16  ssg Сообщений: 817

  • 30 октября 2021, 10:48
+
0
*good* 
avatar

  12  Slava78 Автор Сообщений: 598

  • 30 октября 2021, 14:46

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