/// <summary> /// 用户登录 /// </summary> /// <param name="cb"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task REQ_LoginAsync(Action <int, object> cb, CancellationToken cancellationToken) { var req = new Gmex.API.WS.WsTradeMessageRequest("Login", new Models.TradeRequestLoginArgs { UserName = this._uname, VP = this._vpid, UserCred = this._apikey, DeviceInfo = "gmex-api-dotnet sample" }); await this.SendRequestAsync(req, (code, data) => { // {"code":9010,"data":"用户名或密码错误","rid":"1"} // {"code":0,"data":{"UserId":"1125623","UserName":"******"},"rid":"2"} if (code == 0) { var obj = data as Newtonsoft.Json.Linq.JObject; if (obj != null && obj.ContainsKey("UserId")) { this._uid = obj["UserId"].ToObject <string>(); } } cb(code, data); }, cancellationToken); }
/// <summary> /// 撤单 /// </summary> /// <param name="ord"></param> /// <param name="cb"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task REQ_OrderDelAsync(Models.Ord ord, Action <int, object> cb, CancellationToken cancellationToken) { var req = new Gmex.API.WS.WsTradeMessageRequest("OrderDel", ord); await this.SendRequestAsync(req, (code, data) => { //if (code == 0) //{ // var res = (data as Newtonsoft.Json.Linq.JToken)?.ToObject<Models.Ord>(); //} cb(code, data); }, cancellationToken); }
/// <summary> /// 调整保证金 /// </summary> /// <param name="AccTyp"></param> /// <param name="sym"></param> /// <param name="postionId"></param> /// <param name="param"></param> /// <param name="cb"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task REQ_PosTransMgnAsync(int AccTyp, string sym, string postionId, decimal param, Action <int, object> cb, CancellationToken cancellationToken) { var req = new Gmex.API.WS.WsTradeMessageRequest("PosTransMgn", new Dictionary <string, object>() { { "AId", this._uid + AccTyp.ToString("D2") }, { "Sym", sym }, { "PId", postionId }, { "Param", param } } ); await this.SendRequestAsync(req, (code, data) => { // TODO cb(code, data); }, cancellationToken); }
/// <summary> /// 设置超时取消报单 /// </summary> /// <param name="AccTyp"></param> /// <param name="sec"></param> /// <param name="cb"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task REQ_CancelAllAfterAsync(int AccTyp, int sec, Action <int, object> cb, CancellationToken cancellationToken) { var req = new Gmex.API.WS.WsTradeMessageRequest("CancelAllAfter", new Dictionary <string, object>() { { "AId", this._uid + AccTyp.ToString("D2") }, { "Sec", sec } } ); await this.SendRequestAsync(req, (code, data) => { // TODO cb(code, data); }, cancellationToken); }
/// <summary> /// 获取风险限额 /// </summary> /// <param name="AccTyp"></param> /// <param name="sym"></param> /// <param name="cb"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task REQ_GetRiskLimitAsync(int AccTyp, string sym, Action <int, Models.RiskLimit> cb, CancellationToken cancellationToken) { var req = new Gmex.API.WS.WsTradeMessageRequest("GetRiskLimit", new Dictionary <string, string>() { { "AId", this._uid + AccTyp.ToString("D2") }, { "Sym", sym } } ); await this.SendRequestAsync(req, (code, data) => { var rl = (data as Newtonsoft.Json.Linq.JToken)?.ToObject <Models.RiskLimit>(); cb(code, rl); }, cancellationToken); }
/// <summary> /// 查询资金中心钱包信息 /// </summary> /// <param name="cb"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task REQ_GetCcsWalletsAsync(Action <int, List <Models.CcsWallet> > cb, CancellationToken cancellationToken) { var req = new Gmex.API.WS.WsTradeMessageRequest("GetCcsWallets", null); await this.SendRequestAsync(req, (code, data) => { var msgs = new List <Models.CcsWallet>(); if (code == 0) { var array = data as Newtonsoft.Json.Linq.JArray; foreach (var l in array) { msgs.Add(l.ToObject <Models.CcsWallet>()); } } cb(code, msgs); }, cancellationToken); }
/// <summary> /// 查询合约/交易对列表详情 /// </summary> /// <param name="cb"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task REQ_GetAssetDAsync(Action <int, List <Models.AssetD> > cb, CancellationToken cancellationToken) { // {"rid":"40","code":0,"data":[{Sym...},... ]} var req = new Gmex.API.WS.WsTradeMessageRequest("GetAssetD", null); await this.SendRequestAsync(req, (code, data) => { var instruments = new List <Models.AssetD>(); if (code == 0) { var array = data as Newtonsoft.Json.Linq.JArray; foreach (var l in array) { instruments.Add(l.ToObject <Models.AssetD>()); } } cb(code, instruments); }, cancellationToken); }
/// <summary> /// 查询交易对的扩展属性 /// </summary> /// <param name="AccTyp"></param> /// <param name="Sym"></param> /// <param name="cb"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task REQ_GetAssetExAsync(int AccTyp, string Sym, Action <int, Models.AssetEx> cb, CancellationToken cancellationToken) { var req = new Gmex.API.WS.WsTradeMessageRequest("GetAssetEx", new Dictionary <string, string>() { { "AId", this._uid + AccTyp.ToString("D2") }, { "Sym", Sym } } ); await this.SendRequestAsync(req, (code, data) => { Models.AssetEx ex = null; var obj = data as Newtonsoft.Json.Linq.JObject; if (obj != null) { ex = obj.ToObject <Models.AssetEx>(); } cb(code, ex); }, cancellationToken); }
/// <summary> /// 查询最近的历史报单 /// NOTE: 这里只提供最近100条记录,更多信息请去网站下载。 /// </summary> /// <param name="AccTyp"></param> /// <param name="cb"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task REQ_GetHistOrdersAsync(int AccTyp, Action <int, List <Models.Ord> > cb, CancellationToken cancellationToken) { var req = new Gmex.API.WS.WsTradeMessageRequest("GetHistOrders", new Dictionary <string, string>() { { "AId", this._uid + AccTyp.ToString("D2") } } ); await this.SendRequestAsync(req, (code, data) => { var msgs = new List <Models.Ord>(); if (code == 0) { var array = data as Newtonsoft.Json.Linq.JArray; foreach (var l in array) { msgs.Add(l.ToObject <Models.Ord>()); } } cb(code, msgs); }, cancellationToken); }