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

Monster Arrows V2

monster arrows mt5 source code @fundedmillionairess.mq5
Вы автор или правообладатель?

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

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

О программе

Monster Arrows V2 — индикатор для MetaTrader 5, отображающий стрелки покупок и продаж на графике ценовых свечей. Он объединяет несколько аналитических компонентов: фильтр по старшему таймфрейму на основе EMA и системы SuperTrend, обнаружение ликвидностных сэпов и зон справедливой стоимости (FVG), а также уровни Fibonacci и ZigZag-пивоты. Индикатор рисует линии входа, стоп-лосса и трёх уровней тейк-профита, привязанные к свече сигнала, и предоставляет информационную панель с текущим состоянием фильтров и последним сигналом.

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

НастройкаОписание
Enable Higher Timeframe Confluence Filter (EnableHTFFilter) Фильтр старшего таймфрейма — Включает или выключает фильтрацию сигналов по направлению на более высоком таймфрейме.
Require BOTH HTF confirmations (Strict Mode) (RequireBothHTF) Требовать оба подтверждения HTF — При включении оба фильтра старшего таймфрейма (EMA и SuperTrend) должны совпасть для формирования сигнала.
Bars to wait to confirm signal (Non-Repaint) (BarsToConfirm) Баров для подтверждения сигнала — Количество баров ожидания перед подтверждением сигнала, предотвращающее перерисовку.
HTF EMA Period (HTF_EMAPeriod) Период EMA старшего таймфрейма — Период скользящей средней EMA, используемой для определения направления на старшем таймфрейме.
SuperTrend RMA 1 Length (ST_RMA1Length) Длина RMA 1 SuperTrend — Период первой RMA-линии в системе SuperTrend на старшем таймфрейме.
SuperTrend RMA 2 Length (ST_RMA2Length) Длина RMA 2 SuperTrend — Период второй RMA-линии в системе SuperTrend на старшем таймфрейме.
SuperTrend ATR Period (ST_ATRPeriod) Период ATR SuperTrend — Период ATR, используемый для расчёта полос SuperTrend на старшем таймфрейме.
SuperTrend ATR Multiplier (ST_ATRMult) Множитель ATR SuperTrend — Множитель ATR для расширения или сужения полос SuperTrend.
Liquidity Sweep (Stop Hunt) (UseLiquiditySweep) Обнаружение сэпов ликвидности — Включает распознавание ситуаций, когда цена пробивает уровень стоп-лоссов и возвращается.
Fair Value Gap (Displacement) (UseFairValueGap) Обнаружение зон справедливой стоимости — Включает выявление разрывов цены (FVG) как потенциальных зон разворота.
Show SMC Lines & Boxes (ShowSMCLines) Показывать линии и блоки SMC — Отображает линии сэпов и заливку зон FVG на графике.
FVG Box color for Buy (FVGBoxColorBuy) Цвет блока FVG для покупки — Цвет заливки прямоугольника зоны справедливой стоимости при сигнале на покупку.
FVG Box color for Sell (FVGBoxColorSell) Цвет блока FVG для продажи — Цвет заливки прямоугольника зоны справедливой стоимости при сигнале на продажу.
Hunt line color for Buy (HuntLineColorBuy) Цвет линии сэпа для покупки — Цвет горизонтальной линии уровня сэпа при сигнале на покупку.
Hunt line color for Sell (HuntLineColorSell) Цвет линии сэпа для продажи — Цвет горизонтальной линии уровня сэпа при сигнале на продажу.
ZigZag Depth (ZZDepth) Глубина ZigZag — Минимальное количество баров между пивотами ZigZag для определения значимых уровней.
ZigZag Deviation (ZZDeviation) Отклонение ZigZag — Минимальное отклонение цены для признания нового пивота ZigZag.
ZigZag Backstep (ZZBackstep) Шаг назад ZigZag — Минимальное количество баров между соседними пивотами одного направления.
Fibonacci Retracement Level (FibLevel) Уровень Фибоначчи — Уровень ретреймента Фибоначчи для определения зон поддержки и сопротивления.
Number of historical bars to analyze (HistBars) Баров для анализа — Количество исторических баров, анализируемых индикатором для поиска сигналов.
Show Daily ATR Lines (ShowDailyATR) Показывать дневные линии ATR — Отображает горизонтальные линии верхней и нижней границы дневного ATR.
ATR Period (ATRPeriod) Период ATR — Период расчёта индикатора Average True Range.
Daily ATR High Color (ATRHighColor) Цвет верхней дневной ATR линии — Цвет линии верхней границы дневного ATR.
Daily ATR Low Color (ATRLowColor) Цвет нижней дневной ATR линии — Цвет линии нижней границы дневного ATR.
Daily ATR Line Style (ATRLineStyle) Стиль дневной ATR линии — Стиль отрисовки линий дневного ATR (сплошной, пунктир и т.д.).
Show Weekly ATR Lines (ShowWeeklyATR) Показывать недельные линии ATR — Отображает горизонтальные линии верхней и нижней границы недельного ATR.
Weekly ATR High Color (WkATRHighColor) Цвет верхней недельной ATR линии — Цвет линии верхней границы недельного ATR.
Weekly ATR Low Color (WkATRLowColor) Цвет нижней недельной ATR линии — Цвет линии нижней границы недельного ATR.
Weekly ATR Line Style (WkATRLineStyle) Стиль недельной ATR линии — Стиль отрисовки линий недельного ATR.
Draw TP/SL Lines for signal (DrawTPLines) Рисовать линии TP/SL — Включает отрисовку линий входа, стоп-лосса и трёх уровней тейк-профита от сигнальной свечи.
Entry Price Reference Candle (EntryCandle) Свеча отсчёта входа — Выбирает свечу, по цене которой определяется точка входа: свеча сэпа, первая или вторая подтверждения.
Entry line color (EntryColor) Цвет линии входа — Цвет горизонтальной линии цены входа.
Stop Loss line color (SLColor) Цвет линии стоп-лосса — Цвет горизонтальной линии стоп-лосса.
TP1 line color (TP1Color) Цвет линии TP1 — Цвет горизонтальной линии первого уровня тейк-профита.
TP2 line color (TP2Color) Цвет линии TP2 — Цвет горизонтальной линии второго уровня тейк-профита.
TP3 line color (TP3Color) Цвет линии TP3 — Цвет горизонтальной линии третьего уровня тейк-профита.
Line width (LevelWidth) Толщина линий — Толщина линий уровней входа, стоп-лосса и тейк-профита.
Line style (LevelStyle) Стиль линий уровней — Стиль отрисовки линий уровней (сплошной, пунктир и т.д.).
SL distance (ATR multiplier) (SL_ATR_Mult) Множитель ATR для стоп-лосса — Множитель ATR для расчёта расстояния стоп-лосса от точки входа.
TP1 distance (ATR multiplier) (TP1_ATR_Mult) Множитель ATR для TP1 — Множитель ATR для расчёта расстояния первого тейк-профита от точки входа.
TP2 distance (ATR multiplier) (TP2_ATR_Mult) Множитель ATR для TP2 — Множитель ATR для расчёта расстояния второго тейк-профита от точки входа.
TP3 distance (ATR multiplier) (TP3_ATR_Mult) Множитель ATR для TP3 — Множитель ATR для расчёта расстояния третьего тейк-профита от точки входа.
Show Info Panel (ShowPanel) Показывать информационную панель — Включает или выключает отображение дашборда с текущим состоянием фильтров и последним сигналом.
Horizontal position (PanelX) Позиция панели по горизонтали — Горизонтальное смещение информационной панели в пикселях от левого края графика.
Vertical position (PanelY) Позиция панели по вертикали — Вертикальное смещение информационной панели в пикселях от верхнего края графика.
Title color (DashTitleColor) Цвет заголовка панели — Цвет заголовка информационной панели.
Text color (DashTextColor) Цвет текста панели — Цвет текстовых меток информационной панели.
Master Alert Switch (MasterAlert) Главный переключатель оповещений — Включает или выключает систему оповещений индикатора.
Popup Alert (DoPopup) Всплывающее оповещение — Отображает всплывающее уведомление при формировании сигнала.
Sound Alert (DoSound) Звуковое оповещение — Воспроизводит звуковой файл при формировании сигнала.
Email Alert (DoEmail) Email-оповещение — Отправляет email-сообщение при формировании сигнала.
Mobile Push Notification (DoPush) Мобильное push-уведомление — Отправляет push-уведомление на мобильное устройство при формировании сигнала.
Sound file (AlertSound) Файл звука оповещения — Имя звукового файла для воспроизведения при срабатывании оповещения.
Seconds between alerts (AlertCooldown) Задержка между оповещениями — Минимальный интервал в секундах между последовательными оповещениями.
Arrow size (1-5) (ArrowSize) Размер стрелок — Размер стрелок сигналов покупки и продажи на графике.
Buy arrow color (BuyArrowColor) Цвет стрелки покупки — Цвет стрелки, обозначающей сигнал на покупку.
Sell arrow color (SellArrowColor) Цвет стрелки продажи — Цвет стрелки, обозначающей сигнал на продажу.
Arrow distance from candle (points) (ArrowGap) Отступ стрелки от свечи — Расстояние в пунктах между ценовой свечой и стрелкой сигнала.
Buy arrow symbol code (BuyArrowCode) Код символа стрелки покупки — Код графического символа стрелки для сигнала покупки.
Sell arrow symbol code (SellArrowCode) Код символа стрелки продажи — Код графического символа стрелки для сигнала продажи.
Bars to scan for missed signals (RecentBars) Баров для поиска пропущенных сигналов — Количество недавних баров, которые пересматриваются при пересчёте для обнаружения пропущенных сигналов.
Получить полный код

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

#property version     "2.0"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2

#property indicator_label1  "Buy Signal"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrLime
#property indicator_style1  STYLE_SOLID
#property indicator_width1  4

#property indicator_label2  "Sell Signal"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrRed
#property indicator_style2  STYLE_SOLID
#property indicator_width2  4

input group "=== FILTERS & CONFIRMATION ==="
input bool   EnableHTFFilter     = true;  // Enable Higher Timeframe Confluence Filter
input bool   RequireBothHTF      = true;  // Require BOTH HTF confirmations (Strict Mode)
input int    BarsToConfirm       = 2;     // Bars to wait to confirm signal (Non-Repaint)
input int    HTF_EMAPeriod       = 20;    // HTF EMA Period
input int    ST_RMA1Length       = 14;    // SuperTrend RMA 1 Length
input int    ST_RMA2Length       = 21;    // SuperTrend RMA 2 Length
input int    ST_ATRPeriod        = 14;    // SuperTrend ATR Period
input double ST_ATRMult          = 1.0;   // SuperTrend ATR Multiplier

input group "=== SMART MONEY CONCEPTS (SMC) ==="
input bool   UseLiquiditySweep   = true;          // Liquidity Sweep (Stop Hunt)
input bool   UseFairValueGap     = true;          // Fair Value Gap (Displacement)
input bool   ShowSMCLines        = true;          // Show SMC Lines & Boxes
input color  FVGBoxColorBuy      = clrDarkGreen;  // FVG Box color for Buy
input color  FVGBoxColorSell     = clrDarkRed;    // FVG Box color for Sell
input color  HuntLineColorBuy    = clrAqua;       // Hunt line color for Buy
input color  HuntLineColorSell   = clrMagenta;    // Hunt line color for Sell

input group "=== ZIGZAG SETTINGS ==="
input int    ZZDepth             = 30;    // ZigZag Depth
input int    ZZDeviation         = 5;     // ZigZag Deviation
input int    ZZBackstep          = 3;     // ZigZag Backstep
input double FibLevel            = 0.618; // Fibonacci Retracement Level
input int    HistBars            = 1000;  // Number of historical bars to analyze

input group "=== DAILY ATR TARGETS ==="
input bool             ShowDailyATR  = true;       // Show Daily ATR Lines
input int              ATRPeriod     = 14;          // ATR Period
input color            ATRHighColor  = clrAqua;     // Daily ATR High Color
input color            ATRLowColor   = clrMagenta;  // Daily ATR Low Color
input ENUM_LINE_STYLE  ATRLineStyle  = STYLE_DASH;  // Daily ATR Line Style

input group "=== WEEKLY ATR TARGETS ==="
input bool             ShowWeeklyATR   = true;          // Show Weekly ATR Lines
input color            WkATRHighColor  = clrDodgerBlue; // Weekly ATR High Color
input color            WkATRLowColor   = clrOrange;     // Weekly ATR Low Color
input ENUM_LINE_STYLE  WkATRLineStyle  = STYLE_DASH;    // Weekly ATR Line Style

enum ENUM_ENTRY_REF
{
   CANDLE_A = 0,  // Candle A — Sweep candle close
   CANDLE_B = 1,  // Candle B — 1st confirmation candle close
   CANDLE_C = 2   // Candle C — 2nd confirmation candle close
};

input group "=== AUTO TP SETTINGS ==="
input bool             DrawTPLines   = true;        // Draw TP/SL Lines for signal
input ENUM_ENTRY_REF   EntryCandle   = CANDLE_A;    // Entry Price Reference Candle
input color            EntryColor    = clrYellow;   // Entry line color
input color            SLColor       = clrCrimson;  // Stop Loss line color
input color            TP1Color      = clrLime;     // TP1 line color
input color            TP2Color      = clrOrange;   // TP2 line color
input color            TP3Color      = clrRed;      // TP3 line color
input int              LevelWidth    = 2;            // Line width
input ENUM_LINE_STYLE  LevelStyle    = STYLE_DASH;  // Line style
input double           SL_ATR_Mult   = 1.5;         // SL distance (ATR multiplier)
input double           TP1_ATR_Mult  = 1.5;         // TP1 distance (ATR multiplier)
input double           TP2_ATR_Mult  = 3.0;         // TP2 distance (ATR multiplier)
input double           TP3_ATR_Mult  = 6.0;         // TP3 distance (ATR multiplier)

input group "=== DASHBOARD & ALERTS ==="
input bool   ShowPanel      = true;         // Show Info Panel
input int    PanelX         = 20;           // Horizontal position
input int    PanelY         = 20;           // Vertical position
input color  DashTitleColor = clrGold;      // Title color
input color  DashTextColor  = clrWhite;     // Text color
input bool   MasterAlert    = false;         // Master Alert Switch
input bool   DoPopup        = false;         // Popup Alert
input bool   DoSound        = false;         // Sound Alert
input bool   DoEmail        = false;        // Email Alert
input bool   DoPush         = false;         // Mobile Push Notification
input string AlertSound     = "alert2.wav"; // Sound file
input int    AlertCooldown  = 60;           // Seconds between alerts

input group "=== ARROW VISUALS ==="
input int    ArrowSize      = 4;     // Arrow size (1-5)
input color  BuyArrowColor  = clrLime; // Buy arrow color
input color  SellArrowColor = clrRed;  // Sell arrow color
input int    ArrowGap       = 15;    // Arrow distance from candle (points)
input int    BuyArrowCode   = 233;   // Buy arrow symbol code
input int    SellArrowCode  = 234;   // Sell arrow symbol code

input group "=== MISC SETTINGS ==="
input int    RecentBars     = 50;    // Bars to scan for missed signals

double BuyBuf[];
double SellBuf[];

double TriggerBuf[]; // not a plot buffer, just internal tracking

int hATR       = INVALID_HANDLE;
int hATRDaily  = INVALID_HANDLE;
int hATRWeekly = INVALID_HANDLE;  // Weekly ATR
int hHTF_EMA   = INVALID_HANDLE;
int hHTF_ATR   = INVALID_HANDLE;

double g_ST_rma1_hlc3v = 0, g_ST_rma1_vol = 0;
double g_ST_rma2_hlc3v = 0, g_ST_rma2_vol = 0;
bool   g_ST_initialized = false;
double g_ST_trendDir    = 1.0;   // last known SuperTrend direction on HTF

datetime g_LastAlert = 0;

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

ENUM_TIMEFRAMES GetHTF(ENUM_TIMEFRAMES tf)
{
   switch(tf)
   {
      case PERIOD_M1:  return PERIOD_M15;
      case PERIOD_M5:  return PERIOD_H1;
      case PERIOD_M15: return PERIOD_H1;
      case PERIOD_M30: return PERIOD_H4;
      case PERIOD_H1:  return PERIOD_H4;
      case PERIOD_H4:  return PERIOD_D1;
      default:         return PERIOD_W1;
   }
}

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[])
{
      // код доступен только после оплаты
   }
   if(rates_total < ZZDepth + BarsToConfirm + 10)
      return 0;

   if(ArraySize(TriggerBuf) < rates_total)
   {
      ArrayResize(TriggerBuf, rates_total);
      ArrayInitialize(TriggerBuf, 0);
   }

   double atr[];
   ArrayResize(atr, rates_total);
   {
      double tmp[];
      ArraySetAsSeries(tmp, true);
      int copied = CopyBuffer(hATR, 0, 0, rates_total, tmp);
      if(copied <= 0) return prev_calculated;

      for(int k = 0; k < rates_total; k++)
         atr[k] = tmp[rates_total - 1 - k];
   }

   double dailyATR = 0;
   {
      double tmp[];
      ArraySetAsSeries(tmp, true);
      if(CopyBuffer(hATRDaily, 0, 0, 1, tmp) > 0)
         dailyATR = tmp[0];
   }

   if(ShowDailyATR && dailyATR > 0)
   {
      double   dayOpen = iOpen (_Symbol, PERIOD_D1, 0);
      datetime dayTime = iTime (_Symbol, PERIOD_D1, 0);
      SetLevelLine("MA_ATR_High", dayTime, dayOpen + dailyATR, ATRHighColor, ATRLineStyle, 1);
      SetLevelLine("MA_ATR_Low",  dayTime, dayOpen - dailyATR, ATRLowColor,  ATRLineStyle, 1);

      datetime tLabel = time[rates_total-1] + (datetime)(PeriodSeconds(_Period) * 3);
      DrawLineLabel("MA_ATR_Lbl_High", tLabel, dayOpen + dailyATR, ATRHighColor, "  D-ATR High");
      DrawLineLabel("MA_ATR_Lbl_Low",  tLabel, dayOpen - dailyATR, ATRLowColor,  "  D-ATR Low");
   }

   double weeklyATR = 0;
   {
      double tmp[];
      ArraySetAsSeries(tmp, true);
      if(CopyBuffer(hATRWeekly, 0, 0, 1, tmp) > 0)
         weeklyATR = tmp[0];
   }

   if(ShowWeeklyATR && weeklyATR > 0)
   {
      double   weekOpen = iOpen (_Symbol, PERIOD_W1, 0);
      datetime weekTime = iTime (_Symbol, PERIOD_W1, 0);
      SetLevelLine("MA_WATR_High", weekTime, weekOpen + weeklyATR, WkATRHighColor, WkATRLineStyle, 1);
      SetLevelLine("MA_WATR_Low",  weekTime, weekOpen - weeklyATR, WkATRLowColor,  WkATRLineStyle, 1);

      datetime tLabel = time[rates_total-1] + (datetime)(PeriodSeconds(_Period) * 3);
      DrawLineLabel("MA_WATR_Lbl_High", tLabel, weekOpen + weeklyATR, WkATRHighColor, "  W-ATR High");
      DrawLineLabel("MA_WATR_Lbl_Low",  tLabel, weekOpen - weeklyATR, WkATRLowColor,  "  W-ATR Low");
   }

   bool htfBull = false, htfBear = false;
   bool ema20Bull = false, ema20Bear = false;
   bool stBull = false, stBear = false;
   if(EnableHTFFilter)
   {
      ENUM_TIMEFRAMES htfTF = GetHTF(_Period);

      {
         double emaBuf[];
         ArraySetAsSeries(emaBuf, true);
         double htfClose[];
         ArraySetAsSeries(htfClose, true);

         if(CopyBuffer(hHTF_EMA, 0, 0, 3, emaBuf) == 3 &&
            CopyClose(_Symbol, htfTF, 0, 3, htfClose) == 3)
         {
            ema20Bull = (htfClose[0] > emaBuf[0] && emaBuf[0] > emaBuf[1]);
            ema20Bear = (htfClose[0] < emaBuf[0] && emaBuf[0] < emaBuf[1]);
         }
      }

      {
         int htfBars = MathMax(ST_RMA1Length, ST_RMA2Length) + ST_ATRPeriod + 50;

         double htfHigh[], htfLow[], htfClose[], htfATR[], htfVol[];
         ArraySetAsSeries(htfHigh,  true);
         ArraySetAsSeries(htfLow,   true);
         ArraySetAsSeries(htfClose, true);
         ArraySetAsSeries(htfATR,   true);

         int copied = CopyHigh (_Symbol, htfTF, 0, htfBars, htfHigh);
         copied    += CopyLow  (_Symbol, htfTF, 0, htfBars, htfLow);
         copied    += CopyClose(_Symbol, htfTF, 0, htfBars, htfClose);
         copied    += CopyBuffer(hHTF_ATR, 0, 0, htfBars, htfATR);

         if(copied == htfBars * 4)
         {

            int n = htfBars;
            double rma1_hlc3v = 0, rma1_vol = 0;
            double rma2_hlc3v = 0, rma2_vol = 0;
            bool   rmaInit    = false;
            double prevTrend  = 1.0;
            double lastFlipDir = g_ST_trendDir;

            double finalRMA1 = 0, finalRMA2 = 0;

            for(int k = n - 1; k >= 0; k--)
            {
               double vol   = 1.0;
               double hlc3  = (htfHigh[k] + htfLow[k] + htfClose[k]) / 3.0;
               double hlc3v = hlc3 * vol;

               if(!rmaInit)
               {
                  rma1_hlc3v = hlc3v; rma1_vol = vol;
                  rma2_hlc3v = hlc3v; rma2_vol = vol;
                  rmaInit = true;
               }
               else
               {
                  rma1_hlc3v = (rma1_hlc3v * (ST_RMA1Length - 1) + hlc3v) / ST_RMA1Length;
                  rma1_vol   = (rma1_vol   * (ST_RMA1Length - 1) + vol)   / ST_RMA1Length;
                  rma2_hlc3v = (rma2_hlc3v * (ST_RMA2Length - 1) + hlc3v) / ST_RMA2Length;
                  rma2_vol   = (rma2_vol   * (ST_RMA2Length - 1) + vol)   / ST_RMA2Length;
               }

               double rma1val  = (rma1_vol != 0) ? rma1_hlc3v / rma1_vol : hlc3;
               double rma2val  = (rma2_vol != 0) ? rma2_hlc3v / rma2_vol : hlc3;
               double basis    = (rma1val + rma2val) / 2.0;
               double atrVal   = htfATR[k];
               double upper    = basis + ST_ATRMult * atrVal;
               double lower    = basis - ST_ATRMult * atrVal;

               double trendDir;
               if(htfClose[k] > upper)       trendDir =  1.0;
               else if(htfClose[k] < lower)  trendDir = -1.0;
               else                           trendDir = prevTrend;

               if(k < n - 1)
               {
                  bool bullFlip = (prevTrend == -1.0 && trendDir ==  1.0);
                  bool bearFlip = (prevTrend ==  1.0 && trendDir == -1.0);
                  if(bullFlip) lastFlipDir =  1.0;
                  if(bearFlip) lastFlipDir = -1.0;
               }

               prevTrend = trendDir;

               if(k == 0) { finalRMA1 = rma1val; finalRMA2 = rma2val; }
            }

            g_ST_trendDir = lastFlipDir;

            bool rma1AboveRMA2 = (finalRMA1 > finalRMA2);
            bool rma1BelowRMA2 = (finalRMA1 < finalRMA2);

            stBull = (lastFlipDir ==  1.0 && rma1AboveRMA2);
            stBear = (lastFlipDir == -1.0 && rma1BelowRMA2);
         }
      }

      htfBull = (ema20Bull && stBull);
      htfBear = (ema20Bear && stBear);
   }

   int startBar;
   if(prev_calculated <= 0)
      startBar = MathMax(ZZDepth + BarsToConfirm + 2, rates_total - HistBars);
   else
      startBar = MathMax(ZZDepth + BarsToConfirm + 2, prev_calculated - RecentBars - BarsToConfirm - 5);

   for(int i = startBar; i <= rates_total - BarsToConfirm - 2; i++)
   {
      BuyBuf[i]  = 0.0;
      SellBuf[i] = 0.0;

      if(i < ZZDepth + 2) continue;

      double curATR = atr[i];
      if(curATR <= 0) continue;

      double pivotLow  = 0, pivotHigh = 0;
      int    pivotLowBar = -1, pivotHighBar = -1;

      int scanFrom = i - 1; // look left only — no lookahead
      int scanTo   = MathMax(ZZDepth + 1, i - HistBars);

      for(int k = scanFrom; k >= scanTo; k--)
      {

         if(pivotLowBar < 0)
         {
            bool isPivLow = true;
            int  leftLim  = MathMax(0, k - ZZDepth);
            for(int m = leftLim

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

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

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

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

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

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

Стоимость полного кода
2 147,50₽ ≈ $26.25