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

Martingale VI Hybrid

hedging martingale.mq4

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

! macd+.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!macd_adx.mq4MQL4 / MetaTrader 4 · 1 общих теговxauusd_gold_perfect.mq4MQL4 / MetaTrader 4 · 1 общих теговtm sniper pro.pineTradingView · 1 общих теговsource code of grid with 100 pips stop loss.mq4MQL4 / MetaTrader 4 · 1 общих теговsniper pro.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Советник для MetaTrader 4, реализующий стратегию мартингейла. При открытии позиции при неблагоприятном движении цены открывается дополнительная сделка с увеличенным объёмом лотов по умножителю. Использует индикатор MACD для анализа ценовых данных и может работать на разных таймфреймах, автоматически подстраиваясь под 4- и 5-значные котировки брокера. Советник управляет ордерами через стандартные торговые функции MetaTrader 4: OrderSend, OrderModify и OrderClose, с контролем максимального количества одновременных позиций и возможностью их закрытия при достижении лимита.

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

НастройкаОписание
TP value of each trade in this Martingale EA (Take_Profit) Take_Profit — Уровень фиксации прибыли в пунктах для каждой сделки
Distance in pips which will open a new trade (PipStep) PipStep — Расстояние в пунктах, при достижении которого открывается новая сделка
The value of the initial lots , will be duplicated every step (Lots) Lots — Начальный объём лотов, который удваивается на каждом шаге
Multiplier value every step of new trade (Multiply) Multiply — Множитель объёма лотов на каждом шаге мартингейла
Maximum trades that can run (MaxTrade) MaxTrade — Максимальное количество одновременно открытых сделок
Close Maximum Orders (CLOSEMAXORDERS) CLOSEMAXORDERS — Переключатель закрытия всех ордеров при достижении максимального количества
Magic Number (EAMagicNumber) EAMagicNumber — Магический номер для идентификации ордеров советника
Получить полный код

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

#property version   "1.01"
#property strict
/*-- These variables are shown in the EA and can be changed --*/
extern    int      Take_Profit=30;   // TP value of each trade in this Martingale EA
extern    int      PipStep       = 30;   // Distance in pips which will open a new trade
extern    double   Lots          = 0.1;  // The value of the initial lots , will be duplicated every step
extern    double   Multiply      = 2.0;  // Multiplier value every step of new trade
extern    int      MaxTrade=4;   // Maximum trades that can  run
extern    bool     CLOSEMAXORDERS=true;  // Close Maximum Orders
extern    int      EAMagicNumber=8095; // Magic Number
double   SetPoint=0;               // Variable SetPoint to code 4 or 5 digit brokers
double        pips;
int T=0;
int Count_one_message=0;
int           Tp,err,ntp,result;
double priceopen,stoploss,takeprofit;
/*--These parameters are to be displayed on the screen --*/
string   EAName               = "Martingale ver 1.0"; // EA name , to be displayed on the screen
string   EAComment            = "Martingale";         // This variable will we put in each trade as a Comment

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

void OnDeinit(const int reason)
  {

  }

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

/*--so EA can be running at 4 Digits Broker or 5 Digits--*/
void SetBroker()
  {
   if(Digits==3 || Digits==5) // Command to brokers 5 Digits
     {SetPoint=Point*10;}
   else                        // Command to brokers 4 Digits
     {SetPoint=Point;}
  }

int GoMartingale()
  {
   int      iCount      =  0;
   double   LastOP      =  0;
   double   LastLots    =  0;
   bool     LastIsBuy   =  FALSE;
   int      iTotalBuy   =  0;
   int      iTotalSell  =  0;
   double      Spread=0;
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ",AccountFreeMargin());
         return(0);
        }
   Spread=MarketInfo(Symbol(),MODE_SPREAD);

   for(iCount=0;iCount<OrdersTotal();iCount++)
     {

      if(!OrderSelect(iCount,SELECT_BY_POS,MODE_TRADES))
         Print("eror");

      if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
        {
         if(LastOP==0) {LastOP=OrderOpenPrice();}
         if(LastOP>OrderOpenPrice()) {LastOP=OrderOpenPrice();}
         if(LastLots<OrderLots()) {LastLots=OrderLots();}
         LastIsBuy=TRUE;
         iTotalBuy++;

         if(iTotalBuy==MaxTrade) //{return(0);}
           {
            if(CLOSEMAXORDERS==1)
              {
               exitbuys();
               return(0);
              }
           }

        }

      if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderComment()==EAComment && OrderMagicNumber()==EAMagicNumber)
        {
         if(LastOP==0) {LastOP=OrderOpenPrice();}
         if(LastOP<OrderOpenPrice()) {LastOP=OrderOpenPrice();}
         if(LastLots<OrderLots()) {LastLots=OrderLots();}
         LastIsBuy=FALSE;
         iTotalSell++;

         if(iTotalSell==MaxTrade) //{return(0);}
           {
            if(CLOSEMAXORDERS==1)
              {
               exitsells();
               return(0);
              }
           }

        }

     }

/* If the Price is downtrend .... direction , check the Bid (*/
   if(LastIsBuy)
     {

      if(Bid<=LastOP-(Spread*SetPoint)-(PipStep*SetPoint))

        {
         if(((AccountStopoutMode()==1) && 
            (AccountFreeMarginCheck(Symbol(),OP_BUY,Lots)>AccountStopoutLevel()))
            || ((AccountStopoutMode()==0) && 
            ((AccountEquity()/(AccountEquity()-AccountFreeMarginCheck(Symbol(),OP_BUY,Lots))*100)>AccountStopoutLevel())))
            if(CheckMoneyForTrade(Symbol(),LotsOptimized(Multiply*LastLots),OP_BUY))

               if(!OrderSend(Symbol(),OP_BUY,Multiply*LastLots,ND(Ask),3,0,NDTP(Ask+Take_Profit*SetPoint),EAComment,EAMagicNumber))
                  Print("eror",GetLastError());

         ModifyTP();
         LastIsBuy=FALSE;
         return(0);
        }
     }
/* If the direction is Sell Price .... , check the value of Ask(*/
   else if(!LastIsBuy)
     {

      if(Ask>=LastOP+(Spread*SetPoint)+(PipStep*SetPoint))

        {
         if(((AccountStopoutMode()==1) && 
            (AccountFreeMarginCheck(Symbol(),OP_SELL,Lots)>AccountStopoutLevel()))
            || ((AccountStopoutMode()==0) && 
          

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

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

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

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

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

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

Стоимость полного кода
1 227,70₽ ≈ $15.00