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

another martingale fix.mq4

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

indo run 1.5.mq4MQL4 / MetaTrader 4 · 3 общих теговadx_rsi_amp_atr_strategy_ea.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

Советник для MetaTrader 4, реализующий торговую стратегию на основе индикатора RSI. Открывает позиции по сигналам перекупленности и перепроданности рынка. Поддерживает фиксированные уровни стоп-лосса и тейк-профита, а также функцию трейлинг-стопа для защиты прибыли.

Встроена система увеличения лота после убыточных сделок в пределах заданного количества последовательных потерь. Дополнительно реализована функция перемещения стоп-лосса в точку безубыточности при достижении позиции определённого уровня прибыли. Торговля ограничена заданным временным окном в течение дня.

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

НастройкаОписание
use for identifing order (MagicNumber) Магический номер — Уникальный идентификатор для отслеживания и фильтрации собственных ордеров на сервере.
basic lot (StartLot) Начальный лот — Базовый размер лота для новых позиций.
stop loss (StopLoss) Стоп-лосс — Фиксированный уровень стоп-лосса в пунктах от цены открытия позиции.
take profit (TakeProfit) Тейк-профит — Фиксированный уровень тейк-профита в пунктах от цены открытия позиции.
to moving out stoploss into (TrailingStop) Трейлинг-стоп — Активирует перемещение стоп-лосса в сторону прибыли при достижении указанного расстояния в пунктах от текущего стоп-лосса.
to moving stoploss into (MoveToBreakEvent) Перемещение в безубыток — Включает функцию переноса стоп-лосса в цену открытия позиции после выхода в прибыль.
small amount of pips profit (LockedPips) Фиксация прибыли — Количество пунктов прибыли, при достижении которого стоп-лосс перемещается в точку безубыточности.
amount of bar to calculate (RSIPeriod) Период RSI — Количество баров, используемых для расчёта индикатора RSI.
a level to determine market (UpperLevel) Верхний уровень RSI — Значение RSI, при превышении которого генерируется сигнал на продажу.
same as above but for (LowerLevel) Нижний уровень RSI — Значение RSI, при снижении ниже которого генерируется сигнал на покупку.
false to deactivated this feature (Martingale) Мартингейл — Включает или выключает функцию увеличения лота после убыточных сделок.
previous lotsize will multiplied (Multiplier) Множитель лота — Коэффициент умножения размера лота при срабатывании функции увеличения позиции.
how many continue losses (DeepLevel) Глубина мартингейла — Максимальное количество последовательных убыточных сделок, после которых увеличение лота прекращается.
time for EA start trading (StartHour) Час начала торговли — Час начала торговой сессии по серверному времени.
time for EA stop trading (EndHour) Час окончания торговли — Час окончания торговой сессии по серверному времени.
Получить полный код

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

extern int MagicNumber=1;               // use for identifing order 
extern double StartLot=0.1;             // basic lot
extern int StopLoss=30;                 // stop loss
extern int TakeProfit=30;               // take profit
extern int TrailingStop=0;              // to moving out stoploss into

extern bool MoveToBreakEvent=false;     // to moving stoploss into

extern int LockedPips=1;                // small amount of pips profit

extern int RSIPeriod=9;                 // amount of bar to calculate

extern int UpperLevel=70;               // a level to determine market

extern int LowerLevel=30;               // same as above but for 

extern bool Martingale=true;            // false to deactivated this feature
extern double Multiplier=2.5;           // previous lotsize will multiplied

extern int DeepLevel=10;                // how many continue losses

extern int StartHour=0;                 // time for EA start trading
extern int EndHour=20;                  // time for EA stop trading 
       double pt,                       // custom point
       stoplevel,                       // stop level
       minlot,                          // minimal lot
       maxlot;                          // maximal lot

int ordercount()                        // we counting our order here
{
   int total=0;                         // total of our order 
   int i;                               // pos of our order 
   for(i=0; i<OrdersTotal(); i++)       // looping to count our order 

   {
       if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;  // is it right our order?
       if(OrderSymbol()!=Symbol() ||    // if symbol of order didn't match 
       OrderMagicNumber()!=MagicNumber) // with current chart symbol 
       continue;                        // or the magic numb of order 

       total++;                         // count if all criteria matched
   }
   return(total);                       // this function returned total of

}

bool checkforlosses()                   // we check our last closed order 
{                                       // from losses here 
   int losses=0;                        // total of losses
   int i;                               // pos of our order 
   for(i=0; i<OrdersHistoryTotal(); i++) // looping to check all of our
   {                                     // order history from pos 0 until

       if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue; // is it right our order?
       if(OrderSymbol()!=Symbol() ||    // if symbol of order didn't match 
       OrderMagicNumber()!=MagicNumber) // with current chart symbol 
       continue;                        // or the magic numb of order 

       if(OrderProfit()<0) losses++;    // so we count it as a losses 'cause negative profit
       else                losses=0;    // otherwise we leave it as is 
   }
   if(losses>0)  return(true);          // if last of our order is in losses

   return(false);                       // when there is no losses false will returned
}

double lastlot()                        // we will find last lot size 
{                                       // order with this function
  double lot=0;                         // lot size
  int i;                                // pos of our order 
  for(i=0; i<OrdersHistoryTotal(); i++) // looping to check all of our
   {                                     // order history from pos 0 until

       if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue; // is it right our order?
       if(OrderSymbol()!=Symbol() ||    // if symbol of order didn't match 
       OrderMagicNumber()!=MagicNumber) // with current chart symbol 
       continue;                        // or the magic numb of order 

       lot=OrderLots();                 // last lot
  }
  return(lot);                          // last lot size returned
}

double mylot()                          // we calculate for next lot here
{                                       // when a loss occured or not 
  int prec=0;                           // precision value 
  double lot,                           // lot size
         maxlotX;                       // maximal size of martingale lot 
  minlot=MarketInfo(Symbol(),MODE_MINLOT); // get brokers minimal lot size
  maxlot=MarketInfo(Symbol(),MODE_MAXLOT); // get brokers maximal lot size
  if(minlot==0.01) prec=2;              // get precision value
  if(minlot==0.1)  prec=1;              // get precision value
  maxlotX=NormalizeDouble(StartLot*MathPow(Multiplier,DeepLevel), prec); //get max.

  if(Martingale)                        // if martingale activated
  {
     if(checkforlosses())               // if last order is in losses
     {
        lot=NormalizeDouble(lastlot()*Multiplier,prec); // martingale lot
     }
     else
     {
        lot=StartLot;                   // normal lot
     }
  }  
  else
  {
     lot=StartLot;                      // normal lot
  }

  if(lot>maxlot)  return(StartLot);     // if lot size is bigger than broker rules,

  if(lot>maxlotX) return(StartLot);     // if lot size is bigger than martingale level,

  if(lot<minlot)  return(minlot);       // if lot size smaller than minlot, we change

  return(lot);                          // lot size returned
}

string getsignal()                      // we calculate trading signal here
{
   double rsi=iRSI(Symbol(),0,RSIPeriod,0,0);  // we use RSI to get signal
   if(rsi<LowerLevel) return("buy");    // buy signal returned when

   if(rsi>UpperLevel) return("sell");   // sell signal returned when

   return("wait and see");              // no signal returned
} 

int sendorder(int cmd,double lots,double prc,double sl,double tp,color warna)
{
   return(OrderSend(Symbol(),cmd,lots,prc,2,sl,tp,"",MagicNumber,0,warna));
}  

void trailingstop()                     // we check our opened order to see 
{    

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

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

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

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

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

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

Стоимость полного кода
709,30₽ ≈ $8.67