Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Прими участие в партнерской программе MQL5 Cloud Network и заработай!
Artem Ashikhmin
1257
Artem Ashikhmin 2015.12.20 13:53 
Суть такова, есть цена последнего закрытого ордера PriceCloseLastPos, есть условие закрытия серии ордеров.
Я не могу заставить слушаться моё условие (PriceCloseLastPos(NULL,-1,magic)-Bid)<=distPp*Point или Bid+
Добиваюсь того, чтобы если текущая цена для закрытия по сигналу была меньше distPp=50 от цены последнего закрытия ордера(ов) то закрываем,

если больше то пропускаем и не закрываем (для разгрузки серии ордеров во флэте).

При сигнале бай, закрывает серию ордеров селл
__________________________________________________ __________
if (signal==0 && sell_profit>0 && MathAbs(PriceCloseLastPos(NULL,-1,magic)-Bid)<=distPp*Point) {
for (i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symb && OrderMagicNumber()==magic) {
if (OrderType()==1) CloseOrder(OrderTicket()); }
}

Попробовал написать по хитрому для закрытия серии и работает только если больше-равно >=, а мне надо <=, т.е. до дистанции 50
MathAbs((PriceCloseLastPos(NULL,-1,magic)-distPp*Point)<=(Bid+distPp*Point))

Описание : Возвращает цену закрытия последней закрытой позиций.
__________________________________________________ __________
double PriceCloseLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
double r=0;
int i, k=OrdersHistoryTotal();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
r=OrderClosePrice();
}
}
}
}
}
}
}
return(r);
}
Artem Ashikhmin
1257
Artem Ashikhmin 2015.12.22 01:09  

ВОПРОС РЕШЁН

ТЕМА ЗАКРЫТА

В АРХИВ или КОРЗИНУ

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий