C#版支持多账户和两融的交易api实现

本文介绍了一个C#版的交易API实现,该API支持多账户,适用于自动化交易系统。采用异步处理的Dotnet Core架构,允许在多种操作系统如Centos、Ubuntu、Docker和Windows上部署,并能作为DLL供Python等语言调用进行量化交易。此API直接连接券商,无界面运行,避免模拟按键,广泛兼容各类券商。
摘要由CSDN通过智能技术生成

C#版支持多账户的交易api实现

能够部署到自己的自动化交易系统的API接口
也可以生成为DLL接口,采用Python等编程语言进行量化自动交易实现。
也可以在自己熟悉的编程语言中接入。
采用C# Dotnet Core架构异步处理,可以任意部署到自己的系统中。
不经过外部中转,直连券商交易,无界面运行,非模拟按键操作。
支持几乎大部分券商。
支持系统 Centos,Ubuntu,Docker,Windows等
支持32位,64位不限

[HttpPost("TradeInit")]
        [Description("初始化API")]
        public async Task<JsonResult> TradeInit([FromForm] IFormCollection form)
        {
            var result = await Task.Run(() =>
            {
                var ret = Api.Init();
                if (ret.Contains("OK"))
                {
                    Dictionary<string, string> data = new Dictionary<string, string>()
                    {
                        {"Expire",ret.Split(':')[1] },
                        {"Version",ret.Split(':')[2] }
                    };
                    return new ReturnResult<object>(ReturnResult.OK, $"初始化完成,{ret}", data);
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, ret, "");
            });
            return Json(result);
        }

        [HttpPost("Connect")]
        [Description("连接服务器")]
        public async Task<JsonResult> Connect([FromForm] IFormCollection form)
        {
            var result = await Task.Run(() => {
                var ret = Api.Connect();
                if (ret.Contains("OK"))
                {
                    return new ReturnResult<object>(ReturnResult.OK, "已连接服务器","");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, ret,"");
            });
            return Json(result);
        }

        [HttpPost("Disconnect")]
        [Description("断开服务器连接")]
        public async Task<JsonResult> Disconnect([FromForm] IFormCollection form)
        {
            var result = await Task.Run(() => {
                var ret = Api.Disconnect();
                if (ret)
                {
                    return new ReturnResult<object>(ReturnResult.OK, "已连断开服务器连接", "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, "断开连接失败", "");
            });
            return Json(result);
        }

        [HttpPost("GetCode")]
        [Description("发送验证码")]
        public async Task<JsonResult> GetCode([FromForm] IFormCollection form)
        {
            string mobile = form["mobile"];
            var result = await Task.Run(() => {

                if (Api.GetLoginMobileCode(mobile, out string msg))
                {
                    return new ReturnResult<object>(ReturnResult.OK, msg,"");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("VerifyMobile")]
        [Description("验证手机号")]
        public async Task<JsonResult> VerifyMobile([FromForm] IFormCollection form)
        {
            string mobile = form["mobile"];
            string code = form["code"];
            var result = await Task.Run(() => {

                if (Api.LoginMobile(mobile, code, out string msg))
                {
                    return new ReturnResult<object>(ReturnResult.OK, msg,"");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("Login")]
        [Description("登录券商")]
        public async Task<JsonResult> Login([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string password = form["password"];
            string qsid = form["qsid"];
            int islr = int.Parse(form["islr"]);
            string wtid = form["wtid"];
            string type = form["type"];

            var result = await Task.Run(() => {

                if (Api.SecuritiesLogin(account, password, qsid, wtid,out string msg, islr, type))
                {
                    var token = msg.Split('|')[1];
                    msg = msg.Split('|')[0];
                    Dictionary<string, string> data = new Dictionary<string, string>()
                    {
                        {"Token",token }
                    };
                    return new ReturnResult<object>(ReturnResult.OK, msg, data);
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("GetBalance")]
        [Description("查询资金股份")]
        public async Task<JsonResult> GetBalance([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            var result = await Task.Run(() => {

                if (Api.QueryData(account, token, 0, out string msg))
                {
                    if (msg.JsonValid())
                    {
                        var jsonObject = JsonSerializer.Deserialize<Dictionary<string, object>>(msg);
                        return new ReturnResult<object>(ResultStatusCode.OK, jsonObject, jsonObject.Count());
                    }
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("GetPosition")]
        [Description("查询持仓")]
        public async Task<JsonResult> GetPosition([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            var result = await Task.Run(() => {

                if (Api.QueryData(account, token, 1, out string msg))
                {
                    if (msg.JsonValid())
                    {
                        var jsonObject = JsonSerializer.Deserialize<List<Dictionary<string, object>>>(msg);
                        return new ReturnResult<object>(ResultStatusCode.OK, jsonObject, jsonObject.Count());
                    }
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("GetTodayEntrusts")]
        [Description("查询当日成交")]
        public async Task<JsonResult> GetTodayEntrusts([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            var result = await Task.Run(() => {

                if (Api.QueryData(account, token, 2, out string msg))
                {
                    if (msg.JsonValid())
                    {
                        var json = msg.ToJObject()["成交列表"];
                        var jsonObject = JsonSerializer.Deserialize<List<Dictionary<string, object>>>(json.ToJsonStr());
                        return new ReturnResult<object>(ResultStatusCode.OK, jsonObject, jsonObject.Count());
                    }
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("GetTodayTrades")]
        [Description("查询当日委托")]
        public async Task<JsonResult> GetTodayTrades([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            var result = await Task.Run(() => {

                if (Api.QueryData(account, token, 3, out string msg))
                {
                    if (msg.JsonValid())
                    {
                        var json = msg.ToJObject().ContainsKey("委托列表") ? msg.ToJObject()["委托列表"] : msg.ToJObject()["委托撤单查询"];
                        var jsonObject = JsonSerializer.Deserialize<List<Dictionary<string, object>>>(json.ToJsonStr());
                        return new ReturnResult<object>(ResultStatusCode.OK, jsonObject, jsonObject.Count());
                    }
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("GetHistoryEntrusts")]
        [Description("查询历史成交")]
        public async Task<JsonResult> GetHistoryEntrusts([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            string start = form["start"];
            string end = form["end"];
            var result = await Task.Run(() => {

                if (Api.QueryHistoryData(account, token, 0, start, end, out string msg))
                {
                    if (msg.JsonValid())
                    {
                        var json = msg.ToJObject().ContainsKey("历史成交列表") ? msg.ToJObject()["历史成交列表"] : msg.ToJObject()["历史成交查询"];
                        var jsonObject = JsonSerializer.Deserialize<List<Dictionary<string, object>>>(json.ToJsonStr());
                        return new ReturnResult<object>(ResultStatusCode.OK, jsonObject, jsonObject.Count());
                    }
                    return new ReturnResult<object>(ReturnResult.OK, msg,"");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("GetHistoryTrades")]
        [Description("查询历史委托")]
        public async Task<JsonResult> GetHistoryTrades([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            string start = form["start"];
            string end = form["end"];
            var result = await Task.Run(() => {

                if (Api.QueryHistoryData(account, token, 1, start, end, out string msg))
                {
                    if (msg.JsonValid())
                    {
                        var json = msg.ToJObject().ContainsKey("历史委托列表") ? msg.ToJObject()["历史委托列表"] : msg.ToJObject()["历史委托查询"];
                        var jsonObject = JsonSerializer.Deserialize<List<Dictionary<string, object>>>(json.ToJsonStr());
                        return new ReturnResult<object>(ResultStatusCode.OK, jsonObject, jsonObject.Count());
                    }
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }


        [HttpPost("Buy")]
        [Description("买入")]
        public async Task<JsonResult> Buy([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            string code = form["code"];
            string price = form["price"];
            string vol = form["vol"];

            var result = await Task.Run(() => {

                if (Api.TradeOrder(account, token, 0,code, price, vol, out string msg))
                {
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("Sell")]
        [Description("卖出")]
        public async Task<JsonResult> Sell([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            string code = form["code"];
            string price = form["price"];
            string vol = form["vol"];

            var result = await Task.Run(() => {
                if (Api.TradeOrder(account, token, 1, code, price, vol, out string msg))
                {
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("TradeOrder")]
        [Description("交易下单")]
        public async Task<JsonResult> TradeOrder([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            int category = int.Parse(form["category"]);
            string code = form["code"];
            string price = form["price"];
            string vol = form["vol"];

            var result = await Task.Run(() => {
                if (Api.TradeOrder(account, token, category, code, price, vol, out string msg))
                {
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("Cancel")]
        [Description("撤单")]
        public async Task<JsonResult> Cancel([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            string code = form["code"];
            string htbh = form["htbh"];
            var result = await Task.Run(() => {

                if (Api.CancelOrder(account, token, code, htbh, out string msg))
                {
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }


        [HttpPost("BuyBackLend")]
        [Description("逆回购借出")]
        public async Task<JsonResult> BuyBackLend([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            string code = form["code"];
            string price = form["price"];
            string vol = form["vol"];

            var result = await Task.Run(() => {
                if (Api.BuyBackLend(account, token, code, price, vol, out string msg))
                {
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("LendCancelOrder")]
        [Description("逆回购撤单")]
        public async Task<JsonResult> LendCancelOrder([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            string code = form["code"];
            string htbh = form["htbh"];
            var result = await Task.Run(() => {

                if (Api.LendCancelOrder(account, token, code, htbh, out string msg))
                {
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("GetLendTrades")]
        [Description("查询逆回购当日委托")]
        public async Task<JsonResult> GetLendTrades([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            var result = await Task.Run(() => {

                if (Api.LendQueryData(account, token, 0, out string msg))
                {
                    if (msg.JsonValid())
                    {
                        var json = msg.ToJObject().ContainsKey("委托列表") ? msg.ToJObject()["委托列表"] : msg.ToJObject()["委托撤单查询"];
                        var jsonObject = JsonSerializer.Deserialize<List<Dictionary<string, object>>>(json.ToJsonStr());
                        return new ReturnResult<object>(ResultStatusCode.OK, jsonObject, jsonObject.Count());
                    }
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

        [HttpPost("GetLendPosition")]
        [Description("查询逆回购当日成交")]
        public async Task<JsonResult> GetLendPosition([FromForm] IFormCollection form)
        {
            string account = form["account"];
            string token = form["token"];
            var result = await Task.Run(() => {

                if (Api.LendQueryData(account, token, 1, out string msg))
                {
                    if (msg.JsonValid())
                    {
                        var json = msg.ToJObject()["成交列表"];
                        var jsonObject = JsonSerializer.Deserialize<List<Dictionary<string, object>>>(json.ToJsonStr());
                        return new ReturnResult<object>(ResultStatusCode.OK, jsonObject, jsonObject.Count());
                    }
                    return new ReturnResult<object>(ReturnResult.OK, msg, "");
                }
                return new ReturnResult<object>(System.Net.HttpStatusCode.RequestTimeout, msg, "");
            });
            return Json(result);
        }

接口说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DaoYuanTech

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值