Sleep()Это подойдёт ?
лучше так
if ((бай||селл=успешно) && isTime(2*Period()*60)) {пауза 2 бара}; bool isTime(int sec){ bool res = false; static datetime time = 0; double min = 0; if (TimeCurrent() >= time){ min = MathFloor(sec / 60); if (min==0) min = 1.0; time = iTime(NULL,PERIOD_H1,0) + (MathFloor(Minute()/min) + 1) * min * 60; res = true; } return(res); }
isTime возвращает истину, если прошло указанное число секунд (int sec) или больше..
функция чуть "шире", чем isNewBar().. соответственно, новый бар для текущего ТФ появляется через Period()*60 секунд или позже..
а вообще стоит начать с учебника https://book.mql4.com/ru/
а вообще что первично ? открывать по барам или открыть по некоторому учловию, а потом спать 2 бара ?
что-то вроде такого
int ticket = 0, N = 2; if (OrdersTotal()!=0 && !isTime(N*Period()*60)) return(0); // бары не прошли - на выход int покупатьПродаватьНичегоНеДелать = получитьУсловие(); if (покупатьПродаватьНичегоНеДелать == OP_BUY){ ticket=OrdSend(Symbol(),OP_BUY,lot,Ask,Slippage,MyStopLoss,MyTakeProfit,OrderStr,MagicNumber,0,Lime); if (ticket > 0) isTime(N*Period()*60);//ордер открыт, спать N баров }
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
if (бай||селл=успешно) {пауза 2 бара};