Как установить ордер в не торговое время для мт5 ?
Написать скрипт, который выставит ордер в нужное время.
Скрипт придется зациклить, а это перегрузка процессора. Лучше использовать советник (он же робот) и функцию 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; }
Вот прямо сегодня такой код у меня ордер выставил, пока я спал:
а сюда можно любую функцию
//+------------------------------------------------------------------+ //| 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); } } } } //+------------------------------------------------------------------+
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования