Может есть у кого-то готовий алгоритм на ограничение время работы внутри эксперта, например Start time = 16.30 && End time = 03.20 ?
держи, хотел статью написать на эту тему, Рош сказал что на статью не тянет
//--- входные параметры input string Setup = "Таймер"; input bool Timer = false; input int TradePeriod = 1; input string OnTradePeriod = "08:00"; input string EndTradePeriod = "18:00"; //--- глобальные переменные MqlDateTime str; string data1; string data2; string treidperiod=" "; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if(TradeTimer()) { //--- // Здесь необходимо прописать код с торговыми условиями //--- } Comment(treidperiod); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool TradeTimer() { if(Timer==true) { datetime date=TimeCurrent(); TimeToStruct(date,str); string ty=string(str.year); string tm=string(str.mon); string td1=string(str.day); datetime d1 = StringToTime (ty+"."+tm+"."+td1+" "+OnTradePeriod); datetime d2 = StringToTime (ty+"."+tm+"."+td1+" "+EndTradePeriod); if(TradePeriod==1) { if(d1>d2 && date>=d1) { string td2=string(str.day+1); d1 = StringToTime (ty+"."+tm+"."+td1+" "+OnTradePeriod); d2 = StringToTime (ty+"."+tm+"."+td2+" "+EndTradePeriod); } else if(d1>d2 && date<=d2) { string td2=string(str.day-1); d1 = StringToTime (ty+"."+tm+"."+td2+" "+OnTradePeriod); d2 = StringToTime (ty+"."+tm+"."+td1+" "+EndTradePeriod); } data1 = TimeToString(d1,TIME_MINUTES); data2 = TimeToString(d2,TIME_MINUTES); treidperiod="c "+data1+" до "+data2; if(date>=d1 && date<=d2)return(true); else return(false); } if(TradePeriod==2) { data1 = TimeToString(d1,TIME_MINUTES); data2 = TimeToString(d2,TIME_MINUTES); treidperiod="c Пн "+data1+" до Пт "+data2; if((str.day_of_week==1 && date<d1) || (str.day_of_week==5 && date>d2))return(false); else return(true); } } treidperiod="Круглосуточно"; return(true); } //+------------------------------------------------------------------+
держи, хотел статью написать на эту тему, Рош сказал что на статью не тянет
sergey1294, большое спасибо. ;)
sergey1294, большое спасибо. ;)
держи, хотел статью написать на эту тему, Рош сказал что на статью не тянет
Только есть маленький нюанс - неподаётса оптимизацие. :)
Счас думаю как эту проблему решить.
Добрый день!
Переделал NewBar функцию в MQL5, но счас невидоетса рэзультат. Может кто замэтит ошибку?
bool NewBar() { datetime Time[]; int count; ArraySetAsSeries(Time,true); CopyTime(_Symbol,_Period,0,count,Time); bool r; static datetime bar = 0; if (bar == 0) bar = TimeCurrent(); if (bar == Time[0]) r = false; else { bar = Time[0]; r = true; } return(r); }
Только есть маленький нюанс - неподаётса оптимизацие. :)
Счас думаю как эту проблему решить.
А если время торговли указывать в целых числах? Минут от "о" часов.
input int OnTradePeriod = 480; // "08:00";
input int EndTradePeriod = 1080; // "18:00";
ну и внутри проверки на непротиворечивость
А если время торговли указывать в целых числах? Минут от "о" часов.
input int OnTradePeriod = 480; // "08:00";
input int EndTradePeriod = 1080; // "18:00";
ну и внутри проверки на непротиворечивость
Так неполучетса, в этои функцие должен быть "string"
datetime d1 = StringToTime (ty+"."+tm+"."+td1+" "+OnTradePeriod)
а у вас "int".
Надо изчо преобразовать "int" в "string".
Добрый день!
Переделал NewBar функцию в MQL5, но счас невидоетса рэзультат. Может кто замэтит ошибку?
Нашол в статях вот такое решение:
bool NewBar() { MqlRates rt[2]; if(CopyRates(_Symbol,_Period,0,2,rt)!=2) { Print("CopyRates of ",_Symbol," failed, no history"); return(false); } if(rt[1].tick_volume>1) return(false); return(true); }
Нашол в статях вот такое решение:

- голосов: 7
- 2010.05.07
- Prival
- www.mql5.com

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Может есть у кого-то готовий алгоритм на ограничение время работы внутри эксперта, например Start time = 16.30 && End time = 03.20 ?