MT 5 ордер

 
Как установить ордер в не торговое время для мт5 ?
 
Сергей Лукашов:
Как установить ордер в не торговое время для мт5 ?

Написать скрипт, который выставит ордер в нужное время.

 
Сергей ЛукашовКак установить ордер в не торговое время для мт5 ?
JRandomTrader: Написать скрипт, который выставит ордер в нужное время.

Скрипт придется зациклить, а это перегрузка процессора. Лучше использовать советник (он же робот) и функцию OnTimer().

В КодеБазе есть такие и скрипты и роботы - в терминале вкладка Библиотека. Можно отфильтровать:

    вот выбраны только советники + скрипты

 
Сергей Лукашов:
Как установить ордер в не торговое время для мт5 ?

Если магазин или ваш городской овощной рынок закрыт - что вы можете купить или продать или вообще что не будь сделать?

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

есть вариант - кидаем на график горизонтальную линию и когда рынок откроется и цена гэпнится выше или ниже, сработает любая ваша функция.

что то типа такого 

//+------------------------------------------------------------------+
//|                                                  sample 0001.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
sinput string InpName = "HorizontalTrend Line"; // FILTER
//---
uint     SLEEPTIME=1;  // Pause time between repetitions in seconds
//---
datetime ExtLastLower; // "0" -> D'1970.01.01 00:00';
datetime ExtPrevLower; // "0" -> D'1970.01.01 00:00';
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   OnTickInp();
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTickInp(void)
  {
   datetime time_current=TimeCurrent();
   if(time_current-ExtLastLower>SLEEPTIME)
     {
      MqlRates rates[];
      int start_pos=0,count=1;
      if(CopyRates(Symbol(),Period(),start_pos,count,rates)!=count)
        {
         ExtPrevLower=0;
         return;
        }
      double price_line=0.0;
      if(ObjectFind(0,InpName)>=0)
        {
         long object_type=ObjectGetInteger(0,InpName,OBJPROP_TYPE);
         if(object_type==OBJ_HLINE)
            price_line=ObjectGetDouble(0,InpName,OBJPROP_PRICE);
         else
            if(object_type==OBJ_TREND)
               price_line=ObjectGetValueByTime(0,InpName,rates[0].time,0);
         if(price_line>0.0)
           {
            if(rates[0].open<price_line)
              {
               Alert("1");
              }
            if(rates[0].open>price_line)
              {
               Alert("2");
              }
           }
         ExtLastLower=time_current;
        }
     }
  }
//+------------------------------------------------------------------+
 

Вот прямо сегодня такой код у меня ордер выставил, пока я спал:

sinput ENUM_ORDER_TYPE OrdT=ORDER_TYPE_BUY;
sinput double Price=0.0;
sinput double PriceTP=0.0;
sinput double MinPrice=0.0;
sinput double MaxPrice=DBL_MAX;
sinput double lot=1.0;
sinput ENUM_ORDER_TYPE_FILLING OrdF=ORDER_FILLING_RETURN;
sinput bool async=true;
sinput uint Magic=1001;

MqlTradeRequest TrRq={0};
MqlTradeResult  TrRes={0};
MqlTradeCheckResult TrChk={0};

MqlTick last_tick;
MqlDateTime last_time;

double tick_sz;

bool order_sent=false;

void ClearStructures(void)
  {
   ZeroMemory(TrRq);
   ZeroMemory(TrRes);
   ZeroMemory(TrChk);
  }


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(order_sent)return;

   bool res=false;

   TimeCurrent(last_time);
   if(last_time.hour<7||
     (last_time.hour==14 && last_time.min<5)||
     (last_time.hour==18 && last_time.min>=45)||
     (last_time.hour==19 && last_time.min<5)||
     (last_time.hour==23 && last_time.min>=50)) return;
   SymbolInfoTick(_Symbol,last_tick);

   if(OrdT==ORDER_TYPE_BUY
      ||OrdT==ORDER_TYPE_BUY_LIMIT)
     {
      if(last_tick.ask>MaxPrice||last_tick.ask==0.0)return;
     }
   else if(OrdT==ORDER_TYPE_SELL
      ||OrdT==ORDER_TYPE_SELL_LIMIT)
     {
      if(last_tick.bid<MinPrice||last_tick.bid==0.0)return;
     }
   else return;

   tick_sz=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);

   ClearStructures();

   TrRq.symbol=_Symbol;
   TrRq.magic=Magic;
   TrRq.action=((OrdT==ORDER_TYPE_BUY||OrdT==ORDER_TYPE_SELL)?TRADE_ACTION_DEAL:TRADE_ACTION_PENDING);
   TrRq.type=OrdT;
   TrRq.type_filling=OrdF;
   TrRq.price=(Price==0.0?0.0:NormalizeDouble(MathRound(Price/tick_sz)*tick_sz,_Digits));
   if(PriceTP!=0.0)
     {
      TrRq.tp=(PriceTP==NormalizeDouble(MathRound(PriceTP/tick_sz)*tick_sz,_Digits));
     }
   TrRq.volume=lot;
   TrRq.type_time=ORDER_TIME_DAY;

   res=OrderCheck(TrRq,TrChk);
   if(!res)return;

   res=async?OrderSendAsync(TrRq,TrRes):OrderSend(TrRq,TrRes);
   if(!res
     ||(TrRes.retcode!=TRADE_RETCODE_PLACED
        && TrRes.retcode!=TRADE_RETCODE_DONE
        && TrRes.retcode!=TRADE_RETCODE_DONE_PARTIAL ))return;
   order_sent=true;
   return;
  }
 
JRandomTrader:

Вот прямо сегодня такой код у меня ордер выставил, пока я спал:

а сюда можно любую функцию 

//+------------------------------------------------------------------+
//|                                                  sample 0001.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
sinput string InpName_1 = "HorizontalTrend Line_1"; // FILTER_1 
sinput string InpName   = "HorizontalTrend Line";   // FILTER
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//---
   EventSetMillisecondTimer(1);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- 
   EventKillTimer();
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(void)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTimer(void)
  {
   MqlRates rates[],rates_1[];
   int start_pos=0,count=1;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates)!=count)
     {
      return;
     }
   if(CopyRates(Symbol(),Period(),start_pos,count,rates_1)!=count)
     {
      return;
     }
   double price_line=0.0;
   if(ObjectFind(0,InpName)>=0)
     {
      long object_type=ObjectGetInteger(0,InpName,OBJPROP_TYPE);
      if(object_type==OBJ_HLINE)
         price_line=ObjectGetDouble(0,InpName,OBJPROP_PRICE);
      else
         if(object_type==OBJ_TREND)
            price_line=ObjectGetValueByTime(0,InpName,rates[0].time,0);
      if(price_line>0.0)
        {
         if(rates[0].open<price_line)
           {
            Alert("1");
            ObjectDelete(0,InpName);
           }
        }
     }
   double price_line_1=0.0;
   if(ObjectFind(0,InpName_1)>=0)
     {
      long object_type_1=ObjectGetInteger(0,InpName_1,OBJPROP_TYPE);
      if(object_type_1==OBJ_HLINE)
         price_line_1=ObjectGetDouble(0,InpName_1,OBJPROP_PRICE);
      else
         if(object_type_1==OBJ_TREND)
            price_line_1=ObjectGetValueByTime(0,InpName_1,rates_1[0].time,0);
      if(price_line_1>0.0)
        {
         if(rates_1[0].open>price_line_1)
           {
            Alert("2");
            ObjectDelete(0,InpName_1);
           }
        }
     }
  }
//+------------------------------------------------------------------+

NZDUSDbH1