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

pure_martingale.mq4

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

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник открывает рыночные позиции в случайном направлении и управляет размером лотов по принципу увеличения при убыточных сделках. Устанавливает и модифицирует стоп-лосс и тейк-профит для открытых позиций, проверяет допустимость торгового времени и торговых дней, а также отображает информационный меню на графике с данными по открытым сделкам.

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

НастройкаОписание
separator1 separator1 — Текстовый разделитель группы настроек мартингейла
stop loss and take profit (sl_tp) sl_tp — Размер стоп-лосса и тейк-профита в пунктах
lotsMultiplier lotsMultiplier — Множитель размера лота при увеличении позиции
distanceMultiplier distanceMultiplier — Множитель расстояния для установки стоп-лосса и тейк-профита
fixed lot size (Lots) Lots — Фиксированный начальный размер лота
MaxSlippage MaxSlippage — Максимально допустимый проскальзывание в пунктах
magicNumber magicNumber — Магический номер для идентификации ордеров советника
separator2 separator2 — Текстовый разделитель группы настроек торгового времени
useTradingHours useTradingHours — Включение или отключение фильтра по торговому времени
StartTime StartTime — Время начала торгового окна
StopTime StopTime — Время окончания торгового окна
GMT_Offset GMT_Offset — Смещение времени относительно GMT в часах
separator3 separator3 — Текстовый разделитель группы настроек торговых дней
Monday Monday — Включение торговли в понедельник
Tuesday Tuesday — Включение торговли во вторник
Wednesday Wednesday — Включение торговли в среду
Thursday Thursday — Включение торговли в четверг
Friday Friday — Включение торговли в пятницу
Saturday Saturday — Включение торговли в субботу
Sunday Sunday — Включение торговли в воскресенье
separator4 separator4 — Текстовый разделитель группы настроек отображения
showMenu showMenu — Включение или отключение отображения меню на графике
menuColor menuColor — Цвет текста меню
variablesColor variablesColor — Цвет значений переменных в меню
font font — Размер шрифта для отображения меню
Получить полный код

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

extern string    separator1            = "------ Martingale settings ------";
extern double    sl_tp                 = 20;                 // stop loss and take profit
extern double    lotsMultiplier        = 1.5;
extern double    distanceMultiplier    = 1.5;               
extern double    Lots                  = 0.03;               // fixed lot size
extern double    MaxSlippage           = 3;   
extern double    magicNumber           = 1212123;              

extern string  separator2              =  "------ Trading Hours ------";
extern bool    useTradingHours         = false;
extern string  StartTime               = "06:00";
extern string  StopTime                = "18:00";
extern int     GMT_Offset              = 0;

extern string  separator3              = "------ Trading Days ------";
extern bool    Monday                  = true;
extern bool    Tuesday                 = true;
extern bool    Wednesday               = true;
extern bool    Thursday                = true;
extern bool    Friday                  = true;
extern bool    Saturday                = true;
extern bool    Sunday                  = true;

extern string   separator4            = "------ Wiew settings ------";
extern bool     showMenu               = true;
extern color    menuColor              = Yellow; 
extern color    variablesColor         = Red;
extern int      font                   = 10;

double   stopLoss, takeProfit,
         minAllowedLot, lotStep, maxAllowedLot,
         pips2dbl, pips2point, pipValue, minGapStop, maxSlippage,
         menulots,
         profit,
         lots,
         ma1;

datetime barTime=0;

bool  noHistory=false,
      stopsChecked;

int   medzera = 8,
      trades;

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

int deinit()
  {

   if(showMenu)
   {
      ObjectDelete("name");
      ObjectDelete("Openl");
      ObjectDelete("Open");
      ObjectDelete("Lotsl");
      ObjectDelete("Lots");
      ObjectDelete("Profitl");
      ObjectDelete("Profit");
   }

   return(0);
  }

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

int Random()
{   
    MathSrand(TimeLocal()+Bid);
    return(MathRand());
}   

bool EnterBuyCondition()
{ 
   if(MathMod(Random(),2)==0)
      return(true);

   return (false);   
}

bool EnterSellCondition()
{ 
   if(MathMod(Random(),2)==1)
      return(true);

   return (false);   
}

bool CheckStops()
{
   double sl=0, tp=0, loss;
   double total=OrdersTotal();

   int ticket=-1;

   for(int cnt=total-1;cnt>=0;cnt--)
   {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(   OrderType()<=OP_SELL                      // check for opened position 
         && OrderSymbol()==Symbol()                   // check for symbol
         && OrderMagicNumber() == magicNumber)        // my magic number
      {
         if(OrderType()==OP_BUY)
         {
            if(OrderStopLoss()==0 || OrderTakeProfit()==0)
            { 
               ticket=OrderTicket(); 
               while (!IsTradeAllowed()) Sleep(500); 
               RefreshRates();

               SelectLastHistoryOrder(Symbol(), magicNumber);

               if(!noHistory)
               {

                  if(OrderProfit()<0)  
                  {
                     loss=MathAbs(OrderClosePrice()-OrderOpenPrice());
                     sl=Ask-(loss)*distanceMultiplier;
                     tp=Ask+(loss)*distanceMultiplier;
                  }
                  else
                  {
                     sl = Ask-stopLoss; 
                     tp = Ask+takeProfit;
                  }
               } 
               else
               {
                  sl = Ask-stopLoss; 
                  tp = Ask+takeProfit;
               } 

               if(Bid-sl<=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
                  sl = Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

               if(tp-Bid<=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
                  tp = Bid+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

               if(!OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
                  return(false);

               if(OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Green)) // modify position
               {
               }
               else
                  return (false);
            }
         }   
         if(OrderType()==OP_SELL)
         {
            if(OrderStopLoss()==0 && OrderTakeProfit()==0)
            {
               ticket=OrderTicket();         
               while (!IsTradeAllowed()) Sleep(500); 
               RefreshRates();  

               SelectLastHistoryOrder(Symbol(), magicNumber);

               if(!noHistory)
               {

                  if(OrderProfit()<0)
                  {
                     loss=MathAbs(OrderClosePrice()-OrderOpenPrice());
                     sl=Bid+(loss)*distanceMultiplier;
                     tp=Bid-(loss)*distanceMultiplier;
                  }
                  else
                  {                            
                     sl = Bid+stopLoss;
                     tp = Bid-takeProfit;  
                  }
               }  
               else
               {                            
                  sl = Bid+stopLoss;
                  tp = Bid-takeProfit;  
               }

               if(sl-Ask<=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
                  sl = Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

               if(Ask-tp<=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
                  tp = Ask-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;                

               if(!OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
                  return(false);

               if(OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Green)) // modify position
               {
               }
               else
                  return (false);
      

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

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

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

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

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

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

Стоимость полного кода
968,10₽ ≈ $11.83