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

ADX RSI & ATR Strategy EA

adx_rsi_amp_atr_strategy_ea.mq4

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

indo run 1.5.mq4MQL4 / MetaTrader 4 · 3 общих теговanother martingale fix.mq4MQL4 / MetaTrader 4 · 3 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговgg_master.mq5MQL5 / MetaTrader 5 · 2 общих тегов2 to 1 strategy with signals.pineTradingView · 2 общих теговfresh algo signals & overlays v25_6334471093901859175.pineTradingView · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

ADX RSI & ATR Strategy EA — торговый советник для MetaTrader 4, разработанный TradingSytemForex (2009). Советник формирует торговые сигналы на основе пересечения быстрых и медленных линий RSI, направления ADX и дополнительных фильтров (Stochastic, OsMA), а также управляет ордерами с использованием ATR-стопов, тейк-профитов и трейлинг-стопов.

Входные сигналы на покупку генерируются при восходящем пересечении RSI уровней и подтверждении тренда ADX; для продажи — при нисходящем пересечении. Опциональные фильтры Stochastic и OsMA позволяют дополнительно уточнять сигналы. Существует режим торговли слабыми сигналами с уменьшенными лотами.

Советник поддерживает управление рисками через систему риск-менеджмента, мартингейл, фиксированные или ATR-основанные стоп-лоссы и тейк-профиты, а также скрытые ордера с автоматическим закрытием. Доступны режимы хеджирования и разворота направления торговли.

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

НастройкаОписание
S1a Разделитель настроек входа — Текстовый разделитель для группы настроек входных параметров.
EntryADXTF Таймфрейм ADX для входа — Таймфрейм для расчёта ADX при формировании торговых сигналов на вход (0 — текущий таймфрейм).
ADXPeriod Период ADX — Период расчёта индикатора ADX (Average Directional Index), определяющий количество баров, используемых для усреднения.
ADXLevel Уровень ADX — Пороговое значение индикатора ADX для подтверждения наличия тренма. Сигналы генерируются только при превышении ADX данного уровня.
EntryRSITF Таймфрейм RSI для входа — Таймфрейм для расчёта RSI при формировании торговых сигналов на вход (0 — текущий таймфрейм).
FastRSIPeriod Период быстрого RSI — Период быстрой линии RSI, используемой для определения точек пересечения уровней.
SlowRSIPeriod Период медленного RSI — Период медленной линии RSI, используемой для определения устойчивых пересечений уровней.
RSILevel1 Уровень RSI 1 — Первый уровень RSI для определения пересечения при входе в позицию (обычно нижний уровень для покупки).
RSILevel2 Уровень RSI 2 — Второй уровень RSI для определения пересечения при входе в позицию (обычно верхний уровень для продажи).
TradeWeakSignal Слабые сигналы — Переключатель торговли по слабым сигналам — при активации разрешается вход по упрощённым условиям с уменьшенными лотами.
S1b Разделитель настроек выхода — Текстовый разделитель для группы настроек параметров выхода.
UseRSIForClose RSI для закрытия — Переключатель использования RSI для определения условий закрытия позиций.
CloseRSITF Таймфрейм RSI для закрытия — Таймфрейм для расчёта RSI при определении условий закрытия позиций (0 — текущий таймфрейм).
CloseRSIPeriod Период RSI для закрытия — Период RSI, используемый для определения условий закрытия позиций.
RSILevel3 Уровень RSI 3 — Уровень RSI для определения условия закрытия позиции при выходе из зоны перепроданности.
RSILevel4 Уровень RSI 4 — Уровень RSI для определения условия закрытия позиции при выходе из зоны перекупленности.
S1c Разделитель настроек фильтров — Текстовый разделитель для группы настроек фильтров.
UseStochFilter Фильтр Stochastic — Переключатель фильтра Stochastic — при активации сигналы подтверждаются пересечением линий Stochastic.
KPeriod Период K Stochastic — Период линии %K индикатора Stochastic.
DPeriod Период D Stochastic — Период линии сигнальной (D) индикатора Stochastic.
Slowing Замедление Stochastic — Параметр замедления (slowing) индикатора Stochastic.
UseOsMAFilter Фильтр OsMA — Переключатель фильтра OsMA — при активации сигналы подтверждаются направлением OsMA (положительное/отрицательное).
FastEMA Быстрая EMA для OsMA — Быстрая EMA, используемая в расчёте OsMA (MACD Oscillator) в качестве фильтра.
SlowEMA Медленная EMA для OsMA — Медленная EMA, используемая в расчёте OsMA (MACD Oscillator) в качестве базовой линии.
MACDSMA Период SMA для MACD — Период SMA, используемой для сглаживания линии MACD в расчёте OsMA.
S2 Разделитель настроек денежного управления — Текстовый разделитель для группы настроек управления денежными средствами.
|-----------------------lots size (Lots) Размер лота — Размер лота для обычных торговых сигналов.
|-----------------------lots size (WeakLots) Лот слабых сигналов — Размер лота для торговли по слабым сигналам (при активном TradeWeakSignal).
|---------------------risk management (RiskMM) Риск-менеджмент — Переключатель автоматического риск-менеджмента — при активации размер лота рассчитывается на основе процента риска от баланса.
|------------------risk percentage (RiskPercent) Процент риска — Процент риска от баланса аккаунта, используемый при автоматическом расчёте размера лота.
|-----------------martingale (Martingale) Мартингейл — Переключатель мартингейла — при активации размер лота увеличивается после убыточных сделок по заданному множителю.
|-----------------multiplier martingale (Multiplier) Множитель мартингейла — Множитель увеличения лота при активном мартингейле.
|-------------------minlots (MinLots) Минимальный лот — Минимально допустимый размер лота.
|--------------------maxlots (MaxLots) Максимальный лот — Максимально допустимый размер лота.
S3 Разделитель настроек ордеров — Текстовый разделитель для группы настроек управления ордерами.
UseATRForSL ATR для стоп-лосса — Переключатель использования ATR для расчёта расстояния стоп-лосса вместо фиксированного значения.
ATRPeriod Период ATR — Период расчёта индикатора ATR (Average True Range), определяющий волатильность для установки стоп-лосса.
ATRFactor Множитель ATR — Множитель ATR, используемый для расчёта расстояния стоп-лосса от цены входа при активном использовании ATR-стопа.
|------------------------stop loss (StopLoss) Стоп-лосс — Фиксированный стоп-лосс для ордеров (в пунктах). При нулевом значении стоп-лосс не устанавливается, если не используется ATR-стоп.
|----------------------take profit (TakeProfit) Тейк-профит — Фиксированный тейк-профит для ордеров (в пунктах). При нулевом значении тейк-профит не устанавливается.
|---------------------hide stop loss (HideSL) Скрыть стоп-лосс — Переключатель скрытия стоп-лосса — при активации стоп-лосс не устанавливается при открытии ордера, а применяется через отдельную логику скрытия.
|---------------------hide take profit (HideTP) Скрыть тейк-профит — Переключатель скрытия тейк-профита — при активации тейк-профит не устанавливается при открытии ордера, а применяется через отдельную логику скрытия.
|--------------------trailing stop (TrailingStop) Трейлинг-стоп — Расстояние трейлинг-стопа (в пунктах) — при активации стоп-лосс автоматически перемещается вслед за ценой.
|--------------------trailing step (TrailingStep) Шаг трейлинг-стопа — Шаг трейлинг-стопа (в пунктах), определяющий инкремент перемещения стоп-лосса.
|-----------------------break even (BreakEven) Безубыточность — Расстояние в пунктах для перевода ордера в безубыточную зону (Break Even) после достижения нужного профита.
|---------------------maximum orders allowed (MaxOrders) Максимальное количество ордеров — Максимальное количество одновременно открытых ордеров, управляемых советником.
|------------------------slippage (Slippage) Проскальзывание — Допустимое отклонение цены (в пунктах) при исполнении рыночных ордеров.
|------------------------magic number (Magic) Магическое число — Магический номер ордеров, позволяющий идентифицировать ордера, открытые данным советником.
S6 Разделитель дополнительных настроек — Текстовый разделитель для группы дополнительных настроек.
|----------------------enter an opposite trade (Hedge) Хеджирование — Переключатель режима хеджирования — при активации открывается противоположный ордер одновременно с основным.
|-------------------------stop loss (HedgeSL) Стоп-лосс хеджа — Стоп-лосс для хеджирующего ордера (в пунктах).
|-------------------------take profit (HedgeTP) Тейк-профит хеджа — Тейк-профит для хеджирующего ордера (в пунктах).
|--------------buy instead of sell, sell instead of buy (ReverseSystem) Разворот системы — Переключатель разворота системы — при активации направления сигналов меняются на противоположные (покупка вместо продажи и наоборот).
Получить полный код

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

#define EAName "ADX RSI & ATR Strategy EA"

extern string S1a="---------------- Entry Settings";

extern int EntryADXTF=0;
bool TradeAsLongAs=false;
extern int ADXPeriod=14;
extern double ADXLevel=20;
extern int EntryRSITF=0;
extern int FastRSIPeriod=5;
extern int SlowRSIPeriod=21;
extern double RSILevel1=30;
extern double RSILevel2=70;
extern bool TradeWeakSignal=true;

extern string S1b="---------------- Exit Settings";

extern bool UseRSIForClose=true;
extern int CloseRSITF=0;
extern int CloseRSIPeriod=21;
extern double RSILevel3=30;
extern double RSILevel4=70;

extern string S1c="---------------- Filter Settings";

extern bool UseStochFilter=false;
extern int KPeriod=30;
extern int DPeriod=10;
extern int Slowing=10;
extern bool UseOsMAFilter=false;
extern int FastEMA=12;
extern int SlowEMA=26;
extern int MACDSMA=9;

extern string S2="---------------- Money Management";

extern double Lots=0.1;//|-----------------------lots size
extern double WeakLots=0.05;//|-----------------------lots size
extern bool RiskMM=false;//|---------------------risk management
extern double RiskPercent=1;//|------------------risk percentage
extern bool Martingale=false;//|-----------------martingale
extern double Multiplier=2.0;//|-----------------multiplier martingale
extern double MinLots=0.01;//|-------------------minlots
extern double MaxLots=100;//|--------------------maxlots

/*
extern bool BasketProfitLoss=false;//|-----------use basket loss/profit
extern int BasketProfit=100000;//|---------------if equity reaches this level, close trades
extern int BasketLoss=9999;//|-------------------if equity reaches this negative level, close trades
*/

extern string S3="---------------- Order Management";

extern bool UseATRForSL=true;
extern int ATRPeriod=14;
extern double ATRFactor=2.0;
extern int StopLoss=0;//|------------------------stop loss
extern int TakeProfit=0;//|----------------------take profit
extern bool HideSL=false;//|---------------------hide stop loss
extern bool HideTP=false;//|---------------------hide take profit
extern int TrailingStop=0;//|--------------------trailing stop
extern int TrailingStep=0;//|--------------------trailing step
extern int BreakEven=0;//|-----------------------break even
extern int MaxOrders=100;//|---------------------maximum orders allowed
extern int Slippage=3;//|------------------------slippage
extern int Magic=2009;//|------------------------magic number

/*
extern string S4="---------------- MA Filter";

extern bool MAFilter=false;//|-------------------moving average filter
extern int MAPeriod=20;//|-----------------------ma filter period
extern int MAMethod=0;//|------------------------ma filter method
extern int MAPrice=0;//|-------------------------ma filter price
*/

/*
extern string S5="---------------- Time Filter";

extern bool TradeOnSunday=true;//|---------------time filter on sunday
extern bool MondayToThursdayTimeFilter=false;//|-time filter the week
extern int MondayToThursdayStartHour=0;//|-------start hour time filter the week
extern int MondayToThursdayEndHour=24;//|--------end hour time filter the week
extern bool FridayTimeFilter=false;//|-----------time filter on friday
extern int FridayStartHour=0;//|-----------------start hour time filter on friday
extern int FridayEndHour=21;//|------------------end hour time filter on friday
*/

extern string S6="---------------- Extras";

extern bool Hedge=false;//|----------------------enter an opposite trade
extern int HedgeSL=0;//|-------------------------stop loss
extern int HedgeTP=0;//|-------------------------take profit
extern bool ReverseSystem=false;//|--------------buy instead of sell, sell instead of buy

/*
extern bool ReverseAtStop=false;//|--------------buy instead of sell, sell instead of buy
extern int Expiration=240;//|--------------------expiration in minute for the reverse pending order
extern bool Comments=true;//|--------------------allow comments on chart
*/

datetime PreviousBarTime1;
datetime PreviousBarTime2;

double maxEquity,minEquity,Balance=0.0;
double LotsFactor=1;
double InitialLotsFactor=1;

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

/*int deinit()
{
  return(0);
}*/

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

   if(TrailingStop>0)MoveTrailingStop();

   if(BreakEven>0)MoveBreakEven();

/*

   if(BasketProfitLoss)
   {
      double CurrentProfit=0,CurrentBasket=0;
      CurrentBasket=AccountEquity()-AccountBalance();
      if(CurrentBasket>maxEquity)maxEquity=CurrentBasket;
      if(CurrentBasket<minEquity)minEquity=CurrentBasket;
      if(CurrentBasket>=BasketProfit||CurrentBasket<=(BasketLoss*(-1)))
      {
         CloseBuyOrders(Magic);
         CloseSellOrders(Magic);
         return(0);
      }
   }
*/

/*

   if((TradeOnSunday==false&&DayOfWeek()==0)||(MondayToThursdayTimeFilter&&DayOfWeek()>=1&&DayOfWeek()<=4&&!(Hour()>=MondayToThursdayStartHour&&Hour()<MondayToThursdayEndHour))||(FridayTimeFilter&&DayOfWeek()==5&&!(Hour()>=FridayStartHour&&Hour()<FridayEndHour)))
   {
      CloseBuyOrders(Magic);
      CloseSellOrders(Magic);
      return(0);
   }
*/

   int limit=1;
   for(int i=1;i<=limit;i++)
   {

/*

      double MAF=iMA(Symbol(),0,MAPeriod,0,MAMethod,MAPrice,i);

      bool MABUY=false;bool MASELL=false;

      if((MAFilter==false)||(MAFilter&&Bid>MAF))MABUY=true;
      if((MAFilter==false)||(MAFilter&&Ask<MAF))MASELL=true;

      double LastBuyOpenPrice=0;
      double LastSellOpenPrice=0;
      int BuyOpenPosition=0;
      int SellOpenPosition=0;
      int TotalOpenPosition=0;
      int cnt=0;

      for(cnt=0;cnt<OrdersTotal();cnt++) 
      {
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic&&OrderCloseTime()==0) 
         {
            TotalOpenPosition++;
            if(OrderType()==OP_BUY) 
            {
               BuyOpenPosition++;
               LastBuyOpenPrice=OrderOpenPrice();
            }
            if(OrderType()==OP_SELL) 
            {
               SellOpenPosition++;
               LastSellOpenPrice=OrderOpenPrice();
            }
         }
      }
*/

      double ADXa=iADX(NULL,EntryADXTF,ADXPeriod,PRICE_CLOSE,MODE_MAIN,i+1);
      double ADXPlusa=iADX(NULL,EntryADXTF,ADXPeriod,PRICE_CLOSE,MODE_PLUSDI,i+1);
      double ADXMinusa=iADX(NULL,EntryADXTF,ADXPeriod,PRICE_CLOSE,MODE_MINUSDI,i+1);
      double ADX=iADX(NULL,EntryADXTF,ADXPeriod,PRICE_CLOSE,MODE_MAIN,i);
      double ADXPlus=iADX(NULL,EntryADXTF,ADXPeriod,PRICE_CLOSE,MODE_PLUSDI,i);
      double ADXMinus=iADX(NULL,EntryADXTF,ADXPeriod,PRICE_CLOSE,MODE_MINUSDI,i);

      double FastRSIa=iRSI(NULL,EntryRSITF,FastRSIPeriod,PRICE_CLOSE,i+1);
      double SlowRSIa=iRSI(NULL,EntryRSITF,SlowRSIPeriod,PRICE_CLOSE,i+1);
      double FastRSI=iRSI(NULL,EntryRSITF,FastRSIPeriod,PRICE_CLOSE,i);
      double SlowRSI=iRSI(NULL,EntryRSITF,SlowRSIPeriod,PRICE_CLOSE,i);

      double SlowRSIDa=iRSI(NULL,CloseRSITF,CloseRSIPeriod,PRICE_CLOSE,i+1);
      double SlowRSID=iRSI(NULL,CloseRSITF,CloseRSIPeriod,PRICE_CLOSE,i);

      double StochM=iStochastic(NULL,0,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_MAIN,i);
      double StochS=iStochastic(NULL,0,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_SIGNAL,i);

      double OSMA=iOsMA(NULL,0,FastEMA,SlowEMA,MACDSMA,PRICE_CLOSE,i);

      bool BUY=false;
      bool SELL=false;

      if(
      (FastRSIa<RSILevel1&&FastRSI>RSILevel1&&SlowRSIa<RSILevel1&&SlowRSI>RSILevel1&&ADX>ADXLevel&&ADXPlus>ADXMinus)
      &&(UseStochFilter==false||(UseStochFilter&&StochM>StochS))
      &&(UseOsMAFilter==false||(UseOsMAFilter&&OSMA>0))
      &&(UseRSIForClose==false||(UseRSIForClose&&!(SlowRSIDa>RSILevel4&&SlowRSID<RSILevel4)))
      )BUY=true;
      if(
      (FastRSIa>RSILevel2&&FastRSI<RSILevel2&&SlowRSIa>RSILevel2&&SlowRSI<RSILevel2&&ADX>ADXLevel&&ADXMinus>ADXPlus)
      &&(UseStochFilter==false||(UseStochFilter&&StochM<StochS))
      &&(UseOsMAFilter==false||(UseOsMAFilter&&OSMA<0))
      &&(UseRSIForClose==false||(UseRSIForClose&&!(SlowRSIDa<RSILevel3&&SlowRSID>RSILevel3)))
      )SELL=true;

      if(TradeWeakSignal&&
      (FastRSIa<RSILevel1&&FastRSI>RSILevel1&&ADX>ADXLevel&&ADXPlus>ADXMinus)
      &&(UseStochFilter==false||(UseStochFilter&&StochM>StochS))
      &&(UseOsMAFilter==false||(UseOsMAFilter&&OSMA>0))
      &&(UseRSIForClose==false||(UseRSIForClose&&!(SlowRSIDa>RSILevel4&&SlowRSID<RSILevel4)))
      ){BUY=true;Lots=WeakLots;}
      if(TradeWeakSignal&&
      (FastRSIa>RSILevel2&&FastRSI<RSILevel2&&ADX>ADXLevel&&ADXMinus>ADXPlus)
      &&(UseStochFilter==false||(UseStochFilter&&StochM<StochS))
      &&(UseOsMAFilter==false||(UseOsMAFilter&&OSMA<0))
      &&(UseRSIForClose==false||(UseRSIForClose&&!(SlowRSIDa<RSILevel3&&SlowRSID>RSILevel3)))
      ){SELL=true;Lots=WeakLots;}

      bool SignalBUY=false;
      bool SignalSELL=false;

      if(BUY/*&&MABUY*/)if(ReverseSystem)SignalSELL=true;else SignalBUY=true;
      if(SELL/*&&MASELL*/)if(ReverseSystem)SignalBUY=true;else SignalSELL=true;

      if(UseATRForSL)StopLoss=(iATR(NULL,0,ATRPeriod,i)*ATRFactor)/Point;

   }

   if(RiskMM)CalculateMM();

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

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

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

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

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

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

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