// 更新持仓变化 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); }
/// <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); }