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

Рейтинг 2146



РЕКОМЕНДУЮ



Информационный индикатор(советник).

Доброго времени суток!
Просьба написать информационный советник( индикатор), который бы визуализировал нахождение сигнальной линии индикатора TDI относительно своих уровней одновременно на всех инструментах(прописываются в советнике). В советнике также прописывается таймфрейм, на котором должна проходить визуализация. Для примера показываю на скриншоте пример такой визуализации, только там визуализирован отскок цены от мувинга. Еще на одном скриншоте, для лучшего понимания, показываю, что именно должен визуализировать информационный советник. Здесь сигнальная линия TDI на уровне 27.7849. Значит информационный советнк в основном окне напротив данного инструмента должен показать 27(целое число). Сумеете? Если есть непонятки, переспросите.
TDI_mtf+alerts.mq4 (20 Kb)





Панель с мувингами я делал с помощью вот этого индикатора. MA_Shift (2).mq4 (11 Kb) Возможно, это Вам поможе. А может Вы найдете лучший вариант.
  • 0
  • Просмотров: 1320
  • 11 июля 2022, 14:24
  • marattmb
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
Да, в параметрах индикатора нужно закрепить минимум и максимум на уровнях 0 и 102, показываю на скриншоте.
avatar

  12  marattmb Автор Сообщений: 739

  • 11 июля 2022, 14:30
+
0
Судя по скрину вы берете данные с буфера ТДИ который выводит данные индикатора РСИ.
Может тогда проще сразу использовать просто индикатор РСИ напрямую?*hi* 
avatar

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

  • 11 июля 2022, 16:20
+
0
TDI написан на основе RSI, но мне нужно так, как я изложил выше.
avatar

  12  marattmb Автор Сообщений: 739

  • 11 июля 2022, 16:26
+
0
Да я же не возражаю.Это ваш заказ.
Просто нанесите на экран графика пары и ТДИ и РСИ. Численно значения будут равны.
Но ещё раз повторю — это ваш заказ.
avatar

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

  • 11 июля 2022, 16:55
+
0
Я знаю, что равны. Вы же не знаете, как я собираюсь использовать. А распространяться я не собираюсь.
avatar

  12  marattmb Автор Сообщений: 739

  • 11 июля 2022, 17:02
+
0
на сколько пар?
avatar

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

  • 11 июля 2022, 17:18
+
0
Основные валютные пары. Желательно, чтобы была возможность задавать их в параметрах информационного советника(индикатора).
avatar

  12  marattmb Автор Сообщений: 739

  • 11 июля 2022, 17:23
+
0
на 9 сделаю. не нужные отключите. на 12-е
avatar

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

  • 11 июля 2022, 19:56
+
0
на любое число пар, главное чтобы экрана хватило: www.opentraders.ru/downloads/3358/

avatar

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

  • 11 июля 2022, 22:02
+
0
Спасибо!
avatar

  12  marattmb Автор Сообщений: 739

  • 11 июля 2022, 23:31
+
0
Уверен, что есть обоснование для использования именно ТДИ.
Написал индикатор на РСИ.
Но, как говорят, найдите разницу.

//+------------------------------------------------------------------+
//|                  Мультивалютный Информационный индикатор RSI.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_chart_window

extern string symb1 = "AUDUSD";
extern string symb2 = "EURUSD";
extern string symb3 = "GBPUSD";
extern string symb4 = "NZDUSD";
extern string symb5 = "USDCAD";
extern string symb6 = "USDCHF";
extern string symb7 = "USDJPY";
extern string symb8 = "EURAUD";
extern string symb9 = "EURGBP";
extern string symb10 = "EURNZD";
extern string symb11 = "EURJPY";
extern string symb12 = "XAUUSD";

extern int perrsi = 13;
extern ENUM_TIMEFRAMES tf = PERIOD_CURRENT;
extern int Shift =0; 
extern int corner = 1; 
extern int font = 10; 
int s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12; 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
    ObjectsDeleteAll();
    Comment(""); 
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   s1=iRSI(symb1,tf,perrsi,0,Shift);
   if(symb2!="")s2=iRSI(symb2,tf,perrsi,0,Shift);
   if(symb3!="")s3=iRSI(symb3,tf,perrsi,0,Shift);
   if(symb4!="")s4=iRSI(symb4,tf,perrsi,0,Shift);
   if(symb5!="")s5=iRSI(symb5,tf,perrsi,0,Shift);
   if(symb6!="")s6=iRSI(symb6,tf,perrsi,0,Shift);
   if(symb7!="")s7=iRSI(symb7,tf,perrsi,0,Shift);
   if(symb8!="")s8=iRSI(symb8,tf,perrsi,0,Shift);
   if(symb9!="")s9=iRSI(symb9,tf,perrsi,0,Shift);
   if(symb10!="")s10=iRSI(symb10,tf,perrsi,0,Shift);
   if(symb11!="")s11=iRSI(symb11,tf,perrsi,0,Shift);
   if(symb12!="")s12=iRSI(symb11,tf,perrsi,0,Shift);


               SetLabel("s1", symb1+" : "+s1, clrLime, 5, 15, corner, font);
if(symb2!="")  SetLabel("s2", symb2+" : "+s2, clrLime, 5, 30, corner, font);
if(symb3!="")  SetLabel("s3", symb3+" : "+s3, clrLime, 5, 45, corner, font);
if(symb4!="")  SetLabel("s4", symb4+" : "+s4, clrLime, 5, 60, corner, font);
if(symb5!="")  SetLabel("s5", symb5+" : "+s5, clrLime, 5, 75, corner, font);
if(symb6!="")  SetLabel("s6", symb6+" : "+s6, clrLime, 5, 90, corner, font);
if(symb7!="")  SetLabel("s7", symb7+" : "+s7, clrLime, 5, 105, corner, font);
if(symb8!="")  SetLabel("s8", symb8+" : "+s8, clrLime, 5, 120, corner, font);
if(symb9!="")  SetLabel("s9", symb9+" : "+s9, clrLime, 5, 135, corner, font);
if(symb10!="")  SetLabel("s10", symb10+" : "+s10, clrLime, 5, 150, corner, font);
if(symb11!="")  SetLabel("s11", symb11+" : "+s11, clrLime, 5, 165, corner, font);
if(symb12!="")  SetLabel("s12", symb12+" : "+s12, clrLime, 5, 180, corner, font);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}
//+----------------------------------------------------------------------------+



Некоторая разница из-за разности использования цен при расчете РСИ.
Её легко исправить.
Причем индикатор на ТДИ в несколько раз тяжелеё и сильно грузит комп.
Можете проверить сами при помощи теста на производительность.
avatar

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

  • 12 июля 2022, 06:22

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