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; }
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()); }