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

RoNz Rapid-Fire EA

ronz_rapid-fire_strategy.mq4

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

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 2 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговgeniusv101-ecn.mq4MQL4 / MetaTrader 4 · 2 общих теговmarket crusher ea guidlines.txtMQL · 2 общих тегов2 to 1 strategy with signals.pineTradingView · 2 общих теговfresh algo signals & overlays v25_6334471093901859175.pineTradingView · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

Закрытие позиций возможно по двум сценариям: по стоп-лоссу или по сигналу окончания тренда. Советник использует единый магический номер для идентификации своих ордеров и работает только с текущим символом на графике.

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

НастройкаОписание
Lots (inpLots) Размер лота — Базовый размер лота для открытия позиции
Lots Type (inpLotsMode) Режим расчёта лота — Способ определения размера лота: фиксированный, на основе риска, уменьшение или увеличение при убытках
inpMaximumLotRisk Максимальный риск лота — Процент свободного маржи, используемый для расчёта лота в режиме риска
DecreaseFactor Фактор изменения лота — Множитель для корректировки размера лота при серии убыточных сделок
StopLoss Стоп-лосс — Расстояние стоп-лосса в пунктах от цены открытия
TakeProfit Тейк-профит — Расстояние тейк-профита в пунктах от цены открытия
TrailingStop Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах для фиксации прибыли
Use Averaging (Averaging) Усреднение — Включает или отключает открытие дополнительных позиций в направлении тренда
MAPeriod Период MA — Период скользящей средней, используемой для определения тренда
PSARStep Шаг PSAR — Шаг параболического SAR
PSARMax Максимум PSAR — Максимальное значение параболического SAR
Close Type (CloseType) Тип закрытия — Условие закрытия позиции: по стоп-лоссу или по развороту тренда
AppliedPrice Применяемая цена — Тип цены, используемой для расчёта скользящей средней
Method Метод MA — Метод построения скользящей средней (например, SMA, EMA)
Получить полный код

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

#property version   "1.01"
#property strict

#define MAGICMA  19841129

enum ENUM_LOTTYPE
  {
   LOTS_FIXED=0,//Fixed Lots
   LOTS_MAXRISK=1,//Risk Based Lots
   LOTS_DECREASE=2, //Decrease Lots When Loss
   LOTS_INCREASE=3, //Increase Lots When Loss
  };

enum ENUM_CLOSETYPE
  {
   SL_Close=0,TrendClose=1
  };

input double inpLots=0.01;//Lots
extern ENUM_LOTTYPE inpLotsMode=LOTS_MAXRISK;//Lots Type
input double inpMaximumLotRisk   =0.02;
input double DecreaseFactor=1;
input int    StopLoss=150;
input int    TakeProfit=100;
input int    TrailingStop=0;
input bool    Averaging=false; //Use Averaging
input int    MAPeriod=60;
input double    PSARStep=0.02;
input double    PSARMax=0.2;
input ENUM_CLOSETYPE   CloseType=SL_Close;    //Close Type
sinput ENUM_APPLIED_PRICE AppliedPrice=PRICE_CLOSE;
sinput ENUM_MA_METHOD Method=MODE_SMA;

double InitialBalance=0;
string LotType="";
int PipRisk=1000;
int inpLotsFactor=1;

int CalculateCurrentOrders()
  {
   int TotalOrder=0;

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         TotalOrder++;
        }
     }
   return TotalOrder;
  }

double OptimalLots()
  {
   double LotStep=MarketInfo(NULL,MODE_LOTSTEP);//Lot Step
   double MinLots=MarketInfo(NULL,MODE_MINLOT);//Minimum Lots
   double MaxLots=MarketInfo(NULL,MODE_MAXLOT);//Maximal Lots

   double lot=inpLots;
   int    losses=0;

   if(LotStep!=0)
      lot=MathFloor(lot/LotStep)*MathMod(LotStep,lot);

   if(lot<MinLots) lot=MinLots;

   if(inpLotsMode==LOTS_FIXED)
     {
      LotType="Fixed";
      return lot;
     }

   lot=NormalizeDouble((AccountFreeMargin()*(inpMaximumLotRisk/100))/PipRisk,2);
   lot=MathFloor(lot/LotStep)*MathMod(LotStep,lot);
   if(lot<MinLots) lot=MinLots;

   if(inpLotsMode==LOTS_MAXRISK)
     {
      LotType="Risk-Based";
      return lot;
     }

   if(inpLotsFactor>0)
     {

      for(int i=OrdersHistoryTotal()-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
           {
            Print("Error in history!");
            break;
           }
         if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGICMA || OrderType()>OP_SELL) continue;
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }

      if(inpLotsMode==LOTS_DECREASE)
        {
         LotType="Dec. Loss";
         if(losses>1)
            lot=NormalizeDouble(lot-(lot*losses/inpLotsFactor),2);
        }

      if(inpLotsMode==LOTS_INCREASE)
        {
         LotType="Inc. Loss";
         if(losses>1)
            lot=NormalizeDouble(lot+(lot*losses/inpLotsFactor),2);
        }

     }

   lot=MathFloor(lot/LotStep)*MathMod(LotStep,lot);
   if(lot<MinLots) lot=MinLots;

   return(lot);
  }

int AnalisaTrend(string mode,int opType)
  {
   int val=0;
   string msg;

   double iMa=iMA(NULL,0,MAPeriod,0,Method,AppliedPrice,0);
   double pSAR=iSAR(NULL,0,PSARStep,PSARMax,1);
   double SAR=iSAR(NULL,0,PSARStep,PSARMax,0);

   bool iRZI_Buy=(Close[0]>iMa) && SAR<Close[0] && pSAR>Close[0];
   bool iRZI_Sell=(Close[0]<iMa) && SAR>Close[0] && pSAR<Close[0];

   bool Uptrend=iRZI_Buy;
   bool Downtrend=iRZI_Sell;
   bool EndofUptrend,EndofDowntrend;

   if(CloseType==TrendClose)
     {
      EndofUptrend=iRZI_Sell;
      EndofDowntrend=iRZI_Buy;
     }
   else if(CloseType==SL_Close)
     {
      EndofUptrend=false;
      EndofDowntrend=false;
     }

   msg=StringConcatenate(
                         " Bid/Ask [",NormalizeDouble(Bid,Digits()),"/",NormalizeDouble(Ask,Digits()),"]",

                         " RZIBuySell [",iRZI_Buy,"|",iRZI_Sell,"]",

                         " Bal/Equ [",AccountBalance(),"/",AccountEquity(),"]",
                         "");

   if(opType==-1)
     {
      if(Uptrend)
        {
         Print(mode,": Uptrend dimulai! ",msg);
         val=3;
        }
      else if(Downtrend)
        {
         Print(mode,": Downtrend dimulai! ",msg);
         val=-3;
        }
     }
   else if(opType==OP_BUY)
     {
      if(Uptrend)
        {
         Print(mode,": Uptrend berlanjut! ",msg);
         val=2;
        }

      if(EndofUptrend)
        {
         Print(mode,": Uptrend berakhir! ",msg);
         val=1;
        }
     }
   else if(opType==OP_SELL)
     {
      if(Downtrend)
        {
         Print(mode,": Downtrend berlanjut! ",msg);
         val=-2;
        }
      if(EndofDowntrend)
        {
         Print(mode,": Downtrend berakhir! ",msg);
         val=-1;
        }
     }

   if(val==0)
     {

     }

   return val;

  }

string SymbolI

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

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

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

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

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

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

Стоимость полного кода
702,20₽ ≈ $8.58