- Кто подскажет как остановить советника
- Программная остановка тестера MetaTrader4
- Программно остановить тестер стратегий
Уважаемые программисты подскажите пожалуйста как в коде предусмотреть остановку советника на N часов? Спасибо.
Я вам уже давал ответ, хватить флудить по форуму
Sleep не будет работать правильно
если вопрос стоит как "Как остановить на N часов"
то лучше так:
Запоминаем последнее время TimeCurrent()
Надо остановить на N часов
//перед OnTick int TimeCurrentLast=0; //в OnTick в начале: if(TimeCurrent()<TimeCurrentLast+N*60*60) { return; } // выполняем остальной код // Там где надо остановить советника TimeCurrentLast=TimeCurrent();
если вопрос стоит как "Как остановить на N часов"
то лучше так:
Запоминаем последнее время TimeCurrent()
Надо остановить на N часов
сможете сделать прямо в коде?
if((Lot>Max2) && (x<5) && (Bid<=(x+0.005)) ) {stoploss=0; takeprofit=Ask+DeltaPr1;BuyTP=Green;};
if((Lot>Max2) && (y<5) && (Bid<=(y-0.005))) {stoploss=0; takeprofit=Ask+DeltaPr1;BuyTP=Green;};
if (Lot>Max1) ОСТАНОВКА ЗДЕСЬ на n часов при выполнении условия
OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,takeprofit,0,0,0,BuyTP);
BuyTP=Blue;
если вопрос стоит как "Как остановить на N часов"
то лучше так:
Запоминаем последнее время TimeCurrent()
Надо остановить на N часов
не понятно
не понятно
//+------------------------------------------------------------------+ //| StopTradingByNhours.mq4 | //| Elvira Akhsanova | //| https://www.mql5.com/ru/users/elyabest | //+------------------------------------------------------------------+ #property copyright "Elvira Akhsanova" #property link "https://www.mql5.com/ru/users/elyabest" #property version "1.00" #property strict input int StopForNunitsOfTime=1; input bool PrintInfo=true; int unitoftime=3600;//3600 units for 1 hour //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit(){return(INIT_SUCCEEDED);} //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason){} //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { static datetime resumetime=TimeLocal()+StopForNunitsOfTime*unitoftime; static bool stop; static int counter=0; if(resumetime>TimeLocal()){stop=true;} else stop=false; if(!stop) {//instructions when time limit is removed: counter++; if(counter==5)resumetime=TimeLocal()+StopForNunitsOfTime*unitoftime;//when counter reaches 5 (on 5th tick after time limit has been removed, it will lock itself for N hours again) if(PrintInfo)Print("Expert resumed, counter =",counter," local time: ",TimeLocal()); } else {//Expert Advisor instructions during time limited period: counter=0; if(PrintInfo)Print("Expert stopped, local time: ",TimeLocal()," Expert Advisor will resume on ",resumetime); } }Для иллюстрации работы кода встроен счетчик, который срабатывает на каждом тике и, достигнув отметки 5, блокирует работу советника на StopForNunitsOfTime * unitoftime где unitoftime равен 3600 для часа и StopForNunitsOfTime количество часов.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования