Функция закрывает позиции по достижению заданной прибыли, при этом учитывается своп и комиссия.
void ClosePosBySizeProfit(
string sy="", // имя символа ("" - все символы)
int ty=-1, // тип ордера (-1 - все типы ордеров)
int mg=-1, // магическое число ордеров (-1 - все магики)
int prof=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()>=prof)
ClosePosBySelect();
}
}
}
}
}
}
}
Параметры
- sy — символьное имя торгового инструмента для закрытия позиции. При пустом значении, функция будет проверять позиции со всех доступных символов;
- ty — тип ордера:
- 0 — Buy;
- 1 — Sell.
- mg — магическое число ордеров, при значении -1 будут учитываться ордера не зависимо от magic;
- prof — размер прибыли, по достижению или преодолению которого функция закроет позицию.
Для закрытия позиции используется функция ClosePosBySelect().
Написать комментарий
Комментарии ()