Ejemplo n.º 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;
        }
Ejemplo n.º 2
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();
        }
        public void test_GetFilled_Price()
        {
            ISignalContext context = new SignalContext();

            context.setPendingSignal1(AppConstant.BUY_SIGNAL, 20000, createOrder_Buy1Contract_1Complete(), "Buy Order");
            context.setPendingSignal2(AppConstant.SELL_SIGNAL, 22000, createOrder_Sell1Contract_0Complete(), "Sell Order");
            Assert.AreEqual(20010, context.getFilledPrice());

            context = new SignalContext();
            context.setPendingSignal1(AppConstant.BUY_SIGNAL, 20000, createOrder_Buy1Contract_0Complete(), "Buy Order");
            context.setPendingSignal2(AppConstant.SELL_SIGNAL, 22000, createOrder_Sell1Contract_1Complete(), "Sell Order");
            Assert.AreEqual(22010, context.getFilledPrice());

            context = new SignalContext();
            double filledPrice = (20010.0d * 1 + 20009 * 4 + 20008 * 5) / 10;

            context.setPendingSignal1(AppConstant.SELL_SIGNAL, 22000, createOrder_Sell1Contract_0Complete(), "Sell Order");
            context.setPendingSignal2(AppConstant.BUY_SIGNAL, 20000, createOrder_10Contract_10Complete(), "Buy Order");
            Assert.AreEqual(filledPrice, context.getFilledPrice());
        }