Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        /// <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);
        }
Example #6
0
        /// <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);
        }
Example #7
0
        /// <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);
        }
Example #8
0
        /// <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);
        }
Example #9
0
        /// <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);
        }