romanzif
Местный
Команда форума
Администратор
- Монет
- 124,312
Один из методов снизить риски для советников сеточников можно использовать закрытия первого ордера в серии при достижение определенной просадки или при возникновения сигнала по более выгодной цене.
Сегодня приведу пример такой функции, а как её использовать вы можете решить сами:
Сегодня приведу пример такой функции, а как её использовать вы можете решить сами:
Код:
//+------------------------------------------------------------------+
void CloseFirstOrder()
{
bool close;
for (int i=0; i <= OrdersTotal()-1; i++) // начинаем цикл с первого ордера в рынке
{
if (OrderSelect(i, SELECT_BY_POS))
{
if (OrderMagicNumber() == Magic && OrderSymbol() == Symbol()) // проверяем что символ и Магик были именно от текущего графика и настроек советника
{
if (OrderType() == OP_BUY)
{
close = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clrPink); // закрываем ордер
if (!close) printf("Error ", GetLastError()); // если была ошибка выводим код ошибки
TrallTP(OP_BUY); // пересчитываем ТП для оставшихся ордеров
return; // выходим из функции так как нам нужно закрыть только первый ордер
}
if (OrderType() == OP_SELL)
{
close = OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clrPink);
if (!close) printf("Error ", GetLastError());
TrallTP(OP_SELL);
return;
}
}
}
}
}
//+------------------------------------------------------------------+