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

Trader's Dynamic Index

tradersdynamicindex.mq5

Похожие материалы по тегам

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Trader's Dynamic Index (TDI) — это индикатор для MetaTrader 5, отображающий направление тренда, его силу и волатильность. Индикатор рассчитывает RSI заданного периода и строит на его основе скользящие средние, а также верхнюю и нижнюю границы волатильности на основе стандартного отклонения.

Результат отображается в отдельном окне в виде нескольких линий: зелёная линия RSI Price, красная линия Trade Signal, жёлтая линия Market Base и синие линии волатильности (VB High и VB Low). Поддерживается отображение данных с верхнего таймфрейма.

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

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

НастройкаОписание
____Main Группа основных настроек индикатора.
RSI_Period Период расчёта индикатора RSI.
RSI_Price Тип цены для расчёта RSI.
Volatility_Band Количество баров, используемых для расчёта полосы волатильности.
StdDev Множитель стандартного отклонения для расчёта границ волатильности.
RSI_Price_Line Период скользящей средней для зелёной линии RSI Price.
RSI_Price_Type Тип скользящей средней для зелёной линии RSI Price.
Trade_Signal_Line Период скользящей средней для красной линии Trade Signal.
Trade_Signal_Type Тип скользящей средней для красной линии Trade Signal.
UpperTimeframe Верхний таймфрейм, данные с которого отображаются при значении выше текущего.
____Alerts Группа настроек уведомлений.
EnableNativeAlerts Включает или отключает встроенные всплывающие уведомления MetaTrader.
EnableEmailAlerts Включает или отключает отправку email-уведомлений при срабатывании условий.
EnablePushAlerts Включает или отключает отправку push-уведомлений на мобильные устройства.
EnableArrowAlerts Включает или отключает отрисовку стрелок-оповещений на графике при пересечениях.
EnableRedYellowCrossAlert Включает или отключает уведомления при пересечении красной и жёлтой линий.
EnableHookAlert Включает или отключает уведомления при формировании хука (пересечения зелёной линии с границами волатильности).
EnableGreenRedCrossAlert Включает или отключает уведомления при пересечении зелёной и красной линий.
EnableYellowGreenCrossAlert Включает или отключает уведомления при пересечении зелёной и жёлтой линий.
TriggerCandle Свеча, на которой проверяются условия срабатывания уведомлений (текущая или предыдущая).
____Arrows Группа настроек стрелок.
RedYellowCrossArrowBullishColor Цвет стрелки для бычьего пересечения красной и жёлтой линий.
RedYellowCrossArrowBearishColor Цвет стрелки для медвежьего пересечения красной и жёлтой линий.
HookArrowBullishColor Цвет стрелки для бычьего хука.
HookArrowBearishColor Цвет стрелки для медвежьего хука.
GreenRedCrossArrowBullishColor Цвет стрелки для бычьего пересечения зелёной линии под красной.
GreenRedCrossArrowBearishColor Цвет стрелки для медвежьего пересечения зелёной линии над красной.
YellowGreenCrossArrowBullishColor Цвет стрелки для бычьего пересечения зелёной и жёлтой линий.
YellowGreenCrossArrowBearishColor Цвет стрелки для медвежьего пересечения зелёной и жёлтой линий.
RedYellowCrossArrowBullishCode Код стрелки для бычьего пересечения красной и жёлтой линий.
RedYellowCrossArrowBearishCode Код стрелки для медвежьего пересечения красной и жёлтой линий.
HookArrowBullishCode Код стрелки для бычьего хука.
HookArrowBearishCode Код стрелки для медвежьего хука.
GreenRedCrossArrowBullishCode Код стрелки для бычьего пересечения зелёной линии под красной.
GreenRedCrossArrowBearishCode Код стрелки для медвежьего пересечения зелёной линии над красной.
YellowGreenCrossArrowBullishCode Код стрелки для бычьего пересечения зелёной и жёлтой линий.
YellowGreenCrossArrowBearishCode Код стрелки для медвежьего пересечения зелёной и жёлтой линий.
ArrowSize Размер стрелок, отображаемых на графике.
ArrowPrefix Префикс для имён объектов стрелок на графике.
Получить полный код

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

#property version   "1.07"
#property strict

#property description "Shows trend direction, strength, and volatility."
#property description "Green line  - RSI Price line."
#property description "Red line    - Trade Signal line."
#property description "Blue lines  - Volatility Band."
#property description "Yellow line - Market Base line."

#property indicator_separate_window
#property indicator_buffers 6
#property indicator_level1 32
#property indicator_level2 50
#property indicator_level3 68
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_levelcolor clrDimGray
#property indicator_levelstyle STYLE_DOT
#property indicator_levelwidth 1
#property indicator_color1 clrNONE
#property indicator_type1  DRAW_NONE
#property indicator_color2 clrMediumBlue
#property indicator_label2 "VB High"
#property indicator_type2  DRAW_LINE
#property indicator_color3 clrYellow
#property indicator_label3 "Market Base Line"
#property indicator_type3  DRAW_LINE
#property indicator_width3 2
#property indicator_color4 clrMediumBlue
#property indicator_label4 "VB Low"
#property indicator_type4  DRAW_LINE
#property indicator_color5 clrGreen
#property indicator_label5 "RSI Price Line"
#property indicator_type5  DRAW_LINE
#property indicator_width5 2
#property indicator_color6 clrRed
#property indicator_label6 "Trade Signal Line"
#property indicator_type6  DRAW_LINE
#property indicator_width6 2

enum enum_arrow_type
{
    Buy,
    Sell
};

enum enum_candle_to_check
{
    Current,
    Previous
};

input string ____Main = "";
input int RSI_Period = 13; // RSI_Period: 8-25
input ENUM_APPLIED_PRICE RSI_Price = PRICE_CLOSE;
input int Volatility_Band = 34; // Volatility_Band: 20-40
input double StdDev = 1.6185; // Standard Deviations: 1-3
input int RSI_Price_Line = 2;
input ENUM_MA_METHOD RSI_Price_Type = MODE_SMA;
input int Trade_Signal_Line = 7;
input ENUM_MA_METHOD Trade_Signal_Type = MODE_SMA;
input ENUM_TIMEFRAMES UpperTimeframe = PERIOD_CURRENT; // UpperTimeframe: If above current will display values from  that timeframe.
input string ____Alerts = "";
input bool EnableNativeAlerts = false;
input bool EnableEmailAlerts = false;
input bool EnablePushAlerts = false;
input bool EnableArrowAlerts = false;
input bool EnableRedYellowCrossAlert = true; // EnableRedYellowCrossAlert: yellow/red lines alerts.
input bool EnableHookAlert = false; // EnableHookAlert: Enable green line hook alerts.
input bool EnableGreenRedCrossAlert = false; // EnableGreenRedCrossAlert: green/red lines alerts.
input bool EnableYellowGreenCrossAlert = false; // EnableYellowGreenCrossAlert: yellow/green lines alerts.
input enum_candle_to_check TriggerCandle = Previous;
input string ____Arrows = "";
input color RedYellowCrossArrowBullishColor = clrGreen;
input color RedYellowCrossArrowBearishColor = clrRed;
input color HookArrowBullishColor = clrGreen;
input color HookArrowBearishColor = clrRed;
input color GreenRedCrossArrowBullishColor = clrGreen;
input color GreenRedCrossArrowBearishColor = clrRed;
input color YellowGreenCrossArrowBullishColor = clrGreen;
input color YellowGreenCrossArrowBearishColor = clrRed;
input uchar RedYellowCrossArrowBullishCode = 233;
input uchar RedYellowCrossArrowBearishCode = 234;
input uchar HookArrowBullishCode = 71;
input uchar HookArrowBearishCode = 72;
input uchar GreenRedCrossArrowBullishCode = 200;
input uchar GreenRedCrossArrowBearishCode = 201;
input uchar YellowGreenCrossArrowBullishCode = 226;
input uchar YellowGreenCrossArrowBearishCode = 225;
input int ArrowSize = 1;
input string ArrowPrefix = "TDI-";

double RSIBuf[], UpZone[], MdZone[], DnZone[], MaBuf[], MbBuf[];
double _RSIBuf[], _UpZone[], _MdZone[], _DnZone[], _MaBuf[], _MbBuf[]; // For upper timeframe data.

datetime AlertPlayed = 0, HookAlertPlayed = 0, RedGreenAlertPlayed = 0, YellowGreenAlertPlayed = 0;

int OnInit()
{
      // код доступен только после оплаты
   }

void OnDeinit(const int reason)
{
    ObjectsDeleteAll(ChartID(), ArrowPrefix, 0, OBJ_ARROW);
}

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[]
               )
{
      // код доступен только после оплаты
   }
    int counted_bars = IndicatorCounted();
    if (counted_bars > 0) counted_bars--;
    int limit = Bars - 1 - counted_bars;
    if (PeriodSeconds(UpperTimeframe) == PeriodSeconds(Period()))
    {
        if (FillIndicatorBuffers((ENUM_TIMEFRAMES)Period(), limit, RSIBuf, UpZone, DnZone, MdZone, MaBuf, MbBuf) < 0) return 0; // Bad value returned. Data not yet ready. Recalculate everything.
    }
    else
    {
        static int upper_prev_counted = 0;
        if (upper_prev_counted > 0) upper_prev_counted--;
        int upper_limit = iBars(Symbol(), UpperTimeframe) - 1 - upper_prev_counted;
        if (upper_limit > Bars - Volatility_Band) upper_limit = Bars - Volatility_Band; // Buffers cannot hold more than the current period's bars worth of data!
        upper_prev_counted = FillIndicatorBuffers(UpperTimeframe, upper_limit, _RSIBuf, _UpZone, _DnZone, _MdZone, _MaBuf, _MbBuf);
        if (upper_prev_counted < -1) return 0; // Bad value returned. Data not yet ready. Recalculate everything.
        for (int i = 0, j = 0; Time[i] >= iTime(Symbol(), UpperTimeframe, upper_limit); i++)
        {
            while ((iTime(Symbol(), UpperTimeframe, j) > Time[i]) && (j < iBars(Symbol(), UpperTimeframe))) j++;
            if (j >= iBars(Symbol(), UpperTimeframe)) break;
            RSIBuf[i] = _RSIBuf[j];
            UpZone[i] = _UpZone[j];
            DnZone[i] = _DnZone[j];
            MdZone[i] = _MdZone[j];
            MaBuf[i] = _MaBuf[j];
            MbBuf[i] = _MbBuf[j];
            if (i + 1 == Bars) break;
        }
    }

    if (EnableRedYellowCrossAlert)
    {
        if ((MbBuf[TriggerCandle] > MdZone[TriggerCandle]) && (MbBuf[TriggerCandle + 1] <= MdZone[TriggerCandle + 1]) && (AlertPlayed != Time[0]))
        {
            if (EnableNativeAlerts) Alert(_Symbol + " @ " + TimeframeToString((ENUM_TIMEFRAMES)_Period) + " - Bullish cross");
            if (EnableEmailAlerts)
            {
                RefreshRates();
                SendMail("TDI Alert: BUY " + _Symbol + " @ " + TimeframeToString((ENUM_TIMEFRAMES)_Period), "Current rate = " + DoubleToString(Bid, _Digits) + "/" + DoubleToString(Ask, _Digits) + "\nIndicator buffers:\nVB High = " + DoubleToString(UpZone[TriggerCandle], 1) + "\nMarket Base Line = " + DoubleToString(MdZone[TriggerCandle], 1) + "\nVB Low = " + DoubleToString(DnZone[TriggerCandle], 1) + "\nRSI Price Line = " + DoubleToString(MaBuf[TriggerCandle], 1) + "\nTrade Signal Line = " + DoubleToString(MbBuf[TriggerCandle], 1));
            }
            if (EnablePushAlerts) SendNotification("TDI Alert: BUY " + _Symbol + " @ " + TimeframeToString((ENUM_TIMEFRAMES)_Period));
            AlertPlayed = Time[0];
        }
        if ((MbBuf[TriggerCandle] < MdZone[TriggerCandle]) && (MbBuf[TriggerCandle + 1] >= MdZone[TriggerCandle + 1]) && (AlertPlayed != Time[0]))
        {
            if (EnableNativeAlerts) Alert(_Symbol + " @ " + TimeframeToString((ENUM_TIMEFRAMES)_Period) + " - Bearish cross");
            if (EnableEmailAlerts)
            {
                RefreshRates();
                SendMail("TDI Alert: SELL " + _Symbol + " @ " + TimeframeToString((ENUM_TIMEFRAMES)_Period), "Current rate = " + DoubleToString(Bid, _Digits) + "/" + DoubleToString(Ask, _Digits) + "\nIndicator buffers:\nVB High = " + DoubleToString(UpZone[TriggerCandle], 1) + "\nMarket Base Line = " + DoubleToString(MdZone[TriggerCandle], 1) + "\nVB Low = " + DoubleToString(DnZone[TriggerCandle], 1) + "\nRSI Price Line = " + DoubleToString(MaBuf[TriggerCandle], 1) + "\nTrade Signal Line = " + DoubleToString(MbBuf[TriggerCandle], 1));
            }
            if (EnablePushAlerts) SendNotification("TDI Alert: SELL " + _Symbol + " @ " + TimeframeToString((ENUM_TIMEFRAMES)_Period));
            AlertPlayed = Time[0];
        }
    }

    if (EnableHookAlert)
    {

        if ((MaBuf[TriggerCandle] < UpZone[TriggerCandle]) && (MaBuf[TriggerCandle + 1] >= UpZone[TriggerCandle + 1]) && ((MaBuf[TriggerCandle] > 68) || (MaBuf[TriggerCandle + 1] > 68)) && ((UpZone[TriggerCandle] > 68) || (UpZone[TriggerCandle + 1] > 68)) && (HookAlertPlayed != Time[0]))
        {
            if (EnableNativeAlerts) Alert(_Symbol + " @ " + TimeframeToString((ENUM_TIMEFRAMES)_Period) + " - Bearish Hook");
            if (EnableEmailAlerts)
            {
                RefreshRates();
                SendMail("TDI Hook Alert: SELL " + _Symbol + " @ " + TimeframeToString((ENUM_TIMEFRAMES)_Period), "Current rate = " + DoubleToString(Bid, _Digits) + "/" + DoubleToString(Ask, _Digits) + "\nIndicator buffers:\nVB High = " + DoubleToString(UpZone[TriggerCandle], 1) + "\nMarket Base Line = " + DoubleToString(MdZone[TriggerCandle], 1) + "\nVB Low = " + DoubleToString(DnZone[TriggerCandle], 1) + "\nRSI Price Line = " + DoubleToString(MaBuf[TriggerCandle], 1) + "\nTrade Signal Line = " + DoubleToString(MbBuf[TriggerCandle], 1));
            }
            if (EnablePushAlerts) SendNotification("TDI Hook Alert: SELL " + _Symbol + " @ " + TimeframeToString((ENUM_TIMEFRAMES)_Period));
            HookAlertPlayed = Time[0];
        }

        else if ((MaBuf[TriggerCandle] > DnZone[TriggerCandle]) && (MaBuf[TriggerCandle + 1] <= DnZone[TriggerCandle + 1]) && ((MaBuf[TriggerCandle] < 32) || (MaBuf[TriggerCandle + 1] < 32)) && ((DnZone[TriggerCandle] < 32) || (DnZone[TriggerCandle + 1] < 32)) && (HookAlertPlayed != Time[0]))
        {
            if (EnableNativeAlerts) Alert(_Symbol + " @ " + TimeframeToString((ENUM_TIMEFRAMES)_Period) + " - Bullish Hook");
            if (EnableEmailAlerts)
            {
                RefreshRates();
                SendMail("TDI Hook Alert: BUY " + _Symbol + " @ " + TimeframeToString((ENUM_TIMEFRAMES)_Period), "Current rate = " + DoubleToString(Bid, _Digits) + "/" + DoubleToString(Ask, _Digits) + "\nIndicator buffers:\nVB High = " + DoubleToString(UpZone[TriggerCandle], 1) + "\nMarket Base Line = " + DoubleToString(MdZone[TriggerCandle], 1) + "\nVB Low = " + DoubleToString(DnZone[TriggerCandle], 1) + "\nRSI Price Line = " + DoubleToString(MaBuf[TriggerCandle], 1) + "\nTrade Signal Line = " + DoubleToString(MbBuf[TriggerCandle], 1));
            }
            if (EnablePushAlerts) Se

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

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

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

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

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

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

Стоимость полного кода
1 778,40₽ ≈ $21.74