Функция закрывает рыночные ордера (позиции) по достижению заданного убытка, при подсчете убытка учитывается своп и комиссия.
void ClosePosBySizeLoss(
string sy="", // имя символа (при пустом значении - все символы)
int ty=-1, // тип ордера (-1 - все типы ордеров)
int mg=-1, // магическое число ордеров (-1 - все магики)
int loss=0) // размер убытка для закрытия позиции (в валюте депозита)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==sy || sy=="")
{
if(mg<0 || OrderMagicNumber()==mg)
{
if(ty<0 || OrderType()==ty)
{
if(OrderType()<2)
{
if(OrderProfit()+OrderSwap()+OrderCommission() <= loss)
ClosePosBySelect();
}
}
}
}
}
}
}
Параметры:
- sy — символьное имя торгового инструмента для закрытия позиции. При пустом значении, функция будет проверять позиции со всех доступных символов.
- ty — тип ордера:
- 0 — Buy;
- 1 — Sell.
- mg — магическое число ордеров, при значении -1 будут учитываться ордера не зависимо от magic.
- loss — размер убытка, по достижению или преодолению которого функция закроет позицию.
Используемые функции
Для закрытия позиции используется функция ClosePosBySelect().
Написать комментарий
Комментарии ()