.NET+Python量化【1】——环境部署和个人资金账户信息查询

前言:量化资料很少,.NET更少。那我就来开个先河吧~ 以下是使用QMT进行量化开发的环境部署和基础信息获取有关操作。

1、首先自己申请券商的QMT权限,此步骤省略。

2、登陆QMT,选择极简模式,或者独立交易模式之类的。会进入到miniQMT里面。

3、安装python环境,环境版本随意。我本地是3.10版本。此步骤省略。

4、创建一个.net项目,用来测试使用。我此处使用的.net 8环境进行测试。

e9f3e36d30351dc43bf3203dda9d59a2.png

5、使用miniqmt,需要和xtquant库进行通信,所以需要安装xtquant包。如图,xtquant包下载时候,也会自动下载有关依赖,例如包括常用的pandas、numpy等包。

410ffbd13f7d2540442e33fa0a9b250b.png

6、.NET程序引用包 pythonnet,并且python环境也要安装pythonnet环境:pip install pythonnet

dd4237a1b8736877e7e5869c3329233e.png

7、设置python解释器路径,以及初始化

6bb5ef7b50b67b28455ca0d1a96372b7.png

8、引用需要用到的一些python包:

a7182fb4ab8a600c6af3f9fe2aefd40f.png

9、设置个人账户的信息,包括你的QMT安装路径、QMT个人账户

b879756b8b928d530a2af754730baa98.png

10、创建交易对象

71c7f8407352fade9406db1bc8b5b929.png

11、连接miniqmt终端

efc3ad71a16c01891375265c13ded473.png

12、订阅个人账户信息

8b3783867df829c545979d71551bc775.png

以上是基础操作,需要保证账户订阅成功,才可以继续开发后续的其他信息的订阅。

13、查询账户信息

06e71f4b788df169d598b9e03ec443cc.png

14、查询委托单信息

4bb4fa2c7f87861359b7e828c4b3bb42.png

15、查询成交信息

e462fd20df370809e850772b67df0622.png

16、查询持仓信息

0d932c14b315c51a2b0f7abc2d0416a3.png

然后运行一下,看下效果

由于没有持仓和其他数据,所以只有个人账户的信息

7318a30a881e06d86198d2aee5dfa13a.png

QMT交易客户端也可以看到信息,信息是匹配的。

c6e26d101952aa484b4eeac67a54c1ba.png

其他信息,大家可以自行把玩。后续会看心情,更新一些量化爬坑开发经历,欢迎大佬们持续关注~ 以上测试有关具体代码如下:

// See https://aka.ms/new-console-template for more information
using Python.Runtime;
using System.Diagnostics;Console.WriteLine("Hello, World!");
// 设置 Python 解释器的 DLL 路径
string pythonDllPath = @"C:\Users\Wesky\AppData\Local\Programs\Python\Python310\python310.dll"; // Python 安装路径
Environment.SetEnvironmentVariable("PYTHONNET_PYDLL", pythonDllPath);
// 初始化 Python 引擎
PythonEngine.Initialize();using (Py.GIL())
{dynamic sys = Py.Import("sys");dynamic time = Py.Import("time");dynamic datetime = Py.Import("datetime");dynamic xtquant_xttrader = Py.Import("xtquant.xttrader");dynamic xttype = Py.Import("xtquant.xttype");string path = @"D:\XXXXX\userdata_mini"; // 你自己的QMT安装路径string acct = "xxxxx"; // 你自己的资金账户// 创建交易对象int session_id = (int)time.time();dynamic xt_trader = xtquant_xttrader.XtQuantTrader(path, session_id);// 连接 miniQMT 终端xt_trader.start();if (xt_trader.connect() == 0){Console.WriteLine("【终端连接成功!】");}else{Console.WriteLine("【终端连接失败!】请运行并登录miniQMT.EXE终端");return;}// 订阅账户信息dynamic ID = xttype.StockAccount(acct);int subscribe_result = xt_trader.subscribe(ID);if (subscribe_result == 0){Console.WriteLine("【账户信息订阅成功!】");}else{Console.WriteLine("【账户信息订阅失败!】 账户配置错误,检查账号是否正确。");sys.exit();return;}Console.WriteLine("************* 账户信息 *****************");dynamic asset = xt_trader.query_stock_asset(ID);if (asset != null){Console.WriteLine($"ID = {asset.account_id}");Console.WriteLine($"资产总额 = {asset.total_asset}");Console.WriteLine($"持仓市值 = {asset.market_value}");Console.WriteLine($"可用资金 = {asset.cash}");Console.WriteLine($"在途资金 = {asset.frozen_cash}");}// 委托信息Console.WriteLine("**************** 委托信息 **********************");foreach (dynamic order in xt_trader.query_stock_orders(ID, cancelable_only: true)){Console.WriteLine($"编号 = {order.order_id}");Console.WriteLine($"代码 = {order.stock_code}");Console.WriteLine($"委托 = {order.order_volume}");Console.WriteLine($"成交 = {order.traded_volume}");Console.WriteLine($"委价 = {order.price}");Console.WriteLine($"状态 = {order.order_status}");Console.WriteLine($"未成 = {order.order_volume - order.traded_volume}");Console.WriteLine($"报单时间 = {datetime.datetime.fromtimestamp(order.order_time).strftime("%H:%M:%S")}");}// 成交信息Console.WriteLine("**************** 成交 **********************");foreach (dynamic trade in xt_trader.query_stock_trades(ID)){Console.WriteLine($"代码 = {trade.stock_code}");Console.WriteLine($"成交 = {trade.traded_volume}");Console.WriteLine($"成交价 = {trade.traded_price}");Console.WriteLine($"成交额 = {trade.traded_amount}");Console.WriteLine($"订单编号 = {trade.order_id}");Console.WriteLine($"成交编号 = {trade.traded_id}");Console.WriteLine($"成交时间 = {datetime.datetime.fromtimestamp(trade.traded_time).strftime("%H:%M:%S")}");}// 持仓信息Console.WriteLine("**************** 持仓信息 **********************");foreach (dynamic position in xt_trader.query_stock_positions(ID)){Console.WriteLine($"代码:{position.stock_code}");Console.WriteLine($"持仓:{position.volume}");Console.WriteLine($"可用:{position.can_use_volume}");Console.WriteLine($"冻结:{position.frozen_volume}");Console.WriteLine($"开仓价格:{position.open_price}");Console.WriteLine($"市值:{position.market_value}");Console.WriteLine($"在途股份:{position.on_road_volume}");}
}Console.ReadLine();// 关闭 Python 引擎
PythonEngine.Shutdown();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里员工:“大厂病”导致有些人不太正常

阿里巴巴对“大公司病”开刀 阿里巴巴宣布对“大公司病”开刀,终于有高层意识到这个问题的严重性,并决心解决。所谓“大公司病”,不仅体现在规模臃肿、部门繁多、层次复杂,还包括中层管理人员的不作为。这些人处在上传下达的位置&…

软件测试面试题回答

**软件测试面试题回答** 一、**软件测试基础知识** 1. **测试的目的** - 软件测试的目的是为了找出软件中的缺陷和错误,确保软件的质量符合预定的需求和期望。通过测试,我们可以提高软件的可靠性、稳定性和用户满意度。 2. **测试的分类** - 测…

旅游管理平台系统

摘要 如今许多地区的风景已经随着网络技术的不断发展和进步而映入人们的眼帘,旅游已经成为一种大众化的休闲方式。而青海海西州风光旖旎,民族文化独特,更是吸引了众多游客纷至沓来。海西州地域广阔、人烟稀少、是一个经济发展缓慢的地方&…

nginx+tomcat负载均衡、动静分离群集【☆☆☆☆☆】

Nginx是一款非常优秀的HTTP服务器软件,性能比tomcat更优秀,它支持高达50 000个并发连接数,拥有强大的静态资源处理能力,运行稳定,内存、CPU等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的…

Python Textract库:文本提取

更多Python学习内容:ipengtao.com Textract是一个强大的Python库,用于从各种文件格式中提取文本。无论是PDF、Word文档、Excel电子表格、HTML页面还是图像,Textract都能有效地提取其中的文本内容。Textract通过集成多种开源工具和库&#xff…

opencascade AIS_InteractiveContext源码学习1 object display management 对象显示管理

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行…

centOS Stream9配置NAT8网络

首先将VMware关机,添加网络适配器 启动虚拟机,查看ens192是否打开连接 安装的图形化需要查看右上角电源处网卡是否连接 最小化安装一般不会出现未连接的状态 使用ip a 查看 配置网卡文件 cd /etc/NetworkManager/system-connections/cd到当前目录下…

7-Zip

最牛掰的解压缩的开源软件!赏!!!! 概述 7-Zip 是一款免费开源的文件归档和压缩软件,由于其高压缩比和支持多种格式等优势,越来越受到用户的青睐。7-Zip 最初由一位俄罗斯程序员开发&#xff0c…

在 Visual Studio 2022 (Visual C++ 17) 中使用 Visual Leak Detector

在 Visual C 2022 中使用 Visual Leak Detector 1 问题描述1.1 内存泄漏的困扰和解决之道1.2 内存泄漏检测工具的选择1.3 VLD的现状 2 安装和设置VLD的环境变量2.1 安装VLD文件2.2 VLD安装后的目录和文件说明2.2.1 include子目录说明2.2.2 lib子目录说明2.2.2.1 目录整理 2.2.3…

uniapp app一键登录

一键登录不需要单独写页面,uniapp 有原生的页面 第一步,登录Dcloud后台》我的应用》点击应用名称 填写完点击 uniCloud模块新建一个服务空间》选择免费 , 创建完点击一键登录,添加应用,这个需要审核,“大概一天左右”…

DevOps开发工程师在软件产品发版流程中的角色与工作

目录 引言 一、需求分析阶段 1.1 协助需求收集与分析 1.2 制定环境需求 二、开发阶段 2.1 搭建开发环境 2.2 自动化构建 2.3 代码质量检查 三、测试阶段 3.1 自动化测试 3.2 测试报告生成 3.3 性能测试与监控 四、部署阶段 4.1 部署策略制定 4.2 部署自动化 4.3…

ORM框架SQLAlchemy

ORM框架SQLAlchemy 目录 ORM框架SQLAlchemy介绍安装架构连接数据库1. PostgreSQL2. MySQL3. Oracle4. Microsoft SQL Server5. SQLite 创建连接池原生Python操作数据库SQLAlchemy的ORM操作创建表外键字段的创建一对多多对多 ORM操作增删改查查询添加删除修改 介绍 sqlalchemy是…

帝国CMS二次开发H5手游如何让同一个url 不同的模板

帝国CMS在二次开发《72游戏网》的时候,H5手游如何让同一个url 不同的模板 比如:www.72yy.com/you/11935.html 是H5游戏宣传页 由于很多H5游戏和网页游戏都是需要使用iframe来嵌套使用的 利于自己网站SEO收录优化 那么就再复制一套程序 用二级目录或者二…

三菱汽车常用油封类型

油封的功能 油封在防止润滑剂泄漏和污染物进入方面起着关键作用,从而确保各种机械部件的顺利运行。它们存在于发动机、变速箱和差速器等关键部位。本文概述了三菱汽车常用的油封类型,详细介绍了它们的应用及其带来的好处。 一、三菱汽车的主要油封类型…

一种基于非线性滤波过程的旋转机械故障诊断方法(MATLAB)

在众多的旋转机械故障诊断方法中,包络分析,又称为共振解调技术,是目前应用最为成功的方法之一。首先,对激励引起的共振频带进行带通滤波,然后对滤波信号进行包络谱分析,通过识别包络谱中的故障相关的特征频…

【Linux基础IO】重定向以及原理分析

我们先来看下面一个情况&#xff1a; #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define filename "text.txt"int main(){close(1);//关…

[Linux] 系统管理

全局配置文件 用户个性化配置 配置文件的种类 alias命令和unalias命令 进程管理 进程表

使用Docker在Mac上部署OnlyOffice,预览编辑word、excel、ppt非常好

前端编辑word、ppt文档&#xff0c;开源免费方案并没有找到合适的&#xff0c;像wps、石墨文档都是自研的方案。实现过程中wps采用的svg方案&#xff0c;而石墨文档采用的是canvas&#xff0c;它们均是自己来实现编辑器&#xff0c;不依赖浏览器提供的编辑器&#xff08;conten…

嵌入式Linux:Linux系统中文件类型

目录 1、普通文件 2、目录文件 3、字符设备文件 4、块设备文件 5、符号链接文件 6、套接字文件 7、管道文件 8、stat命令和ls命令 8.1、stat命令 8.2、ls命令 9、stat、fstat、lstat函数 9.1、stat函数 9.2、fstat函数 9.3、lstat函数 在Windows系统中&#xff0…

【Python】已完美解决:(Python键盘中断报错问题) KeyboardInterrupt

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例&#xff08;结合实战场景&#xff09;五、注意事项 已解决&#xff1a;Python中处理KeyboardInterrupt&#xff08;键盘中断&#xff09;报错问题 一、问题背景 在Python编程中&#xff0c;当我们运…