ADX RSI & ATR Strategy EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «adx_rsi_amp_atr_strategy_ea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.