Forex_Strategy_Builder.Backtester.SetExitOrders C# (CSharp) Метод

SetExitOrders() статический приватный Метод

Sets an exit order
static private SetExitOrders ( int bar, double priceStopLong, double priceStopShort ) : void
bar int
priceStopLong double
priceStopShort double
Результат void
        static void SetExitOrders(int bar, double priceStopLong, double priceStopShort)
        {
            // When there is a Long Position we send a Stop Order to it
            if (session[bar].Summary.PosDir == PosDirection.Long)
            {
                double lots    = session[bar].Summary.PosLots;
                int    ifOrder = 0;
                int    toPos   = session[bar].Summary.PosNumb;
                string note    = Language.T("Exit Order to position") + " " + (toPos + 1);

                if (closeStrPriceType == StrategyPriceType.Close)
                    OrdSellMarket(bar, ifOrder, toPos, lots, priceStopLong, OrderSender.Close, OrderOrigin.Strategy, note);
                // The Stop Price can't be higher from the bar's opening price
                else if (priceStopLong < Open[bar])
                    OrdSellStop(bar, ifOrder, toPos, lots, priceStopLong, OrderSender.Close, OrderOrigin.Strategy, note);
                else
                    OrdSellMarket(bar, ifOrder, toPos, lots, priceStopLong, OrderSender.Close, OrderOrigin.Strategy, note);
            }

            // When there is a Short Position we send a Stop Order to it
            if (session[bar].Summary.PosDir == PosDirection.Short)
            {
                double lots    = session[bar].Summary.PosLots;
                int    ifOrder = 0;
                int    toPos   = session[bar].Summary.PosNumb;
                string note    = Language.T("Exit Order to position") + " " + (toPos + 1);

                if (closeStrPriceType == StrategyPriceType.Close)
                    OrdBuyMarket(bar, ifOrder, toPos, lots, priceStopShort, OrderSender.Close, OrderOrigin.Strategy, note);
                // The Stop Price can't be lower from the bar's opening price
                else if (priceStopShort > Open[bar])
                    OrdBuyStop(bar, ifOrder, toPos, lots, priceStopShort, OrderSender.Close, OrderOrigin.Strategy, note);
                else
                    OrdBuyMarket(bar, ifOrder, toPos, lots, priceStopShort, OrderSender.Close, OrderOrigin.Strategy, note);
            }

            // We send IfOrder Order Stop for each Entry Order
            for (int iOrd = 0; iOrd<session[bar].Orders; iOrd++)
            {
                Order entryOrder = session[bar].Order[iOrd];
                if (entryOrder.OrdSender == OrderSender.Open && entryOrder.OrdStatus == OrderStatus.Confirmed)
                {
                    int    ifOrder = entryOrder.OrdNumb;
                    int    toPos   = 0;
                    double lots    = entryOrder.OrdLots;
                    string note    = Language.T("Exit Order to order") + " " + (ifOrder + 1);

                    if (entryOrder.OrdDir == OrderDirection.Buy)
                        OrdSellStop(bar, ifOrder, toPos, lots, priceStopLong, OrderSender.Close, OrderOrigin.Strategy, note);
                    else
                        OrdBuyStop(bar, ifOrder, toPos, lots, priceStopShort, OrderSender.Close, OrderOrigin.Strategy, note);
                }
            }

            return;
        }