Beispiel #1
0
        // 更新持仓变化
        public async Task PositionUpdate(Initials Init)
        {
            int interval = int.Parse(Funs.CONFIG.interval);

            void LongTask()
            {
                while (true)
                {
                    try
                    {
                        foreach (KeyValuePair <string, UserInfo> kv in Initials.UserDicts2)
                        {
                            //if (kv.Value.token != null)
                            //{
                            FuturepositionQry_Input objFuturepositionQry_Input = new FuturepositionQry_Input();
                            objFuturepositionQry_Input.in_user_token = Funs.CONFIG.token;
                            //objFuturepositionQry_Input.in_market_no = "7";
                            //objFuturepositionQry_Input.in_asset_no = kv.Value.asset_no;
                            objFuturepositionQry_Input.in_combi_no = kv.Value.combi_no;
                            //objFuturepositionQry_Input.in_account_code = kv.Value.account_code;

                            var pos = Init.hsPack2.Fun31003_FuturepositionQry(objFuturepositionQry_Input);
                            if (pos.Count > 0)
                            {
                                if (pos[0].out_stock_code != null)
                                {
                                    Init.rClient.StringSet(kv.Key, Newtonsoft.Json.JsonConvert.SerializeObject(pos));
                                }
                            }
                            //}
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.ToString());
                    }
                    finally
                    {
                        Thread.Sleep(interval);
                    }
                }
            }

            await Task.Factory.StartNew(() => LongTask(), TaskCreationOptions.LongRunning);
        }
Beispiel #2
0
        /// <summary>
        /// 心跳、成交、委托流水读取线程
        /// </summary>
        /// <param name="Init"></param>
        /// <returns></returns>
        public async static Task AsyHSWorker(Initials Init)
        {
            string account_code = ConfigurationManager.AppSettings["account_code"];
            string asset_no     = ConfigurationManager.AppSettings["asset_no"];
            int    interval     = int.Parse(ConfigurationManager.AppSettings["interval"]);

            void LongTask()
            {
                while (true)
                {
                    try
                    {
                        // 发送心跳
                        Init.hsPack.Fun10000_heartBeat(Init.logOut.out_user_token);

                        // 查询持仓
                        FuturepositionQry_Input objFuturepositionQry_Input = new FuturepositionQry_Input();
                        objFuturepositionQry_Input.in_user_token   = Init.logOut.out_user_token;
                        objFuturepositionQry_Input.in_asset_no     = asset_no;
                        objFuturepositionQry_Input.in_account_code = account_code;
                        //objFuturepositionQry_Input.in_position_str = "0";

                        List <FuturepositionQry_Output> pos = Init.hsPack.Fun31003_FuturepositionQry(objFuturepositionQry_Input);

                        if (pos.Count > 0)
                        {
                            if (pos[0].out_stock_code != null)
                            {
                                positionsQueues = new ConcurrentBag <FuturepositionQry_Output>(pos);
                            }
                        }
                        //positionsQueues
                        // 查询成交
                        FuturedealQry_Input objFuturedealQry_Input = new FuturedealQry_Input();
                        objFuturedealQry_Input.in_user_token   = Init.logOut.out_user_token;
                        objFuturedealQry_Input.in_asset_no     = asset_no;
                        objFuturedealQry_Input.in_account_code = account_code;
                        objFuturedealQry_Input.in_position_str = "0";

                        List <FuturedealQry_Output> deals = Init.hsPack.Fun33003_FuturedealQry(objFuturedealQry_Input);

                        // 查询委托
                        FutureentrustQry_Input objFutureentrustQry_Input = new FutureentrustQry_Input();

                        objFutureentrustQry_Input.in_user_token   = Init.logOut.out_user_token;
                        objFutureentrustQry_Input.in_asset_no     = asset_no;
                        objFutureentrustQry_Input.in_account_code = account_code;
                        List <FutureentrustQry_Output> orders = Init.hsPack.Fun32003_FutureentrustQry(objFutureentrustQry_Input);
                        if (orders.Count > 0)
                        {
                            if (orders[0].out_stock_code != null)
                            {
                                ordersQueues = new ConcurrentBag <FutureentrustQry_Output>(orders);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.ToString());
                    }
                    finally
                    {
                        Thread.Sleep(interval);
                    }
                }
            }

            await Task.Factory.StartNew(() => LongTask(), TaskCreationOptions.LongRunning);
        }