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

utbotalerts.mq4

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

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

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

О программе

Данный продукт представляет собой индикатор для платформы MetaTrader 4, который рассчитывает уровень трейлинг-стопа на основе среднего истинного диапазона (ATR) и отображает стрелки на графике при пересечении цены этим уровнем. Стрелки вверх (зелёного цвета) и вниз (красного цвета) указывают на изменение направления цены относительно рассчитанного трейлинг-стопа.

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

Продукт предоставляет настройки для включения различных типов уведомлений: десктопных alert-уведомлений, push-уведомлений на мобильное устройство и email-рассылки. Также доступны настройки отображения стрелок и выбора их цветов. Параметр для сигналов на основе свечей Heinken Ashi объявлен, но в текущей версии не задействован в расчётах.

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

НастройкаОписание
m Множитель, определяющий ширину трейлинг-стопа как произведение значения ATR на данное число.
atrPeriods Период расчёта индикатора ATR (средний истинный диапазон), используемого для определения уровня трейлинг-стопа.
h Переключатель сигналов на основе свечей Heinken Ashi. В текущей версии индикатора параметр объявлен, но не используется в расчётах.
T1 Текстовый разделитель группы настроек уведомлений в диалоге параметров индикатора.
notifications Общий переключатель включения всех уведомлений. При отключении блокируется отправка всех типов уведомлений.
desktop_notifications Включает десктопные уведомления MT4 (Alert) при появлении сигнала.
email_notifications Включает отправку email-уведомлений при появлении сигнала.
push_notifications Включает отправку push-уведомлений на мобильное устройство при появлении сигнала.
T2 Текстовый разделитель группы настроек стрелок в диалоге параметров индикатора.
ArrowsOn Включает отображение стрелок на графике. При отключении стрелки не отрисовываются.
ArrowUpClr Цвет стрелки, указывающей рост цены.
ArrowDnClr Цвет стрелки, указывающей снижение цены.
Получить полный код

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

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

double ArrowUp[];
double ArrowDn[];
double xATRTrailingStop[];

double nLoss, xATR;

input double m          = 2;      // Key value:
input double atrPeriods = 1;     // 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 color  ArrowUpClr            = clrLawnGreen;                // Arrow Up Color:
input color  ArrowDnClr            = clrCrimson;                 // Arrow Down Color:

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"

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

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

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

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

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

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

Стоимость полного кода
598,30₽ ≈ $7.31