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

AurumBreak Clone V0.16

aurumbreakclone_v016.mq5

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

(2).mq4MQL4 / MetaTrader 4 · 1 общих тегов(1).mq4MQL4 / MetaTrader 4 · 1 общих тегов$uperarrowindicator.mq5MQL5 / MetaTrader 5 · 1 общих теговrsi_averaging_ea.mq5MQL5 / MetaTrader 5 · 1 общих тегов#ultimate macd divergence.mq5MQL5 / MetaTrader 5 · 1 общих теговdynamic keltner rsi rebound v3.pineTradingView · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

АурумБрейк Клон V0.16 — торговый советник для MetaTrader 5, работающий на таймфрейме M15. Советник анализирует ценовую структуру, выявляя ключевые точки разворота (пивоты) и классифицируя рыночное состояние по трём веткам: продолжение, переход и реверс. Классификация основана на подтверждении технических индикаторов — RSI, ADX, ATR и EMA — и проверке свежести ценовых пересечений уровней.

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

Советник обрабатывает рыночные и торговые события MetaTrader 5, использует торговые операции через встроенный API CTrade. Поддерживается подробный журнал операций, который можно включить через соответствующую настройку. Работает только на закрытых свечах сигнального таймфрейма.

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

НастройкаОписание
InpRiskProfile Идентификатор профиля риска, определяющий параметры управления позицией
InpVolMode Режим расчёта объёма: 0 — фиксированный, 1 — рисковый
InpVolRiskPct Процент риска от текущей маржи для расчёта объёма позиции
InpVolMaxCap Максимальная верхняя граница объёма позиции
InpVolFixed Фиксированный объём позиции при ручном режиме объёма
InpFltMomentum Включает фильтр импульса, запрещающий вход при чрезмерном значении RSI
InpFltTrend Включает фильтр тренда, запрещающий вход при ADX ниже порогового значения
InpFltHours Включает фильтрацию входа по часам на основе разрешённого списка
InpFltHourShift Сдвиг серверного часа для фильтрации по разрешённым часам
InpGuardBE Включает автоматическую установку безубытка при достижении определённого уровня прибыли
InpGuardTrail Включает автоматическое перемещение стоп-лосса при достижении определённого уровня прибыли
InpGuardFlipClose Включает механизм инвертированного закрытия позиции при определённых условиях
InpGuardScaleIn Включает масштабирование входа в позицию
InpGuardScaleBuy Включает масштабирование при покупке
InpGuardScaleSell Включает масштабирование при продаже
InpGuardMaxPos Максимальное количество одновременных открытых позиций советника на символе
InpGuardMaxVol Максимальный допустимый объём одной позиции
InpGuardDayLoss Процент дневного убытка от начальной маржи, при достижении которого все сделки блокируются
InpGuardMaxRiskPct Максимальный риск одной сделки в процентах от маржи
InpGuardMaxTotRisk Максимальный совокупный риск всех позиций в процентах от маржи
InpGuardMinMarginLvl Минимальный уровень маржи, ниже которого вход в сделки блокируется
InpSessUse Включает фильтрацию входа по торговой сессии
InpSessOffset Смещение в часах от UTC для определения торговой сессии
InpSessStart Час начала торговой сессии (серверное время)
InpSessEnd Час окончания торговой сессии (серверное время)
InpSysMagic Магический номер для идентификации ордеров советника
InpSysTag Тег (комментарий) для ордеров советника
InpExecSpreadMax Максимальный допустимый спред в пунктах для входа в сделку
InpExecSlip Максимальное допустимое проскальзывание в пунктах при исполнении ордеров
InpSysVerbose Включает подробный вывод информации в журнал
InpReconFastPivot Количество свечей для определения быстрого пивота (точки разворота)
InpReconHigherPivot Количество свечей для определения расширенного пивота (направление структуры)
InpReconSwingLookback Глубина поиска свингов в свечах для определения пивотов
InpReconFreshCrossOnly Требует, чтобы пересечение уровня произошло именно на закрытой свече
InpReconADXPeriod Период расчёта индикатора ADX
InpReconADXMin Минимальное значение ADX на сигнальном таймфрейме для подтверждения тренда
InpReconRSIPeriod Период расчёта индикатора RSI на сигнальном таймфрейме
InpReconRSIMaxDir Максимальное допустимое значение RSI направления для фильтра импульса
InpReconATRPeriod Период расчёта индикатора ATR на сигнальном таймфрейме
InpReconSL_ATR Множитель ATR для расчёта расстояния стоп-лосса от цены входа
InpReconTP_ATR Множитель ATR для расчёта расстояния тейк-профита от цены входа
InpReconAllowedHours Список разрешённых часов (через запятую) для входа в сделку
InpReconOnePositionOnly Разрешает только одну позицию советника одновременно на символе
InpReconUseContinuation Включает ветку продолжения тренда
InpContRSIMinDir Минимальное значение RSI направления для ветки продолжения
InpContDIGapMin Минимальный допустимый разрыв направленного индекса для ветки продолжения
InpContRet3Min Минимальный трёхсвечной возврат в ATR для ветки продолжения
InpContMaxPivotAge Максимальный допустимый возраст пивота для обычного пути продолжения
InpContMinRangeATR Минимальный диапазон свечи в единицах ATR для ветки продолжения
InpContUseExtension Включает расширенный путь продолжения для более старых структур при сильном подтверждении
InpContExtMaxPivotAge Максимальный допустимый возраст пивота для расширенного пути продолжения
InpContExtADXMin Минимальное значение ADX для расширенного пути продолжения
InpContExtRSIMinDir Минимальное значение RSI направления для расширенного пути продолжения
InpContExtDIGapMin Минимальный разрыв DI для расширенного пути продолжения
InpContExtRet3Min Минимальный трёхсвечной возврат в ATR для расширенного пути продолжения
InpContExtMinRangeATR Минимальный диапазон свечи в единицах ATR для расширенного пути продолжения
InpReconUseTransition Включает ветку перехода (нейтральное состояние)
InpTransRSIMinDir Минимальное значение RSI направления для ветки перехода
InpTransDIGapMin Минимальный разрыв DI для ветки перехода
InpTransRet3Min Минимальный трёхсвечной возврат в ATR для ветки перехода
InpTransMaxClosePosDir Максимальная допустимая позиция закрытия для обычного пути перехода
InpTransMaxPivotAge Максимальный допустимый возраст пивота для обычного пути перехода
InpTransMinRangeATR Минимальный диапазон свечи в единицах ATR для ветки перехода
InpTransUseExtension Включает расширенный путь перехода для сильных поздних разрывов
InpTransExtMaxPivotAge Максимальный возраст пивота для расширенного пути перехода
InpTransExtADXMin Минимальное значение ADX для расширенного пути перехода
InpTransExtRSIMinDir Минимальное значение RSI направления для расширенного пути перехода
InpTransExtDIGapMin Минимальный разрыв DI для расширенного пути перехода
InpTransExtRet3Min Минимальный трёхсвечной возврат в ATR для расширенного пути перехода
InpTransExtMinClosePos Минимальная допустимая позиция закрытия для расширенного пути перехода
InpTransExtMaxClosePos Максимальная допустимая позиция закрытия для расширенного пути перехода
InpTransExtMinRangeATR Минимальный диапазон свечи в ATR для расширенного пути перехода
InpTransExtMaxRangeATR Максимальный диапазон свечи в ATR для расширенного пути перехода
InpReconUseReversal Включает ветку реверса (обратного движения)
InpRevADXMin Минимальное значение ADX для подтверждения реверса
InpRevRSIMinDir Минимальное значение RSI направления для подтверждения реверса
InpRevDIGapMin Минимальный разрыв DI для подтверждения реверса
InpRevRet3Min Минимальный трёхсвечной возврат в ATR для реверса
InpRevEMAPeriod Период скользящей средней EMA, используемой в ветке реверса
InpRevMinEMADistATR Минимальное расстояние цены от EMA в единицах ATR для реверса
InpRevMinEff6 Минимальная 6-свечная эффективность для реверса
InpRevMaxEff24 Максимальная 24-свечная эффективность для реверса (при 1.00 — отключено)
InpRevMaxPivotAge Максимальный допустимый возраст пивота для реверса
InpRevMinRangeATR Минимальный диапазон свечи в единицах ATR для реверса
InpReconActiveGuards Включает активное управление открытыми позициями (безубыток и трейлинг)
InpReconBEArmR Доля прибыли от риска для активации безубытка
InpReconBELockR Доля прибыли от риска для фиксации безубытка
InpReconTrailArmR Доля прибыли от риска для активации трейлинг стопа
InpReconTrailATRMult Множитель ATR для расчёта уровня трейлинг стопа
Получить полный код

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

#property strict
#property version   "0.16"
#property description "AurumBreak Clone V0.16 - selective-active structure classifier"

#include <Trade/Trade.mqh>
CTrade trade;

input group "===== RISK PROFILE ====="
input int      InpRiskProfile          = 1;

input group "===== VOLUME ====="
input int      InpVolMode              = 0;
input double   InpVolRiskPct           = 1.0;
input double   InpVolMaxCap            = 0.0;
input double   InpVolFixed             = 0.01;

input group "===== FILTERS ====="
input bool     InpFltMomentum          = true;
input bool     InpFltTrend             = true;
input bool     InpFltHours             = true;
input int      InpFltHourShift         = 0;

input group "===== PROTECTION ====="
input bool     InpGuardBE              = true;
input bool     InpGuardTrail           = true;
input bool     InpGuardFlipClose       = true;
input bool     InpGuardScaleIn         = true;
input bool     InpGuardScaleBuy        = true;
input bool     InpGuardScaleSell       = true;
input int      InpGuardMaxPos          = 6;
input double   InpGuardMaxVol          = 1.0;
input double   InpGuardDayLoss         = 3.0;
input double   InpGuardMaxRiskPct      = 20.0;
input double   InpGuardMaxTotRisk      = 35.0;
input double   InpGuardMinMarginLvl    = 200.0;

input group "===== SESSION ====="
input bool     InpSessUse              = false;
input int      InpSessOffset           = 7;
input int      InpSessStart            = 15;
input int      InpSessEnd              = 1;

input group "===== EXECUTION ====="
input long     InpSysMagic             = 50356;
input string   InpSysTag               = "AurumBreakClone";
input int      InpExecSpreadMax        = 800;
input int      InpExecSlip             = 30;
input bool     InpSysVerbose           = false;

input group "===== STRUCTURE CORE V0.16 ====="
input int      InpReconFastPivot       = 5;      // validated entry swing
input int      InpReconHigherPivot     = 16;     // higher-swing directional bias
input int      InpReconSwingLookback   = 220;
input bool     InpReconFreshCrossOnly  = true;
input int      InpReconADXPeriod       = 14;
input double   InpReconADXMin          = 29.0;
input int      InpReconRSIPeriod       = 14;
input double   InpReconRSIMaxDir       = 78.0;   // anti-overextension (SELL mirror = 22)
input int      InpReconATRPeriod       = 14;
input double   InpReconSL_ATR          = 2.60;
input double   InpReconTP_ATR          = 2.50;
input string   InpReconAllowedHours    = "0,1,3,5,6,7,8,10,11,12,17,18,20,22,23";
input bool     InpReconOnePositionOnly = true;

input group "===== CONTINUATION BRANCH ====="
input bool     InpReconUseContinuation = true;
input double   InpContRSIMinDir        = 60.0;
input double   InpContDIGapMin         = 0.0;
input double   InpContRet3Min          = 0.20;
input int      InpContMaxPivotAge      = 30;
input double   InpContMinRangeATR      = 0.30;

input bool     InpContUseExtension     = true;
input int      InpContExtMaxPivotAge   = 40;
input double   InpContExtADXMin        = 32.0;
input double   InpContExtRSIMinDir     = 64.0;
input double   InpContExtDIGapMin      = 10.0;
input double   InpContExtRet3Min       = 0.80;
input double   InpContExtMinRangeATR   = 0.50;

input group "===== TRANSITION / NEUTRAL BRANCH ====="
input bool     InpReconUseTransition   = true;
input double   InpTransRSIMinDir       = 62.0;
input double   InpTransDIGapMin        = 0.0;
input double   InpTransRet3Min         = 0.00;
input double   InpTransMaxClosePosDir  = 0.80;
input int      InpTransMaxPivotAge     = 30;
input double   InpTransMinRangeATR     = 0.00;

input bool     InpTransUseExtension    = true;
input int      InpTransExtMaxPivotAge  = 40;
input double   InpTransExtADXMin       = 29.0;
input double   InpTransExtRSIMinDir    = 62.0;
input double   InpTransExtDIGapMin     = 12.0;
input double   InpTransExtRet3Min      = 0.80;
input double   InpTransExtMinClosePos  = 0.84;
input double   InpTransExtMaxClosePos  = 0.88;
input double   InpTransExtMinRangeATR  = 0.60;
input double   InpTransExtMaxRangeATR  = 3.00;

input group "===== REVERSAL BRANCH ====="
input bool     InpReconUseReversal     = true;
input double   InpRevADXMin            = 31.0;
input double   InpRevRSIMinDir         = 64.0;
input double   InpRevDIGapMin          = 15.0;
input double   InpRevRet3Min           = 1.20;
input int      InpRevEMAPeriod         = 44;
input double   InpRevMinEMADistATR     = 2.00;   // directional displacement from EMA / ATR
input double   InpRevMinEff6           = 0.20;   // six-bar directional efficiency
input double   InpRevMaxEff24          = 1.00;   // disabled at 1.00; retain V0.14-style REV
input int      InpRevMaxPivotAge       = 30;
input double   InpRevMinRangeATR       = 0.00;

input group "===== RECON GUARD MANAGEMENT ====="
input bool     InpReconActiveGuards    = false;
input double   InpReconBEArmR          = 0.70;
input double   InpReconBELockR         = 0.05;
input double   InpReconTrailArmR       = 0.85;
input double   InpReconTrailATRMult    = 1.00;

#define SIGNAL_TF PERIOD_M15

int hRSI=INVALID_HANDLE, hATR=INVALID_HANDLE, hADX=INVALID_HANDLE, hEMARev=INVALID_HANDLE;
datetime lastBarTime=0;
double dayStartEquity=0.0;
int dayKey=-1;
string lastBranch="";

struct PivotInfo
{
   datetime t;
   double price;
   int shift;
};

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

void OnDeinit(const int reason)
{
   if(hRSI!=INVALID_HANDLE) IndicatorRelease(hRSI);
   if(hATR!=INVALID_HANDLE) IndicatorRelease(hATR);
   if(hADX!=INVALID_HANDLE) IndicatorRelease(hADX);
   if(hEMARev!=INVALID_HANDLE) IndicatorRelease(hEMARev);
}

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

bool IsNewSignalBar()
{
   datetime t=iTime(_Symbol,SIGNAL_TF,0);
   if(t<=0 || t==lastBarTime) return false;
   lastBarTime=t;
   return true;
}

bool FindPivots(const int strength,
                PivotInfo &hi1,PivotInfo &hi2,
                PivotInfo &lo1,PivotInfo &lo2)
{
   int need=InpReconSwingLookback+strength*2+30;
   MqlRates r[]; ArraySetAsSeries(r,true);
   if(CopyRates(_Symbol,SIGNAL_TF,0,need,r)<need) return false;

   hi1.t=hi2.t=lo1.t=lo2.t=0;
   hi1.price=hi2.price=lo1.price=lo2.price=0.0;
   hi1.shift=hi2.shift=lo1.shift=lo2.shift=-1;

   int start=strength+2;
   int end=MathMin(ArraySize(r)-strength-1,InpReconSwingLookback);

   for(int s=start;s<=end;s++)
   {
      bool isH=true,isL=true;
      double ph=r[s].high,pl=r[s].low;
      for(int j=1;j<=strength;j++)
      {
         if(ph<=r[s+j].high) isH=false;
         if(pl>=r[s+j].low)  isL=false;
      }
      for(int j=1;j<=strength;j++)
      {
         if(ph<r[s-j].high) isH=false;
         if(pl>r[s-j].low)  isL=false;
      }

      if(isH)
      {
         if(hi1.t==0) { hi1.t=r[s].time; hi1.price=ph; hi1.shift=s; }
         else if(hi2.t==0) { hi2.t=r[s].time; hi2.price=ph; hi2.shift=s; }
      }
      if(isL)
      {
         if(lo1.t==0) { lo1.t=r[s].time; lo1.price=pl; lo1.shift=s; }
         else if(lo2.t==0) { lo2.t=r[s].time; lo2.price=pl; lo2.shift=s; }
      }
      if(hi1.t>0 && hi2.t>0 && lo1.t>0 && lo2.t>0) break;
   }
   return (hi1.t>0 && lo1.t>0);
}

int HigherSwingBias()
{
   PivotInfo h1,h2,l1,l2;
   if(!FindPivots(InpReconHigherPivot,h1,h2,l1,l2)) return 0;
   if(h2.t==0 || l2.t==0) return 0;

   bool hh=h1.price>h2.price, lh=h1.price<h2.price;
   bool hl=l1.price>l2.price, ll=l1.price<l2.price;
   if(hh && hl) return +1;
   if(lh && ll) return -1;
   return 0;
}

bool BranchPass(const int sig,const int normalizedBias,
                const double dirRSI,const double dirDIGap,
                const double dirRet3,const double dirClosePos,
                const double dirEMADist,const double eff6,const double eff24,
                const double adxNow,const int pivotAge,const double rangeATR)
{
   double maxDir=InpReconRSIMaxDir;
   if(InpFltMomentum && dirRSI>maxDir) return false;

   if(normalizedBias>0)
   {
      if(!InpReconUseContinuation) return false;

      bool baseMom=(!InpFltMomentum || (dirRSI>=InpContRSIMinDir && dirDIGap>=InpContDIGapMin && dirRet3>=InpContRet3Min));
      bool baseAge=(InpContMaxPivotAge<=0 || pivotAge<=InpContMaxPivotAge);
      if(baseMom && baseAge && rangeATR>=InpContMinRangeATR)
      {
         lastBranch="CONT";
         return true;
      }

      if(InpContUseExtension && pivotAge>InpContMaxPivotAge && pivotAge<=InpContExtMaxPivotAge &&
         adxNow>=InpContExtADXMin && dirRSI>=InpContExtRSIMinDir && dirRSI<=maxDir &&
         dirDIGap>=InpContExtDIGapMin && dirRet3>=InpContExtRet3Min && rangeATR>=InpContExtMinRangeATR)
      {
         lastBranch="CONT_X";
         return true;
      }
      return false;
   }
   if(normalizedBias==0)
   {
      if(!InpReconUseTransition) return false;

      bool baseMom=(!InpFltMomentum || (dirRSI>=InpTransRSIMinDir && dirDIGap>=InpTransDIGapMin && dirRet3>=InpTransRet3Min));
      bool baseAge=(InpTransMaxPivotAge<=0 || pivotAge<=InpTransMaxPivotAge);
      if(baseMom && baseAge && dirClosePos<=InpTransMaxClosePosDir && rangeATR>=InpTransMinRangeATR)
      {
         lastBranch="TRANS";
         return true;
      }

      if(InpTransUseExtension && pivotAge<=InpTransExtMaxPivotAge &&
         adxNow>=InpTransExtADXMin && dirRSI>=InpTransExtRSIMinDir && dirRSI<=maxDir &&
         dirDIGap>=InpTransExtDIGapMin 

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

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

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

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

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

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

Стоимость полного кода
1 625,80₽ ≈ $20.08