forextime
Активный участник
Суть такова, есть цена последнего закрытого ордера PriceCloseLastPos, есть условие закрытия серии ордеров.
Я не могу заставить слушаться моё условие (Bid-PriceCloseLastPos())<=distPp*Point или Bid+
Добиваюсь того, чтобы если текущая цена для закрытия по сигналу была меньше distPp=50 от цены последнего закрытия ордера(ов) то закрываем,
если больше то пропускаем и не закрываем (для разгрузки серии во флэте).
При сигнале бай, закрывает серию ордеров селл
____________________________________________________________
if(signal_buy==0 && sell_profit>0 && MathAbs(Bid-PriceCloseLastPos())<=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()); }
}
Описание : Возвращает цену закрытия последней закрытой позиций.
____________________________________________________________
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);
}
Я не могу заставить слушаться моё условие (Bid-PriceCloseLastPos())<=distPp*Point или Bid+
Добиваюсь того, чтобы если текущая цена для закрытия по сигналу была меньше distPp=50 от цены последнего закрытия ордера(ов) то закрываем,
если больше то пропускаем и не закрываем (для разгрузки серии во флэте).
При сигнале бай, закрывает серию ордеров селл
____________________________________________________________
if(signal_buy==0 && sell_profit>0 && MathAbs(Bid-PriceCloseLastPos())<=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()); }
}
Описание : Возвращает цену закрытия последней закрытой позиций.
____________________________________________________________
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);
}
Последнее редактирование: