← К каталогу
Исходный код · ID 2614

! indicador_tv_to_mt4 (mtf).mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор для MetaTrader 4, отображающий на графике стрелки вверх и вниз по направлению изменения ценового тренда. Расчёт выполняется по данным выбранного таймфрейма с использованием значений ATR и заданного множителя. Индикатор поддерживает режим мультитаймфрейм: если выбранный таймфрейм отличается от текущего графика, значения пересчитываются с учётом баров старшего периода.

При появлении сигнала на закрытии свечи формируется стрелка: вверх — при смене направления вверх, вниз — при смене направления вниз. Стрелки можно отключать или включать, а также выбирать их цвета. Дополнительно можно включить оповещения: всплывающие уведомления в терминале, push-уведомления на мобильные устройства и уведомления по электронной почте. Текст уведомления содержит символ, таймфрейм и направление сигнала.

Индикатор не является торговым советником и не выполняет торговых операций. Все вычисления производятся только для отображения на графике и отправки уведомлений.

Настройки программы

НастройкаОписание
Time frame (TimeFrame) Таймфрейм — Таймфрейм, на котором рассчитывается индикатор. Если выбранный таймфрейм ниже текущего графика, используется текущий.
Key value: (m) Ключевое значение — Множитель для расчёта порогового значения на основе ATR.
ATR periods: (atrPeriods) Периоды ATR — Количество периодов для расчёта ATR.
Signals From Heinken Ashi Candles (h) Сигналы по свечам Heiken Ashi — Использовать свечи Heiken Ashi для формирования сигналов.
———————————— (T1) Заголовок раздела уведомлений — Разделитель группы настроек уведомлений.
Notifications On? (notifications) Включить уведомления — Общий переключатель уведомлений. Если выключен, остальные типы уведомлений не отправляются.
Desktop MT4 Notifications (desktop_notifications) Уведомления на рабочем столе — Включает всплывающие уведомления в терминале MetaTrader 4.
Email Notifications (email_notifications) Уведомления по email — Включает отправку уведомлений по электронной почте.
Push Mobile Notifications (push_notifications) Push-уведомления — Включает отправку push-уведомлений на мобильные устройства.
———————————— (T2) Заголовок раздела стрелок — Разделитель группы настроек стрелок.
Arrows On? (ArrowsOn) Показывать стрелки — Включает или отключает отображение стрелок на графике.
Arrows on first mtf bar (inpArrowsOnFirst) Стрелки на первом баре старшего ТФ — Отображать стрелки на первом баре старшего таймфрейма.
Arrow Up Color: (ArrowUpClr) Цвет стрелки вверх — Цвет стрелки вверх.
Arrow Down Color: (ArrowDnClr) Цвет стрелки вниз — Цвет стрелки вниз.
Получить полный код

Поиск по коду файла

#property version "1.0"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots 2
#property indicator_label1 "Arrow Up"
#property indicator_type1  DRAW_ARROW
#property indicator_color1 clrWhite
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
#property indicator_label2 "Arrow Down"
#property indicator_type2  DRAW_ARROW
#property indicator_color2 clrWhite
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
#property indicator_type2 DRAW_NONE

extern ENUM_TIMEFRAMES TimeFrame   = PERIOD_CURRENT;    // Time frame
input double m                     = 2;      // Key value:
input double atrPeriods            = 14;     // ATR periods:
input bool   h                     = false;  // Signals From Heinken Ashi Candles
input string T1                    = "== Notifications ==";  // ————————————
input bool   notifications         = false;                  // Notifications On?
input bool   desktop_notifications = false;                  // Desktop MT4 Notifications
input bool   email_notifications   = false;                  // Email Notifications
input bool   push_notifications    = false;                  // Push Mobile Notifications
input string T2                    = "== Set Arrows ==";     // ————————————
input bool   ArrowsOn              = true;                   // Arrows On?
input bool   inpArrowsOnFirst      = false;                  // Arrows on first mtf bar
input color  ArrowUpClr            = clrWhite;                // Arrow Up Color:
input color  ArrowDnClr            = clrWhite;                 // Arrow Down Color:

double ArrowUp[];
double ArrowDn[];
double xATRTrailingStop[],count[];

double nLoss, xATR;
string indicatorFileName;
#define _mtfCall(_buff,_ind) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,m,atrPeriods,h,T1,notifications,desktop_notifications,email_notifications,push_notifications,T2,ArrowsOn,inpArrowsOnFirst,ArrowUpClr,ArrowDnClr,_buff,_ind)

class CCandle
{
  int    _timeFrame;
  string _symbol;
  double _open;
  double _high;
  double _low;
  double _close;
  float  _size;
  string _type;
  string _direction;
  float  _bodySize;
  float  _shadowSup;
  float  _shadowInf;

 public:
  CCandle() { ; }
  CCandle(string sym, int tf) : _symbol(sym), _timeFrame(tf) {}
  ~CCandle() { ; }

  float  Size(void) { return _size; }
  string Type(void) { return _type; }
  double Open(void) { return _open; }
  double High(void) { return _high; }
  double Low(void) { return _low; }
  double Close(void) { return _close; }
  string Direction(void) { return _direction; }
  float  BodySize(void) { return _bodySize; }
  float  ShadowSup(void) { return _shadowSup; }
  float  ShadowInf(void) { return _shadowInf; }

  void setCandle(int shift = 1)
  {
    _open  = iOpen(_symbol, _timeFrame, shift);
    _high  = iHigh(_symbol, _timeFrame, shift);
    _low   = iLow(_symbol, _timeFrame, shift);
    _close = iClose(_symbol, _timeFrame, shift);

    setDirection();
    setSize();
    setBodySize();
    setShadows();
  }
  void setSize()
  {
    _size = 1;
    if (Distance(_high, _low, _symbol) > 0)
    {
      _size = Distance(_high, _low, _symbol);
    }
  }
  void setBodySize()
  {
    _bodySize = 1;
    if (Distance(_open, _close, _symbol) > 0)
    {
      _bodySize = Distance(_open, _close, _symbol);
    }
  }
  void setDirection()
  {
    if (_open < _close)
    {
      _direction = "up";
    }
    if (_open > _close)
    {
      _direction = "down";
    }
    if (_open == _close)
    {
      _direction = "null";
    }
  }
  void PrintCandle()
  {
    Print(__FUNCTION__, " ", "symbol", " ", _symbol);
    Print(__FUNCTION__, " ", "open", " ", _open);
    Print(__FUNCTION__, " ", "high", " ", _high);
    Print(__FUNCTION__, " ", "low", " ", _low);
    Print(__FUNCTION__, " ", "close", " ", _close);
    Print(__FUNCTION__, " ", "_size;", " ", _size);
    Print(__FUNCTION__, " ", "_type;", " ", _type);
    Print(__FUNCTION__, " ", "_direction;", " ", _direction);
    Print(__FUNCTION__, " ", "_bodySize;", " ", _bodySize);
    Print(__FUNCTION__, " ", "_shadowSup;", " ", _shadowSup);
    Print(__FUNCTION__, " ", "_shadowInf;", " ", _shadowInf);
  }
  void setShadows()
  {
    if (Direction() == "up")
    {
      _shadowInf = Distance(_open, _low, _symbol);
      _shadowSup = Distance(_close, _high, _symbol);
    }
    if (Direction() == "down")
    {
      _shadowInf = Distance(_close, _low, _symbol);
      _shadowSup = Distance(_open, _high, _symbol);
    }
    if (Direction() == "null")
    {
      _shadowInf = Distance(_close, _low, _symbol);
      _shadowSup = Distance(_open, _high, _symbol);
    }
  }
  float Distance(double precioA, double precioB, string par)
  {
    double mPoint     = MarketInfo(par, MODE_POINT);
    double dist       = fabs(precioA - precioB);
    double distReturn = 0;
    if (mPoint > 0) distReturn = dist / mPoint;
    return distReturn;
  }
};
CCandle candle1();
CCandle candle2();

class CNewCandle
{
 private:
  int  

Показано первые 50% кода (символов: 7280)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
728₽ ≈ $8.90