Exemplo n.º 1
0
        private void OnOrder(OrderStatusReport aReport)
        {
            logger.Info(aReport.info());
            if (String.Compare(orderinfo.getUserkey(), aReport.userkey) == 0)
            {
                orderStatusReport = aReport;
                if (tracking.orderState == OrderState.Submitted)
                {
                    if (String.Compare(aReport.status, "委托成功") == 0)
                    {
                        changeState(OrderState.WaitingFilled);
                    }

                    if (String.Compare(aReport.status, "委托失败") == 0)
                    {
                        changeState(OrderState.OrderFailed);
                    }
                }

                if (tracking.orderState == OrderState.CancealOrder)
                {
                    if (String.Compare(aReport.status, "委托删单成功") == 0)
                    {
                        changeState(OrderState.Canceled);
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void OnInfo(int nInfoType, int nInfo)
        {
            //throw new NotImplementedException();
            string luserkey;

            switch (nInfoType)
            {
            case  INFO_TYPE_ACCOUNTS:
                String AccountInfo = "";
                for (int i = 0; i < nInfo; i++)
                {
                    AccountInfo = "Account:" + tc.GetInfoString(nInfoType, i, 0) + "\n";
                    AccountInfo = AccountInfo + "Name:" + tc.GetInfoString(nInfoType, i, 1) + "\n";
                    AccountInfo = AccountInfo + "Type:" + tc.GetInfoString(nInfoType, i, 2) + "\n";
                    AccountInfo = AccountInfo + "Broker:" + tc.GetInfoString(nInfoType, i, 3) + "\n";
                    AccountInfo = AccountInfo + "LoginID:" + tc.GetInfoString(nInfoType, i, 4) + "\n";
                    AccountInfo = AccountInfo + "Session:" + tc.GetInfoString(nInfoType, i, 5) + "\n";
                    logger.Info(AccountInfo);
                }
                break;

            case INFO_TYPE_STK_MARGINS:
                logger.Info("Function is not support");
                break;

            case INFO_TYPE_FUT_MARGINS:    //FutMargins

                for (int i = 0; i < nInfo; i++)
                {
                    MarginReport aMargineReport = new MarginReport();

                    aMargineReport.time           = tc.GetInfoString(nInfoType, i, 0);
                    aMargineReport.broker         = tc.GetInfoString(nInfoType, i, 1);
                    aMargineReport.account        = tc.GetInfoString(nInfoType, i, 2);
                    aMargineReport.preBalance     = tc.GetInfoString(nInfoType, i, 4);
                    aMargineReport.depositWithraw = tc.GetInfoString(nInfoType, i, 5);
                    aMargineReport.commission     = tc.GetInfoString(nInfoType, i, 6);
                    aMargineReport.closeProfit    = tc.GetInfoString(nInfoType, i, 10);
                    aMargineReport.balance        = tc.GetInfoString(nInfoType, i, 11);
                    aMargineReport.positionProfit = tc.GetInfoString(nInfoType, i, 12);
                    aMargineReport.currMargin     = tc.GetInfoString(nInfoType, i, 14);
                    aMargineReport.Available      = tc.GetInfoString(nInfoType, i, 18);
                    aMargineReport.FrozenMargin   = tc.GetInfoString(nInfoType, i, 50);
                    logger.Info("On Margin Status: " + aMargineReport.info());
                    onMargin(aMargineReport);
                }
                break;

            case INFO_TYPE_STK_POSITIONS:    //StkPositions
                logger.Info("Function is not support");
                break;

            case INFO_TYPE_FUT_POSITIONS:    //FutPositions
                for (int i = 0; i < nInfo; i++)
                {
                    PositionReport aPosReport = new PositionReport();
                    aPosReport.broker     = tc.GetInfoString(nInfoType, i, 0);
                    aPosReport.account    = tc.GetInfoString(nInfoType, i, 1);
                    aPosReport.symbolid   = tc.GetInfoString(nInfoType, i, 2);
                    aPosReport.symbolname = tc.GetInfoString(nInfoType, i, 3);
                    aPosReport.month      = tc.GetInfoString(nInfoType, i, 4);
                    aPosReport.buysell    = tc.GetInfoString(nInfoType, i, 5);
                    aPosReport.qty        = tc.GetInfoString(nInfoType, i, 6);
                    aPosReport.price      = tc.GetInfoString(nInfoType, i, 7);
                    aPosReport.exchange   = tc.GetInfoString(nInfoType, i, 8);
                    aPosReport.billtype   = tc.GetInfoString(nInfoType, i, 9);
                    aPosReport.time       = tc.GetInfoString(nInfoType, i, 10);
                    aPosReport.symbol     = tc.GetInfoString(nInfoType, i, 11);
                    logger.Info("On Position Status: " + aPosReport.info());
                    onPosition(aPosReport);
                }
                break;

            case INFO_TYPE_OPT_POSITIONS:    //OptPositions
                logger.Info("Function is not support");
                break;

            case INFO_TYPE_ORDER_STATUS:    //OrderStatus

                OrderStatusReport aStatusReport = new OrderStatusReport();
                aStatusReport.account      = tc.GetInfoString(nInfoType, nInfo, 0);
                aStatusReport.orderNumber  = tc.GetInfoString(nInfoType, nInfo, 1);
                aStatusReport.status       = tc.GetInfoString(nInfoType, nInfo, 11);
                aStatusReport.iceid        = tc.GetInfoString(nInfoType, nInfo, 25);
                aStatusReport.abbrname     = utility.getAbbrnameFromICEID(aStatusReport.iceid);
                aStatusReport.buySellStr   = tc.GetInfoString(nInfoType, nInfo, 6);
                aStatusReport.price        = tc.GetInfoValue(nInfoType, nInfo, 7);
                aStatusReport.lots         = tc.GetInfoValue(nInfoType, nInfo, 6);
                aStatusReport.filledNumber = tc.GetInfoValue(nInfoType, nInfo, 9);
                aStatusReport.memo         = tc.GetInfoString(nInfoType, nInfo, 24);
                aStatusReport.cancealable  = tc.GetInfoString(nInfoType, nInfo, 23);
                aStatusReport.time         = tc.GetInfoString(nInfoType, nInfo, 12);
                luserkey = tc.GetInfoString(nInfoType, nInfo, 14);

                logger.Info("userkey before replace..." + luserkey);

                if (String.Compare(aStatusReport.account, "8070-880937") == 0)
                {
                    int aIdx = luserkey.IndexOf("]");
                    int bIdx = luserkey.IndexOf("[!@6]");
                    luserkey = luserkey.Substring(aIdx + 1, bIdx - aIdx - 1);
                }

                logger.Info("userkey after replace..." + luserkey);

                aStatusReport.userkey = luserkey;


                logger.Info("On Order Status: " + aStatusReport.info());
                onOrder(aStatusReport);
                break;

            case INFO_TYPE_FILLED_ORDERS:    //FilledOrders
                FilledOrderReport aFilledReport = new FilledOrderReport();

                aFilledReport.account      = tc.GetInfoString(nInfoType, nInfo, 0);
                aFilledReport.orderNumber  = tc.GetInfoString(nInfoType, nInfo, 1);
                aFilledReport.iceid        = tc.GetInfoString(nInfoType, nInfo, 25);
                aFilledReport.abbrname     = utility.getAbbrnameFromICEID(aFilledReport.iceid);
                aFilledReport.buySellStr   = tc.GetInfoString(nInfoType, nInfo, 6);;
                aFilledReport.filledNumber = tc.GetInfoValue(nInfoType, nInfo, 9);
                aFilledReport.avgPrice     = tc.GetInfoValue(nInfoType, nInfo, 10);
                aFilledReport.memo         = tc.GetInfoString(nInfoType, nInfo, 24);
                aFilledReport.status       = tc.GetInfoString(nInfoType, nInfo, 11);
                luserkey = tc.GetInfoString(nInfoType, nInfo, 14);

                logger.Info("userkey before replace..." + luserkey);

                if (String.Compare(aFilledReport.account, "8070-880937") == 0)
                {
                    int aIdx = luserkey.IndexOf("]");
                    int bIdx = luserkey.IndexOf("[!@6]");
                    luserkey = luserkey.Substring(aIdx + 1, bIdx - aIdx - 1);
                }

                logger.Info("userkey after replace..." + luserkey);

                aFilledReport.userkey = luserkey;

                aFilledReport.time = tc.GetInfoString(nInfoType, nInfo, 12);
                logger.Info("On Filled Order Status: " + aFilledReport.info());
                onFilled(aFilledReport);
                break;
            }
        }