RSI EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rsi_ea (4).mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Этот файл представляет собой торговый советник для MetaTrader 4, написанный на языке MQL4. Советник предназначен для автоматической торговли на основе показаний индикатора RSI (индекс относительной силы). Он открывает и закрывает позиции в зависимости от пересечения уровня RSI заданных значений, а также поддерживает управление стоп-лоссом, тейк-профитом и трейлинг-стопом. В коде используются стандартные торговые функции MQL4, такие как OrderSend, OrderClose, OrderModify, а также функции для работы с индикатором iRSI.
Советник имеет набор входных параметров, позволяющих настраивать его поведение: включение/отключение открытия покупок и продаж, закрытие по сигналу, уровни стоп-лосса и тейк-профита, параметры трейлинг-стопа, период RSI, уровни перекупленности и перепроданности, а также управление размером лота (автоматический расчет от риска или фиксированный лот). Дополнительно задаются магический номер, комментарий к ордерам и допустимое проскальзывание.
Логика работы основана на сравнении текущего и предыдущего значений RSI с заданными уровнями. При пересечении уровня снизу вверх (для покупки) или сверху вниз (для продажи) советник открывает соответствующую позицию, если это разрешено настройками и нет уже открытых позиций в этом направлении. Закрытие позиций происходит при обратном пересечении уровней, если включена соответствующая опция. Трейлинг-стоп модифицирует стоп-лосс при достижении определенной прибыли.
Советник не содержит гарантий прибыли и предназначен для использования на свой риск. Все параметры вынесены во входные переменные, что позволяет гибко настраивать стратегию без изменения кода.
Настройки программы
| Настройка | Описание |
|---|---|
| OpenBUY | Разрешает открытие длинных позиций (покупок) при появлении соответствующего сигнала. |
| OpenSELL | Разрешает открытие коротких позиций (продаж) при появлении соответствующего сигнала. |
| CloseBySignal | Если включено, позиции закрываются при появлении противоположного сигнала RSI. |
| StopLoss | Размер стоп-лосса в пунктах. Если значение равно 0, стоп-лосс не устанавливается. |
| TakeProfit | Размер тейк-профита в пунктах. Если значение равно 0, тейк-профит не устанавливается. |
| TrailingStop | Размер трейлинг-стопа в пунктах. Если значение больше 0, стоп-лосс перемещается за ценой при достижении прибыли. |
| RSIperiod | Количество периодов для расчета индикатора RSI. |
| BuyLevel | Уровень RSI, ниже которого рассматривается сигнал на покупку при пересечении снизу вверх. |
| SellLevel | Уровень RSI, выше которого рассматривается сигнал на продажу при пересечении сверху вниз. |
| AutoLot | Если включено, размер лота рассчитывается автоматически на основе баланса счета и параметра Risk. Если выключено, используется фиксированный лот из ManualLots. |
| Risk | Процент риска от баланса счета, используемый при автоматическом расчете лота. |
| ManualLots | Фиксированный размер лота, используемый при отключенном автоматическом расчете. |
| MagicNumber | Уникальный идентификатор (магический номер) для ордеров, открытых советником. |
| Koment | Текстовый комментарий, добавляемый к открываемым ордерам. |
| Slippage | Максимально допустимое проскальзывание в пунктах при открытии ордеров. |
Поиск по коду файла
#property version "1.00"
#property strict
input bool OpenBUY=True;
input bool OpenSELL=True;
input bool CloseBySignal=True;
input double StopLoss=0;
input double TakeProfit=0;
input double TrailingStop=0;
input int RSIperiod=14;
input double BuyLevel=30;
input double SellLevel=70;
input bool AutoLot=True;
input double Risk=10;
input double ManualLots=0.1;
input int MagicNumber=123;
input string Koment="RSIea";
input int Slippage=10;
int OrderBuy,OrderSell;
int ticket;
int LotDigits;
double Trail,iTrailingStop;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
double stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
OrderBuy=0;
OrderSell=0;
for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderComment()==Koment)
{
if(OrderType()==OP_BUY) OrderBuy++;
if(OrderType()==OP_SELL) OrderSell++;
if(TrailingStop>0)
{
iTrailingStop=TrailingStop;
if(TrailingStop<stoplevel) iTrailingStop=stoplevel;
Trail=iTrailingStop*Point;
double tsbuy=NormalizeDouble(Bid-Trail,Digits);
double tssell=NormalizeDouble(Ask+Trail,Digits);
if(OrderType()==OP_BUY && Bid-OrderOpenPrice()>Trail && Bid-OrderStopLoss()>Trail)
{
ticket=OrderModify(OrderTicket(),OrderOpenPrice(),tsbuy,OrderTakeProfit(),0,Blue);
}
if(OrderType()==OP_SELL && OrderOpenPrice()-Ask>Trail && (OrderStopLoss()-Ask>Trail || OrderStopLoss()==0))
{
ticket=OrderModify(OrderTicket(),OrderOpenPrice(),tssell,OrderTakeProfit(),0,Blue);
}
}
}
}
double rsi=iRSI(Symbol(),0,RSIperiod,PRICE_CLOSE,0);
double rsi1=iRSI(Symbol(),0,RSIperiod,PRICE_CLOSE,1);
if(OpenSELL && OrderSell<1 && rsi<SellLevel && rsi1>SellLevel) OPSELL();
if(OpenBUY && OrderBuy<1 && rsi>BuyLevel && rsi1<BuyLevel) OPBUY();
if(CПоказано первые 50% кода (символов: 3372)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.