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

Madrimov RP

madrimovribbonpullback.mq5

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

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Стрелки Buy/Sell появляются на графике при совпадении разлома структуры с откатом к ленте и подтверждении тренда на старшем таймфрейме. Индикатор может отображать уровни Take Profit и Stop Loss, рассчитанные по множителям ATR, с возможностью подтверждения по закрытой свече.

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

НастройкаОписание
MA1 Period (fast anchor) (i_ma1) Период MA1 (быстрая якорная) — Период быстрой скользящей средней, используемой как верхняя граница ленты
MA2 Period (i_ma2) Период MA2 — Период второй скользящей средней в ленте
MA3 Period (i_ma3) Период MA3 — Период третьей скользящей средней в ленте
MA4 Period (slow anchor) (i_ma4) Период MA4 (медленная якорная) — Период медленной скользящей средней, используемой как нижняя граница ленты
Exponential MA (false = SMA) (i_exp) Экспоненциальная MA — Включает расчёт экспоненциальной MA; при выключении используется простая MA
Show Ribbon (i_showRib) Показать ленту — Отображение линий скользящих средних на графике
Slope Lookback (bars) (i_slopeLen) Длина наклона (баров) — Количество баров для расчёта наклона ленты
Slope Sensitivity (i_slopeMult) Чувствительность наклона — Множитель чувствительности наклона ленты относительно ATR
Separation Sensitivity (i_sepMult) Чувствительность разделения — Множитель минимального разделения между MA1 и MA4 относительно ATR
Show CHoCH / BOS labels (i_showInt) Показать метки CHoCH / BOS — Отображение структурных меток Change of Character и Break of Structure
Pivot swing length (i_pivotLen) Длина разворота — Длина свинг-периода для определения пивотов
Require closed candle confirmation (i_confirm) Требовать подтверждение закрытой свечи — Сигналы формируются только по закрытым свечам
Show Buy / Sell arrows (i_showSig) Показать стрелки Buy / Sell — Отображение стрелок сигналов на графике
Show TP / SL levels (i_showTP) Показать уровни TP / SL — Отображение уровней Take Profit и Stop Loss
TP/SL line length (bars) (i_lineLen) Длина линий TP/SL (баров) — Длина горизонтальных линий TP/SL в барах
ATR Length (i_atrLen) Период ATR — Период расчёта Average True Range
TP1 ATR Multiplier (i_tp1Mult) Множитель TP1 ATR — Множитель ATR для расчёта первого уровня Take Profit
TP2 ATR Multiplier (i_tp2Mult) Множитель TP2 ATR — Множитель ATR для расчёта второго уровня Take Profit
SL ATR Multiplier (i_slMult) Множитель SL ATR — Множитель ATR для расчёта уровня Stop Loss
Получить полный код

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

#property version     "2.10"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots   4

#property indicator_label1  "MA1 (fast)"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrGray
#property indicator_width1  2

#property indicator_label2  "MA2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrGray
#property indicator_width2  1

#property indicator_label3  "MA3"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrYellow
#property indicator_width3  1

#property indicator_label4  "MA4 (slow)"
#property indicator_type4   DRAW_LINE
#property indicator_color4  clrWhite
#property indicator_width4  2

input group              "═══ Ribbon MA Periods ═══"
input int    i_ma1       = 5;    // MA1 Period (fast anchor)
input int    i_ma2       = 13;    // MA2 Period
input int    i_ma3       = 50;    // MA3 Period
input int    i_ma4       = 200;    // MA4 Period (slow anchor)
input bool   i_exp       = true;  // Exponential MA (false = SMA)
input bool   i_showRib   = true;  // Show Ribbon

input group              "═══ Ribbon Filter ═══"
input int    i_slopeLen  = 5;     // Slope Lookback (bars)
input double i_slopeMult = 0.05;  // Slope Sensitivity
input double i_sepMult   = 0.15;  // Separation Sensitivity

input group              "═══ Structure Settings ═══"
input bool   i_showInt   = true;  // Show CHoCH / BOS labels
input int    i_pivotLen  = 5;     // Pivot swing length

input group              "═══ Entry Settings ═══"
input bool   i_confirm   = true;  // Require closed candle confirmation
input bool   i_showSig   = true;  // Show Buy / Sell arrows
input bool   i_showTP    = true;  // Show TP / SL levels
input int    i_lineLen   = 100;   // TP/SL line length (bars)

input group              "═══ Risk Management ═══"
input int    i_atrLen    = 14;    // ATR Length
input double i_tp1Mult   = 2.0;  // TP1 ATR Multiplier
input double i_tp2Mult   = 4.0;  // TP2 ATR Multiplier
input double i_slMult    = 1.5;  // SL ATR Multiplier

double Buf_MA1[], Buf_MA2[], Buf_MA3[], Buf_MA4[];

color C_BULL  = (color)0x6B8F7A;
color C_BEAR  = (color)0x2F2A25;

double intHighLevel   = EMPTY_VALUE;
double intLowLevel    = EMPTY_VALUE;
bool   intHighCrossed = false;
bool   intLowCrossed  = false;
int    intHighBar     = -1;
int    intLowBar      = -1;
int    intTrend       = 0;   //  0=none  1=bull  -1=bear
int    iLeg           = -1;  //  0=highSwing  1=lowSwing

double lastEntry = EMPTY_VALUE;
double lastTP1   = EMPTY_VALUE;
double lastTP2   = EMPTY_VALUE;
double lastSL    = EMPTY_VALUE;
int    sigDir    = 0;

int    objCount  = 0;
string tp1LineName = "", tp2LineName = "", entLineName = "", slLineName = "";

ENUM_TIMEFRAMES GetHTF()
{
   int s = PeriodSeconds();
   if(s <= 300)   return PERIOD_H1;
   if(s <= 1800)  return PERIOD_H4;
   if(s <= 14400) return PERIOD_D1;
   return PERIOD_W1;
}

string ObjName(string prefix)
{
   return prefix + "_" + IntegerToString(objCount++);
}

string TimeframeName(int tf)
{
   switch(tf)
   {
      case PERIOD_M1:  return "M1";   case PERIOD_M5:  return "M5";
      case PERIOD_M15: return "M15";  case PERIOD_M30: return "M30";
      case PERIOD_H1:  return "H1";   case PERIOD_H4:  return "H4";
      case PERIOD_D1:  return "D1";   case PERIOD_W1:  return "W1";
      case PERIOD_MN1: return "MN";
      default:         return IntegerToString(tf);
   }
}

double CalcMA(const double &src[], int shift, int len, bool useEMA)
{
   if(useEMA)
   {
      double k   = 2.0 / (len + 1);
      double ema = src[shift + len - 1];
      for(int i = len - 2; i >= 0; i--)
         ema = src[shift + i] * k + ema * (1.0 - k);
      return ema;
   }
   double sum = 0;
   for(int i = 0; i < len; i++) sum += src[shift + i];
   return sum / len;
}

double CalcATR(const double &h[], const double &l[], const double &c[], int shift, int len)
{
   double sum = 0;
   for(int i = 0; i < len; i++)
   {
      double hl  = h[shift+i] - l[shift+i];
      double hpc = MathAbs(h[shift+i] - c[shift+i+1]);
      double lpc = MathAbs(l[shift+i] - c[shift+i+1]);
      sum += MathMax(hl, MathMax(hpc, lpc));
   }
   return sum / len;
}

double Highest(const double &a[], int shift, int len)
{
   double v = a[shift];
   for(int i = 1; i < len; i++) if(a[shift+i] > v) v = a[shift+i];
   return v;
}

double Lowest(const double &a[], int shift, int len)
{
   double v = a[shift];
   for(int i = 1; i < len; i++) if(a[shift+i] < v) v = a[shift+i];
   return v;
}

void DrawSegment(string name, datetime t1, datetime t2, double price,
                 color clr, ENUM_LINE_STYLE style, int width)
{
   if(ObjectFind(0, name) >= 0) ObjectDelete(0, name);
   ObjectCreate(0, name, OBJ_TREND, 0, t1, price, t2, price);
   ObjectSetInteger(0, name, OBJPROP_COLOR,     clr);
   ObjectSetInteger(0, name, OBJPROP_STYLE,     style);
   ObjectSetInteger(0, name, OBJPROP_WIDTH,     width);
   ObjectSetInteger(0, name, OBJPROP_RAY_RIGHT, false);
   ObjectSetInteger(0, name, OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0, name, OBJPROP_HIDDEN,    true);
}

void DrawText(string name, datetime t, double price, string txt,
              color clr, int fontSize = 8)
{
   if(ObjectFind(0, name) >= 0) ObjectDelete(0, name);
   ObjectCreate(0, name, OBJ_TEXT, 0, t, price);
   ObjectSetString(0,  name, OBJPROP_TEXT,      txt);
   ObjectSetInteger(0, name, OBJPROP_COLOR,     clr);
   ObjectSetInteger(0, name, OBJPROP_FONTSIZE,  fontSize);
   ObjectSetString(0,  name, OBJPROP_FONT,      "Arial Bold");
   ObjectSetInteger(0, name, OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0, name, OBJPROP_HIDDEN,    true);
}

void DrawArrow(string name, datetime t, double price, bool up, color clr)
{
   if(ObjectFind(0, name) >= 0) ObjectDelete(0, name);
   ENUM_OBJECT arrowType = up ? OBJ_ARROW_UP : OBJ_ARROW_DOWN;
   ObjectCreate(0, name, arrowType, 0, t, price);
   ObjectSetInteger(0, name, OBJPROP_COLOR,     clr);
   ObjectSetInteger(0, name, OBJPROP_WIDTH,     3);
   ObjectSetInteger(0, name, OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0, name, OBJPROP_HIDDEN,    true);
}

void SafeDelete(string &name)
{
   if(name != "" && ObjectFind(0, name) >= 0)
      ObjectDelete(0, name);
   name = "";
}

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

void OnDeinit(const int reason)
{
   ObjectsDeleteAll(0, "MRP_");
   Comment("");
}

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 minBars = i_ma4 + i_atrLen + i_slopeLen + i_pivotLen * 2 + 10;
   if(rates_total < minBars) return 0;

   ArraySetAsSeries(time,  true);
   ArraySetAsSeries(high,  true);
   ArraySetAsSeries(low,   true);
   ArraySetAsSeries(close, true);
   ArraySetAsSeries(open,  true);

   if(prev_calculated <= 0)
   {
      intHighLevel = EMPTY_VALUE; intLowLevel  = EMPTY_VALUE;
      intHighCrossed = false;     intLowCrossed = false;
      intHighBar   = -1;          intLowBar    = -1;
      intTrend     = 0;           iLeg         = -1;
      sigDir       = 0;
      lastEntry = lastTP1 = lastTP2 = lastSL = EMPTY_VALUE;
      tp1LineName = tp2LineName = entLineName = slLineName = "";
      ObjectsDeleteAll(0, "MRP_");
      objCount = 0;
   }

   ENUM_TIMEFRAMES htfTF = GetHTF();
   bool htfBullish = false, htfBearish = false;
   {
      double htfClose[];
      if(CopyClose(_Symbol, htfTF, 0, i_ma4 * 3, htfClose) >= i_ma4)
      {
         ArraySetAsSeries(htfClose, true);

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

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

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

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

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

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

Стоимость полного кода
1 220,50₽ ≈ $14.92