static void MarginCallCheckAtBarClosing(int bar)
{
if (!Configs.TradeUntilMarginCall ||
session[bar].Summary.FreeMargin >= 0)
return;
if (session[bar].Summary.PosDir == PosDirection.None ||
session[bar].Summary.PosDir == PosDirection.Closed)
return;
CancelNoexecutedExitOrders(bar);
int ifOrd = 0;
int toPos = session[bar].Summary.PosNumb;
double lots = session[bar].Summary.PosLots;
string note = Language.T("Close due to a Margin Call");
if (session[bar].Summary.PosDir == PosDirection.Long)
{
OrdSellMarket(bar, ifOrd, toPos, lots, Close[bar], OrderSender.Close, OrderOrigin.MarginCall, note);
}
else if (session[bar].Summary.PosDir == PosDirection.Short)
{
OrdBuyMarket(bar, ifOrd, toPos, lots, Close[bar], OrderSender.Close, OrderOrigin.MarginCall, note);
}
ExecuteExitAtClosingPrice(bar);
// Margin Call bar
if (marginCallBar == 0)
marginCallBar = bar;
return;
}