示例#1
0
        protected void checkExitOrderCompleted(Series <DateTime, MarketDataElement> series)
        {
            if (!execution.isPositionOnSignalOnClose())
            {
                return;
            }

            immediatePnLAfterPositionClose = 0;
            int index = execution.getIndexClosedAppOrder();

            log.Info("[Strategy] : Exit Strategy Executed!!!");
            if (index == 1)
            {
                log.Info("Executed Rule = " + execution.PendingOrder1.TriggerRule);
                log.Info("Executed Rule Remark = " + execution.PendingOrder1.Remark);
            }
            else
            {
                log.Info("Executed Rule = " + execution.PendingOrder2.TriggerRule);
                log.Info("Executed Rule Remark = " + execution.PendingOrder2.Remark);
            }
            log.Info("******************************************************************");
            lastExecutePrice = execution.getFilledPrice();
            lastSignalPrice  = execution.getSignalPriceForExecution();
            execution.completePendingSignal();
            stgHelper.cancelPendingTrades();
            execution.flushCompletSignal();
            if (execution.CurrentMarketPosition == 0)
            {
                immediatePnLAfterPositionClose = execution.PnL;
                execution.PnL = 0;
            }
            immediateOrderExit = true;
        }
        public void test_CompletePendingSignal()
        {
            ISignalContext context = new SignalContext();

            context.CurrentMarketPosition = 1;
            context.setPendingSignal1(AppConstant.BUY_SIGNAL, 20000, createOrder_Buy1Contract_1Complete(), "Buy Order");
            context.completePendingSignal();
            Assert.AreEqual(2, context.CurrentMarketPosition);

            context = new SignalContext();
            context.CurrentMarketPosition = 1;
            context.setPendingSignal1(AppConstant.SELL_SIGNAL, 22000, createOrder_Sell1Contract_1Complete(), "Sell Order");
            context.completePendingSignal();
            Assert.AreEqual(0, context.CurrentMarketPosition);

            context = new SignalContext();
            context.CurrentMarketPosition = 1;
            context.setPendingSignal1(AppConstant.BUY_SIGNAL, 20000, createOrder_10Contract_10Complete(), "Buy Order");
            context.completePendingSignal();
            Assert.AreEqual(11, context.CurrentMarketPosition);

            context = new SignalContext();
            context.CurrentMarketPosition = -1;
            context.setPendingSignal1(AppConstant.SELL_SIGNAL, 22000, createOrder_Sell10Contract_10Complete(), "Sell Order");
            context.completePendingSignal();
            Assert.AreEqual(-11, context.CurrentMarketPosition);

            context = new SignalContext();
            context.CurrentMarketPosition = 1;
            context.setPendingSignal1(AppConstant.BUY_SIGNAL, 20000, createOrder_Buy1Contract_0Complete(), "Buy Order");
            context.completePendingSignal();
            Assert.AreEqual(1, context.CurrentMarketPosition);
        }
示例#3
0
        private void checkExitOrderCompleted(Series <DateTime, MarketDataElement> series)
        {
            if (!execution.isPositionOnSignalOnClose())
            {
                return;
            }
            int index = execution.getIndexClosedAppOrder();

            log.Info("[Strategy] : Exit Strategy Executed!!!");
            if (index == 1)
            {
                log.Info("Take Profit Executed!!!");
            }
            else
            {
                log.Info("Cutloss Executed!!!");
            }
            log.Info("******************************************************************");
            lastExecutePrice = execution.getFilledPrice();
            lastSignalPrice  = execution.getSignalPriceForExecution();
            execution.completePendingSignal();
            stgHelper.cancelPendingTrades();
            execution.flushCompletSignal();
        }