Forex_Strategy_Builder.Backtester.MarginCallCheckAtBarClosing C# (CSharp) Method

MarginCallCheckAtBarClosing() static private method

Checks and perform actions in case of a Margin Call
static private MarginCallCheckAtBarClosing ( int bar ) : void
bar int
return void
        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;
        }