Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

Indicator Сopies - библиотека для MetaTrader 5

Просмотров:
1690
Рейтинг:
(13)
Опубликован:
2020.12.27 11:07
Обновлен:
2020.12.28 00:49
\MQL5\Include\ \MQL5\Indicators\ \MQL5\Include\Canvas\
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Простой класс CIndCopies, который позволяет при написании индикаторов контролировать общее количество запущенных в данном окне таких же индикаторов, порядковый номер текущего индикатора, а также узнать как загружен данный индикатор - через iCustom или присоединен к окну.

Требуется только подсоединить файл данного класса:

#include <Copies.mqh>

и объявить один объект класса:

CIndCopies ind;

Объект класса содержит три свойства:

  • int N;         The total number of the same indicators loaded in this chart (общее количество загруженных в текущем окне таких же индикаторов.)
  • int I;          The number of the current indicator, if I = -1, then the indicator is called via iCustom (номер текущего индикатора. Если I=-1, значит текущий индикатор вызван через iCustom)
  • string str;   A unique string for a current indicator (Уникальная строка для текущего индикатора)

Пример индикатора с применением данного класса, который показывает как взаимодействуют и "видят" друг друга одинаковые индикаторы в данном окне с помощью этого класса, подключенного двумя строками кода.


#include <Canvas\iCanvas.mqh> // https://www.mql5.com/ru/code/22164
#include <Copies.mqh>

input string str = "Name1"; //Name

CIndCopies ind("test"); // можно записать CIndCopies ind; В этом случае шаблон для уникального имени будет по умолчанию "IndName"

int OnInit() {
   Draw();
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[]) {
   return(rates_total);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long& lparam,
                  const double& dparam,
                  const string& sparam)  {
   if (id==CHARTEVENT_CHART_CHANGE) {
   ind.ReNew(); // перепроверяем все такие же индикаторы в этом окне 
   Draw();
   }
}
//+------------------------------------------------------------------+
void Draw() {  // рисуем один прямоугольник по всей ширине окна, но по высоте в зависимости от наличия других таких же индикаторов
   Canvas.Erase(0x00FFFFFF);
   int d=W.Height/(ind.N);
   Canvas.FillRectangle(0,ind.I*d,W.Width-1,(ind.I+1)*d,Canvas.Grad((double)ind.I/(ind.N+1))&0x80FFFFFF);
   int fontSize=W.Height/(ind.N+2);
   string text = str+": " + ind.str+", I="+string(ind.I)+", N="+string(ind.N);
   int w,h;
   Canvas.CurentFont("Tahoma",fontSize);
   Canvas.TextSize(text,w,h);
   Canvas.CurentFont("Tahoma",int(fontSize*W.Width*0.9/w));
   _CommXY(int(0.05*W.Width),ind.I*d,str+": " + ind.str+", I="+string(ind.I)+", N="+string(ind.N));
   Canvas.Update();
}
//+------------------------------------------------------------------+



RVI Extremum detection RVI Extremum detection

Гистограмма показывает экстремумы индикатора iRVI (Relative Vigor Index, RVI)

iBands Open Close Rules iBands Open Close Rules

Получение сигналов от индикатора iBands (Bollinger Bands, BB), стоп лосс динамический - по индикатору iATR (Average True Range, ATR) и коэффициенту

iRVI Expert iRVI Expert

Стратегия по индикатору iRVI (Relative Vigor Index, RVI). Закрытие противоположных позиций. Наращивание позиции только если "покупай ниже, продавай выше"

Breakdown OHLC 2 Breakdown OHLC 2

Индикатор отображает момент пересечения предыдущего бара. Использует стиль рисования DRAW_COLOR_ARROW. Развитие первой версии