Вот фукция для коротких позиций:
//---- Проверка времени закрытия последнего ордера Sell bool CheckTimeClosedOrdersSell(int i) { int t=0; for (int j=0; j<OrdersHistoryTotal(); j++) { OrderSelect(j, SELECT_BY_POS, MODE_HISTORY); if (OrderSymbol() == Symbol()) { if (OrderType() == OP_SELL) { int r=OrderCloseTime(); if (r>t) { t=r; } } } } if (t>=iTime(Symbol(),0,i)) return(true); return(false); } //----для длинных позиций:
//---- Проверка времени закрытия последнего ордера Buy bool CheckTimeClosedOrdersBuy(int i) { int t=0; for (int j=0; j<OrdersHistoryTotal(); j++) { OrderSelect(j, SELECT_BY_POS, MODE_HISTORY); if (OrderSymbol() == Symbol()) { if (OrderType() == OP_BUY) { int r=OrderCloseTime(); if (r>t) { t=r; } } } } if (t>=iTime(Symbol(),0,i)) return(true); return(false); } //----
i - номер бара, для текущего - i=0, Вам нужно заменить " if (t>=iTime(Symbol(),0,i)) return(true)" на " if (t>=TimeCurrent()+60) return(true) "
это только для закрытых ордеров, могут быть и открытые, можно поменять OrdersHistoryTotal на OrdersTotal
и OrderCloseTime на OrderOpenTime
это будет для открытых ордеров
как правильно вставить эту функцию в код?
это только для закрытых ордеров, могут быть и открытые, можно поменять OrdersHistoryTotal на OrdersTotal это будет для открытых ордеров.
как правильно вставить эту функцию в код?
Поажалуйста, уточните задачу: какие события Вам нужны?
по коду могут открыться 2 ордера sell и 2 ордера buy,
мне нужно чтобы после открытия 1 буй, 2 буй мог открыться только после
определенного промежутка времени, например 60 секунд
там по коду MN=TimeCurrent();
т.е. время открытия ордера равно магик
тогда
If (( TimeCurrent()-MN)>60)
по коду могут открыться 2 ордера sell и 2 ордера buy,
мне нужно чтобы после открытия 1 буй, 2 буй мог открыться только после
определенного промежутка времени, например 60 секунд
Т.е. нужно "доливаться" через минуту?
Вставьте перед операцией открытия ордера:
static datetime LastOpenTime;
if(TimeCurrent()- LastOpenTime<60)return(0);
а следом за {OrderSend(.....); LastOpenTime=TimeCurrent();}
если вставляю только на буй или селл, то все равно открывает 2 ордера одновременно,
поставил время 360 сек, все равно открывает 2 ордера одновременно,
если вставляю на буй и селл,то компилятор ругается
'LastOpenTime' - variable already defined C:\Program Files\Ava MetaTrader\experts\include\Open_Ord.mqh (35, 23)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования