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

MR.dollar EA

mr dollar_pending orders ea v6.1.mq4

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

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

MR.dollar EA — торговый советник для MetaTrader 4, специализирующийся на автоматическом управлении отложенными и рыночными ордерами. Советник поддерживает четыре типа отложенных ордеров (BuyStop, BuyLimit, SellStop, SellLimit) с настраиваемыми объёмами, дистанциями, тейк-профитами и стоп-лоссами. Он позволяет открывать ордера в заданные часы, фильтровать сделки по дням недели, использовать трейлинг-стоп и закрывать позиции при достижении целевой прибыли или убытка.

В основе работы лежит обработка тиков (OnTick), при каждом из которых советник проверяет рыночные условия, управляет существующими ордерами и при необходимости открывает новые. Поддерживается функция хеджирования первого ордера, а также повторное открытие закрытых позиций. Магический номер MagicNumber обеспечивает идентификацию ордеров, принадлежащих данному советнику.

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

НастройкаОписание
UseHourTrade Включает фильтр торговых часов: ордера открываются только в заданном интервале.
FromHourTrade Начальный час торгового интервала.
ToHourTrade Конечный час торгового интервала.
OpenHedgeFirstTime Открывает хеджирующие ордера при первом запуске советника.
HedgeLots Объём лота для хеджирующего ордера при первом открытии.
HedgeTP Тейк-профит для хеджирующих ордеров в пунктах.
HedgeSL Стоп-лосс для хеджирующих ордеров в пунктах.
AddOrdersAfterClose Разрешает повторно открывать ордера после закрытия текущих позиций.
ReverseClosedOrders Открывает обратные ордера при повторном открытии после закрытия.
CloseIfLastOrderProfit Автоматически закрывает все ордера, если последнее ордер было прибыльным.
S1 Заголовок раздела настроек BuyStop-ордеров.
OpenBuyStopOrders Включает или отключает открытие BuyStop-ордеров.
NumberOfBuyStopOrders Количество BuyStop-ордеров для открытия.
BuyStopFirstLot Начальный объём лота для первого BuyStop-ордера.
DistanceFromCurrentPriceBS Дистанция от текущей цены до первого BuyStop-ордера в пунктах.
DistanceBetweenBuyS Дистанция между BuyStop-ордерами в пунктах.
Distance_AddBuyS Дополнительная дистанция между BuyStop-ордерами в пунктах.
BuyStopTakeProfit Тейк-профит для BuyStop-ордеров в пунктах.
BuyStopSL Стоп-лосс для BuyStop-ордеров в пунктах.
S2 Заголовок раздела настроек BuyLimit-ордеров.
OpenBuyLimitOrders Включает или отключает открытие BuyLimit-ордеров.
NumberOfBuyLimitOrders Количество BuyLimit-ордеров для открытия.
BuyLimitFirstLot Начальный объём лота для первого BuyLimit-ордера.
DistanceFromCurrentPriceBL Дистанция от текущей цены до первого BuyLimit-ордера в пунктах.
DistanceBetweenBuyL Дистанция между BuyLimit-ордерами в пунктах.
Distance_AddBuyL Дополнительная дистанция между BuyLimit-ордерами в пунктах.
BuyLimitTakeProfit Тейк-профит для BuyLimit-ордеров в пунктах.
BuyLimitSL Стоп-лосс для BuyLimit-ордеров в пунктах.
S3 Заголовок раздела настроек SellStop-ордеров.
OpenSellStopOrders Включает или отключает открытие SellStop-ордеров.
NumberOfSellStopOrders Количество SellStop-ордеров для открытия.
SellStopFirstLot Начальный объём лота для первого SellStop-ордера.
DistanceFromCurrentPriceSS Дистанция от текущей цены до первого SellStop-ордера в пунктах.
DistanceBetweenSellS Дистанция между SellStop-ордерами в пунктах.
Distance_AddSellS Дополнительная дистанция между SellStop-ордерами в пунктах.
SellStopTakeProfit Тейк-профит для SellStop-ордеров в пунктах.
SellStopSL Стоп-лосс для SellStop-ордеров в пунктах.
S4 Заголовок раздела настроек SellLimit-ордеров.
OpenSellLimitOrders Включает или отключает открытие SellLimit-ордеров.
NumberOfSellLimitOrders Количество SellLimit-ордеров для открытия.
SellLimitFirstLot Начальный объём лота для первого SellLimit-ордера.
DistanceFromCurrentPriceSL Дистанция от текущей цены до первого SellLimit-ордера в пунктах.
DistanceBetweenSellL Дистанция между SellLimit-ордерами в пунктах.
Distance_AddSellL Дополнительная дистанция между SellLimit-ордерами в пунктах.
SellLimitTakeProfit Тейк-профит для SellLimit-ордеров в пунктах.
SellLimitSL Стоп-лосс для SellLimit-ордеров в пунктах.
S5 Заголовок раздела настроек мультипликатора лотов.
UseMultiplier Включает поэтапное увеличение лотов при открытии серии ордеров.
X_Multiplier Тип мультипликатора: при включении лоты увеличиваются умножением, при выключении — суммированием.
Multiplier Множитель для увеличения лотов при использовании мультипликатора.
S6 Заголовок раздела настроек времени и цены открытия.
HighLowCandle Использует максимум или минимум предыдущей свечи для расчёта цены открытия ордера.
OpenAtChoosenHour Разрешает открывать ордера только в заданный час.
Hour_ Час, в который советник пытается открывать ордера.
StartPrice Начальная цена для расчёта дистанции ордеров. Если равна 0, используется текущая цена.
Gap Допустимый диапазон цены закрытия свечи для открытия ордера от StartPrice.
OnlyOnce Разрешает открыть ордера только один раз за сессию советника.
S7 Заголовок раздела настроек закрытия и удаления ордеров.
FridayOpenOrdersFilter Фильтрует открытие ордеров в пятницу, не позволяя открывать их после заданного часа.
FridayDeleteOrders Удаляет все отложенные ордера в пятницу в заданный час.
FridayCloseOrders Закрывает все открытые ордера в пятницу в заданный час.
_Hour Час, после которого в пятницу закрываются или удаляются ордера.
CloseAfterPassMinutes Разрешает закрывать ордера по истечении заданного количества минут.
MinutesPass Количество минут после открытия ордера, по истечении которых он может быть закрыт.
CloseOrdersAfterProfit Закрывает все ордера при достижении прибыли, равной значению Profit.
DeleteOrdersAfterProfit Удаляет все отложенные ордера при достижении прибыли, равной значению Profit.
Profit Значение прибыли (в валюте счёта), при достижении которого ордера закрываются или удаляются.
CloseOrdersAfterLoss Закрывает все ордера при достижении убытка, равного значению Loss.
Loss Значение убытка (в валюте счёта), при достижении которого ордера закрываются.
S8 Заголовок раздела настроек управления ордерами.
TrailingStop Расстояние трейлинг-стопа в пунктах от текущей цены.
TrailingProfit Прибыль в пунктах, необходимая для активации трейлинг-стопа.
TrailingStep Шаг трейлинг-стопа в пунктах.
S9 Заголовок раздела временных фильтров.
FridayCloseEA Полностью останавливает советник в пятницу в заданный час.
Friday_CloseHour Час закрытия ордеров или советника в пятницу.
MagicNumber Магический номер для идентификации ордеров, открытых советником.
Получить полный код

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

input bool  UseHourTrade = false;        
 input int  FromHourTrade = 7;            
 input int  ToHourTrade = 17; 
 input bool OpenHedgeFirstTime=false;
 input double HedgeLots=0.1;
 input int HedgeTP=0;
 input int HedgeSL=0;
 input bool AddOrdersAfterClose=true;
 input bool ReverseClosedOrders=false;
 input bool CloseIfLastOrderProfit=false;
 input string S1="BuyStop Orders Settings ";
 input bool OpenBuyStopOrders=true;
 input int NumberOfBuyStopOrders=50;
 input double BuyStopFirstLot=0.1;
  input int DistanceFromCurrentPriceBS=0;
 input int DistanceBetweenBuyS=20;
 input int Distance_AddBuyS=0;
 input int BuyStopTakeProfit=0;
 input int BuyStopSL=0;
 input string S2="BuyLimit Orders Settings";
 input bool OpenBuyLimitOrders=true;
 extern int NumberOfBuyLimitOrders=50;
 input double BuyLimitFirstLot=0.1;
  input int DistanceFromCurrentPriceBL=0;
input int DistanceBetweenBuyL=20;
 input int Distance_AddBuyL=0;
 input int BuyLimitTakeProfit=0;
 input int BuyLimitSL=0;
 input string S3="SellStop Orders Settings";
 input bool OpenSellStopOrders=true;
 input int NumberOfSellStopOrders=50;
 input double SellStopFirstLot=0.1;
  input int DistanceFromCurrentPriceSS=0;
 input int DistanceBetweenSellS=20;
  input int Distance_AddSellS=0;
 input int SellStopTakeProfit=0;
 input int SellStopSL=0;
 input string S4="SellLimit Orders Settings";
 input bool OpenSellLimitOrders=true;
 input int NumberOfSellLimitOrders=50;
 input double SellLimitFirstLot=0.1;
  input int DistanceFromCurrentPriceSL=0;
 input int DistanceBetweenSellL=20;
  input int Distance_AddSellL=0;
 input int SellLimitTakeProfit=0;
 input int SellLimitSL=0;
input string S5=" Lots Multiplier ";
 input bool UseMultiplier=true;
 input bool X_Multiplier=true;
 input double Multiplier=2;

 input string S6=" Order Open Time/Price Settings ";
  input bool HighLowCandle=false;
 input bool OpenAtChoosenHour=false;
 input int Hour_=12;
 input double StartPrice=0;
 input int Gap=3;

 input bool OnlyOnce=false;
 input string S7=" Close and Delete Orders ";
 input bool FridayOpenOrdersFilter=true;
 input bool FridayDeleteOrders=false;
 input bool FridayCloseOrders=false;
 input int _Hour=20;
 input bool CloseAfterPassMinutes=false;
 input int MinutesPass=100;
 input bool CloseOrdersAfterProfit=true;
 input bool DeleteOrdersAfterProfit=true;
 input int Profit=200;
  input bool CloseOrdersAfterLoss=false;
 input double Loss=-200;
input string S8=" Order Management";

input int TrailingStop=0;
input int TrailingProfit=0;
input int TrailingStep=0;

input string S9="Time Filter";
input bool FridayCloseEA=false;
input int Friday_CloseHour=20;

 bool enter;
 double point;double Price;
 int digits;int i,Q,Qq;
 extern int MagicNumber=2533;

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

 void OnDeinit(const int reason) 
 {
    Comment("");
 }

 int orderscnt()
 {
 int cnt=0;
   for(int i =0;i<OrdersTotal();i++){
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber){
         cnt++;
       }
     }
   }
    return(cnt);
  }
int ordersPen()
{
 int cnt=0;
   for(int i =0;i<OrdersTotal();i++){
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()>OP_SELL){
         cnt++;
       }
     }
   }
    return(cnt);
  }
 int orders(){
 int cnt=0;
   for(int i =0;i<OrdersTotal();i++){
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()<=OP_SELL){
         cnt++;
       }
     }
   }
    return(cnt);
  }

 void OnTick()
   {
      // код доступен только после оплаты
   }
    Comment("Programmed by MR.dollar"+"\n"+"Arabic Traders Forum"+"\n"+"www.arabictrader.com/vb"+"\n"+
    "Number Of Pending Orders = "+ordersPen()+"\n"+"Number Of Market Orders = "+orders()+"\n"+
    "Account Free Margin = "+DoubleToStr(AccountFreeMargin(),2)+"\n"+"Profit Value = "+DoubleToStr(AccountProfit(),2));

       bool ss=true;
        if(Qq+Q==orderscnt()&&!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
               TimeHour(TimeCurrent()) < ToHourTrade))&&UseHourTrade){
       DeletePendingOrders();
       }
       if (UseHourTrade){
        if(!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
               TimeHour(TimeCurrent()) < ToHourTrade))){
           Comment("Non-Trading Hours!");
           ss=false;
         }
       }

        if(TrailingStop>0)MoveTrailingStop();
        if(FridayCloseEA&&Hour()>=Friday_CloseHour&&DayOfWeek()==5)
           return;

        if(AddOrdersAfterClose&&orderscnt()>0){
         OpenClosedOrders();
        }
        int totalNumber=0;

        if(ss==true&&orderscnt()<1&&(OnlyOnce==false||enter==true)&&(FridayOpenOrdersFilter==false||DayOfWeek()!=5||Hour()<_Hour)&&(Hour()==Hour_||OpenAtChoosenHour==false)){
       double lastlot;double newlot;double TP,SL;
       lastlot=0;
        if(OpenHedgeFirstTime)
         {
          if(HedgeSL==0){SL=0;}else{SL=Ask-HedgeSL*point;}
          if(HedgeTP==0){TP=0;}else{TP=Ask+HedgeTP*point;}
          OrderSend(Symbol(),OP_BUY,HedgeLots,NormalizeDouble(Ask,Digits),3*Q,NormalizeDouble(SL,Digits),NormalizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Blue);
          if(HedgeSL==0){SL=0;}else{SL=Bid+HedgeSL*point;}
          if(HedgeTP==0){TP=0;}else{TP=Bid-HedgeTP*point;}
          OrderSend(Symbol(),OP_SELL,HedgeLots,NormalizeDouble(Bid,Digits),3*Q,NormalizeDouble(SL,Digits),NormalizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Red); 
         }
       if(OpenSellLimitOrders){
        for(i=1;i<=NumberOfSellLimitOrders;i++)
        {
         if(UseMultiplier){
          if(X_Multiplier){
           newlot=Multiplier*lastlot;
          }
          else{newlot=lastlot+SellLimitFirstLot;}
          }
         else{newlot=SellLimitFirstLot;}
        if(newlot==0){newlot=SellLimitFirstLot;}
         lastlot=newlot;

         if(StartPrice==0){Price=Bid+(DistanceFromCurrentPriceSL*point)+(i*DistanceBetweenSellL*point+i*Distance_AddSellL*point);}
         else{Price=StartPrice+(DistanceFromCurrentPriceSL*point)+(i*DistanceBetweenSellL*point);}
         if(HighLowCandle){Price=High[1]+(DistanceFromCurrentPriceSL*point)+(i*DistanceBetweenSellL*point);}
         if(SellLimitTakeProfit==0){TP=0;}else{TP=Price-SellLimitTakeProfit*point;}
         if(SellLimitSL==0){SL=0;}else{SL=Price+SellLimitSL*point;}

         if((StartPrice==0&&HighLowCandle==false)||(HighLowCandle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){  
            OrderSend(Symbol(),OP_SELLLIMIT,newlot,Price,3,SL,TP,"MR.dollarEA"+totalNumber+"_",MagicNumber,0,Red);
             totalNumber++;
          }
         }
        }

       lastlot=0;
       if(OpenBuyLimitOrders){
        for(i=1;i<=NumberOfBuyLimitOrders;i++)
        {
         if(UseMultiplier){
        if(X_Multiplier){
         newlot=Multiplier*lastlot;
        }
        else{newlot=lastlot+BuyLimitFirstLot;}
       }
       else{newlot=BuyLimitFirstLot;}
         if(newlot==0){newlot=BuyLimitFirstLot;}
         lastlot=newlot;

         if(StartPrice==0){Price=Ask-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point+i*Distance_AddBuyL*point);} 
         else{Price=StartPrice-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*poin

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

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

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

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

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

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

Стоимость полного кода
1 349,90₽ ≈ $16.50