当前位置: 首页 > news >正文

.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();

相关文章:

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

前言:量化资料很少,.NET更少。那我就来开个先河吧~ 以下是使用QMT进行量化开发的环境部署和基础信息获取有关操作。 1、首先自己申请券商的QMT权限,此步骤省略。 2、登陆QMT,选择极简模式,或者独立交易模式之类的。会进…...

洛谷 P10584 [蓝桥杯 2024 国 A] 数学题(整除分块+杜教筛)

题目 思路来源 登录 - Luogu Spilopelia 题解 参考了两篇洛谷题解&#xff0c;第一篇能得出这个式子&#xff0c;第二篇有比较严格的复杂度分析 结合去年蓝桥杯洛谷P9238&#xff0c;基本就能得出这题的正确做法 代码 #include<bits/stdc.h> #include<iostream&g…...

深入讲解C++基础知识(一)

目录 一、基本内置类型1. 类型的作用2. 分类3. 整型3.1 内存描述及查询3.2 布尔类型 —— bool3.3 字符类型 —— char3.4 其他整型 4. 有符号类型和无符号类型5. 浮点型6. 如何选择类型7. 类型转换7.1 自动类型转换7.2 强制类型转换7.3 类型转换总结 8. 类型溢出8.1 注意事项 …...

Python爬虫实战:批量下载网站图片

1.获取图片的url链接 首先&#xff0c;打开百度图片首页&#xff0c;注意下图url中的index 接着&#xff0c;把页面切换成传统翻页版&#xff08;flip&#xff09;&#xff0c;因为这样有利于我们爬取图片&#xff01; 对比了几个url发现&#xff0c;pn参数是请求到的数量。…...

使用 JavaScript 获取电池状态

在现代的移动设备和笔记本电脑上&#xff0c;了解电池状态是一项非常有用的功能。使用 JavaScript 可以轻松地获取电池的充电状态、电量百分比等信息。本文将介绍如何使用 JavaScript 访问这些信息&#xff0c;并将其显示在网页上。 1. HTML 结构 首先&#xff0c;我们需要一…...

java—类反射机制

简述 反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息&#xff08;如成员变量&#xff0c;构造器&#xff0c;成员方法等&#xff09;&#xff0c;并能操作对象的属性及方法。反射机制在设计模式和框架底层都能用到。 类一旦加载&#xff0c;在堆中会产生…...

浏览器-服务器架构 (BS架构) 详解

目录 前言1. BS架构概述1.1 BS架构的定义1.2 BS架构的基本原理 2. BS架构的优势2.1 客户端简化2.2 易于更新和维护2.3 跨平台性强2.4 扩展性高 3. BS架构的劣势3.1 网络依赖性强3.2 安全性问题3.3 用户体验局限 4. BS架构的典型应用场景4.1 企业内部应用4.2 电子商务平台4.3 在…...

微型操作系统内核源码详解系列五(四):cm3下svc启动任务

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…...

筛质数(暴力法、埃氏筛、欧拉筛)

筛质数&#xff08;暴力法、埃氏筛、欧拉筛&#xff09; 暴力法 思路分析&#xff1a; 直接双for循环来求解质数 如果不设置标记只是简单地执行了break会导致内部循环(由j控制)而不是立即打印i或者跳过它。如果打印语句写到内部循环中&#xff0c;也会导致每个 非素数也被打…...

使用USI作为主SPI接口

代码; lcd_drive.c //***************************************************************************** // // File........: LCD_driver.c // // Author(s)...: ATMEL Norway // // Target(s)...: ATmega169 // // Compiler....: AVR-GCC 3.3.1; avr-libc 1.0 // // D…...

AI播客下载:Eye on AI(AI深度洞察)

"Eye on A.I." 是一档双周播客节目&#xff0c;由长期担任《纽约时报》记者的 Craig S. Smith 主持。在每一集中&#xff0c;Craig 都会与在人工智能领域产生影响的人们交谈。该播客的目的是将渐进的进步置于更广阔的背景中&#xff0c;并考虑发展中的技术的全球影响…...

Flink 窗口触发器

参考&#xff1a; NoteWarehouse/05_BigData/09_Flink(1).md at main FGL12321/NoteWarehouse GitHub Flink系列 9. 介绍 Flink 窗口触发器、移除器和延迟数据等 | hnbian https://github.com/kinoxyz1/bigdata-learning-notes/blob/master/note/flink/Window%26%E6%97%B6…...

Java面试题:解释线程间如何通过wait、notify和notifyAll方法进行通信

在 Java 中&#xff0c;线程间的通信可以通过 wait()、notify() 和 notifyAll() 这三个方法实现。这些方法是 Java 线程 Thread 类的一部分&#xff0c;它们与 synchronized 关键字一起使用&#xff0c;以实现线程间的协调。 基本概念 wait()&#xff1a;当一个线程执行到 wa…...

【机器学习 复习】第9章 降维算法——PCA降维

一、概念 1.PCA &#xff08;1&#xff09;主成分分析&#xff08;Principal ComponentAnalysis&#xff0c;PCA&#xff09;一种经典的线性降维分析算法。 &#xff08;2&#xff09;原理&#xff0c;这里以二维转一维为例&#xff0c;原来的平面变成了一条直线 这是三维变二…...

Ubuntu系统docker gpu环境搭建

Ubuntu系统dockergpu环境搭建 安装步骤前置安装安装指定版本的依赖包用docker官方脚本安装Docker-ce添加稳定仓库和GPG秘钥更新源 安装docker安装nvidia-docker2重启docker服务阿里云镜像加速 相关命令网络 docker常用命令镜像容器 docker相关问题解决方案使用wsl时docker的容器…...

网络安全-如何设计一个安全的API(安全角度)

目录 API安全概述设计一个安全的API一个基本的API主要代码调用API的一些问题 BasicAuth认证流程主要代码问题 API Key流程主要代码问题 Bearer auth/Token auth流程 Digest Auth流程主要代码问题 JWT Token流程代码问题 Hmac流程主要代码问题 OAuth比较自定义请求签名身份认证&…...

微积分-导数1(导数与变化率)

切线 要求与曲线 C C C相切于 P ( a , f ( a ) ) P(a, f(a)) P(a,f(a))点的切线&#xff0c;我们可以在曲线上找到与之相近的一点 Q ( x , f ( x ) ) Q(x, f(x)) Q(x,f(x))&#xff0c;然后求出割线 P Q PQ PQ的斜率&#xff1a; m P Q f ( x ) − f ( a ) x − a m_{PQ} \…...

最新PHP仿猪八戒任务威客网整站源码/在线接任务网站源码

资源介绍 老规矩&#xff0c;截图为亲测&#xff0c;前后台显示正常&#xff0c;细节功能未测&#xff0c;有兴趣的自己下载。 PHP仿猪八戒整站源码下载&#xff0c;phpmysql环境。威客开源建站系统&#xff0c;其主要交易对象是以用户为主的技能、经验、时间和智慧型商品。经…...

Windows安装配置jdk和maven

他妈的远程连接不上公司电脑&#xff0c;只能在家重新配置一遍&#xff0c;在此记录一下后端环境全部配置 Windows安装配置JDK 1.8一、下载 JDK 1.8二、配置环境变量三、验证安装 Windows安装配置Maven 3.8.8一、下载安装 Maven并配置环境变量二、设置仓库镜像及本地仓库三、测…...

电子SOP实施(MQTT协议)

架构图 服务与程序 用docker启动mqtt broker(服务器) 访问&#xff1a;http://192.168.88.173:18083/#/dashboard/overview 用户名&#xff1a;admin 密码&#xff1a;*** 消息发布者(查找sop的url地址&#xff0c;发布出去) 修改url&#xff0c;重新发布消息 import ran…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...

生信服务器 | 做生信为什么推荐使用Linux服务器?

原文链接&#xff1a;生信服务器 | 做生信为什么推荐使用Linux服务器&#xff1f; 一、 做生信为什么推荐使用服务器&#xff1f; 大家好&#xff0c;我是小杜。在做生信分析的同学&#xff0c;或是将接触学习生信分析的同学&#xff0c;<font style"color:rgb(53, 1…...

MyBatis-Plus 常用条件构造方法

1.常用条件方法 方法 说明eq等于 ne不等于 <>gt大于 >ge大于等于 >lt小于 <le小于等于 <betweenBETWEEN 值1 AND 值2notBetweenNOT BETWEEN 值1 AND 值2likeLIKE %值%notLikeNOT LIKE %值%likeLeftLIKE %值likeRightLIKE 值%isNull字段 IS NULLisNotNull字段…...

多模态大语言模型arxiv论文略读(112)

Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文标题&#xff1a;Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文作者&#xff1a;Jea…...