Функция определения количества пунктов в идущих подряд убыточных ордерах
Допустим имеется 3 подряд убыточных ордера и нужно узнать, сколько в этих трех ордерах убытка в пунктах (спред не учитывается). Применяем эту функцию:
[sociallocker]
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" - любой символ, |
//| NULL - текущий символ) |
//| op - операция (-1 - любая позиция) |
//| mn - MagicNumber (-1 - любой магик) |
//| dt - Дата и время в секундах с 1970 года ( 0 - с начала истории) |
//+----------------------------------------------------------------------------+
int NumberOfLastLossPosFromDateInPoint(string sy="", int op=-1, int mn=-1, datetime dt=0) {
int i, k=OrdersHistoryTotal();
int kp=0;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime()) {
if (OrderProfit()<0)
{
kp += (MathAbs(OrderOpenPrice()-OrderClosePrice())) / Point;
}
else kp=0;
}
}
}
}
}
}
return(kp);
}
[/sociallocker]