【大麦小米学量化】使用xtquant调用迅投MiniQMT客户端定时操作逆回购,再也不担心忘了赚零花钱了(含完整源代码)

文章目录

  • 前言
  • 一、逆回购是什么?
    • 1. 什么是逆回购?
    • 2. 最低参与金额是多少?
    • 3. 逆回购交易是否安全?
    • 4. 逆回购交易适合什么类型的客户?
  • 二、讯投XtQuant是什么?
    • 1. XtQuant运行依赖环境
    • 2. XtQuant运行逻辑
  • 三、使用xtquant进行逆回购(含完整源代码)
    • 1.选择深市开展逆回购
    • 2.深市逆回购完整代码
  • 总结


前言

前面很多人提到逆回购,但是经常一忙就忘了收盘后下单逆回购,白给的肉又飞了。这里我们使用xtquant玩玩逆回购,代码简单,复制到本地,配置好即可运行,收益无负担,送你的钱不要白不要。

一、逆回购是什么?

1. 什么是逆回购?

简单来讲,逆回购从本质上讲是一种短期贷款,就是你把钱借给别人,获得固定利息;别人用债券(国债或企业债)作抵押,到期还本付息。

2. 最低参与金额是多少?

上海市场国债逆回购:交易数量为10万或10万的整数倍;深圳市场债券逆回购:交易数量为1000元或其整数倍;

3. 逆回购交易是否安全?

逆回购交易一般没有风险,因为逆回购方直接针对的是中国结算公司这样的第三方。如果债券质押方到期不能按时还款,结算公司会先垫付资金,然后通过罚款和处置质押券等方式向融资方追诉。
与股票交易不同的是,逆回购交易在初始交易时收益的大小即已确定,抵押债券价格的涨跌、市场利率水平的波动与逆回购交易的收益无关。

4. 逆回购交易适合什么类型的客户?

逆回购交易适合风险承受能力较低的个人以及流动资金充裕且有资金管理需求的机构。

二、讯投XtQuant是什么?

XtQuant是基于迅投MiniQMT衍生出来的一套完善的Python策略运行框架,对外以Python库的形式提供策略交易所需要的行情和交易相关的API接口。使用讯投XtQuant首先需要选择支持开通QMT的券商开户,有些开通了QMT,但不支持MiniQMT。需要提前问好。

1. XtQuant运行依赖环境

XtQuant目前提供的库包括64位Python3.6----3.11版本,不同版本的python导入时会自动切换。 在运行使用XtQuant的程序前需要先启动MiniQMT客户端。

2. XtQuant运行逻辑

  • Xtdata作为行情模块,本模块旨在提供精简直接的数据满足量化交易者的数据需求,主要提供行情数据(历史和实时的K线和分笔)、财务数据、合约基础信息、板块和行业分类信息等通用的行情数据。

  • Xttrader作为交易模块,封装了策略交易所需要的Python API接口,可以和MiniQMT客户端交互进行报单、撤单、查询资产、查询委托、查询成交、查询持仓以及接收资金、委托、成交和持仓等变动的主推消息。
    更多详情可查询讯投知识库:http://docs.thinktrader.net/pages/040ff7/

  1. 首先需要下载xtquant库,并将其解压到一个目录,后面会用到。

三、使用xtquant进行逆回购(含完整源代码)

下面的代码基于以上2个条件:
1、启动MiniQMT客户端
2、下载xtquant库,并将其解压到一个目录,当然也可以直接使用QMT安装后下载python后xtquant目录。
下载地址:http://dict.thinktrader.net/nativeApi/download_xtquant.html

如果以上环境已准备到位,下面我们说如何来实现交易。因为逆回购的交易基本没有风险,且可以在股市交易期间交易,还可以在15:00-15:30进行交易,为了最大化发挥资金优势,一般都会将股市剩余资金在休市后来购买逆回购以增加收益(虽然没多钱,但蚊子腿也是肉不是)。

1.选择深市开展逆回购

笔者一般选择深市开展逆回购(上海也有,需要自己计算下单手数),由于逆回购代码固定,这里默认选深市1天逆回购,代码:“131810.SZ”。下单手数需要进行计算,深圳市场债券逆回购交易数量为1000元或其整数倍,所以这里查询可用金额后,直接取模计算下单手数,并使用异步接口进行下单。

一般逆回购量都比较大,个人投资者基本不用考虑成交不了,需要撤单的问题,一般盘口下单立即就可以成交。所以这里只报单即可。
特别声明:不放心的可用去观察下成交情况,或者自行完善代码,笔者不对成交和收益负责!

def nihuigou(xt_trader,acc,symbol="131810.SZ"):A.asset = xt_trader.query_stock_asset(acc)if A.asset.cash >1000:vol = int((A.asset.cash//1000)*10)async_seq = xt_trader.order_stock_async(acc,symbol,xtconstant.STOCK_SELL,vol,xtconstant.LATEST_PRICE,9.99,strategy_name='nihuigou',order_remark='nihuigou卖出')print(f'nihuigou下单:async_seq({async_seq})卖出逆回购:{vol}手')else:print("nihuigou下单:逆回购金额不足")

2.深市逆回购完整代码

将以下代码保存后,并将 xxxxx 处的证券账号按证券公司给的账户进行修改,运行即可。注意这里QMT的安装目录为D:\gszqqmt,请根据实际情况自行修改。

#coding:utf-8import sys
import time# 每个调用工具库的文件均添加以下语句,即可实现随处调用。
sys.path.append(r"D:\gszqqmt\bin.x64\Lib\site-packages")#xtquant所在目录from xtquant import xtdata
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount
from xtquant import xtconstant# 创建一个空对象,方便快速引用。持仓数据(用A.代替)
class a():pass
A = a()def nihuigou(xt_trader,acc,symbol="131810.SZ"):A.asset = xt_trader.query_stock_asset(acc)if A.asset.cash >1000:vol = int((A.asset.cash//1000)*10)async_seq = xt_trader.order_stock_async(acc,symbol,xtconstant.STOCK_SELL,vol,xtconstant.LATEST_PRICE,9.99,strategy_name='nihuigou',order_remark='nihuigou卖出')print(time.strftime('%H:%M:%S'),f'nihuigou下单:async_seq({async_seq})卖出逆回购:{vol}手')else:print(time.strftime('%H:%M:%S'),"nihuigou下单:逆回购金额不足")class MyXtQuantTraderCallback(XtQuantTraderCallback):def on_disconnected(self):"""连接断开:return:"""print(datetime.datetime.now(),'连接断开回调')def on_stock_order(self, order):"""委托回报推送:param order: XtOrder对象:return:"""print(datetime.datetime.now(), '委托回调', order.order_remark)def on_stock_trade(self, trade):"""成交变动推送:param trade: XtTrade对象:return:"""print(datetime.datetime.now(), '成交回调', trade.order_remark)def on_order_error(self, order_error):"""委托失败推送:param order_error:XtOrderError 对象:return:"""# print("on order_error callback")# print(order_error.order_id, order_error.error_id, order_error.error_msg)print(f"委托报错回调 {order_error.order_remark} {order_error.error_msg}")def on_cancel_error(self, cancel_error):"""撤单失败推送:param cancel_error: XtCancelError 对象:return:"""print(datetime.datetime.now(), sys._getframe().f_code.co_name)def on_order_stock_async_response(self, response):"""异步下单回报推送:param response: XtOrderResponse 对象:return:"""print(f"异步委托回调 {response.order_remark}")def on_cancel_order_stock_async_response(self, response):""":param response: XtCancelOrderResponse 对象:return:"""print(datetime.datetime.now(), sys._getframe().f_code.co_name)def on_account_status(self, status):""":param response: XtAccountStatus 对象:return:"""print(datetime.datetime.now(), sys._getframe().f_code.co_name)if __name__ == '__main__':print("启动xtquant实盘交易-逆回购")#指定客户端所在路径path = r'D:\gszqqmt\userdata_mini'# 生成session id 整数类型 同时运行的策略不能重复session_id = int(time.time())xt_trader = XtQuantTrader(path, session_id)# 开启主动请求接口的专用线程 开启后在on_stock_xxx回调函数里调用XtQuantTrader.query_xxx函数不会卡住回调线程,但是查询和推送的数据在时序上会变得不确定# 详见: http://docs.thinktrader.net/vip/pages/ee0e9b/#开启主动请求接口的专用线程# xt_trader.set_relaxed_response_order_enabled(True)# 创建资金账号为 xxxxx 的证券账号对象,请根据自己的账户进行修改!acc = StockAccount('xxxxx ', 'STOCK')# 创建交易回调类对象,并声明接收回调callback = MyXtQuantTraderCallback()xt_trader.register_callback(callback)# 启动交易线程xt_trader.start()# 建立交易连接,返回0表示连接成功connect_result = xt_trader.connect()print('建立交易连接,返回0表示连接成功', connect_result)# 对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功subscribe_result = xt_trader.subscribe(acc)print('对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功', subscribe_result)A.asset = xt_trader.query_stock_asset(acc)print('\n持仓市值:',A.asset.market_value,'\n总资金:',A.asset.total_asset,'\n持仓占比:',round(A.asset.market_value/A.asset.total_asset,2)*100,'%','\n逆回购可用资金:',A.asset.cash)  while 1:if '150000' <= time.strftime('%H%M%S') <= '153000':nihuigou(xt_trader,acc,symbol="131810.SZ");time.sleep(60)else:print(time.strftime('%H:%M:%S'),'时间未到,待收盘后自动下单');time.sleep(60)

总结

前期文章:如何优雅地调教QMT量化平台编写量化策略(使用notepad++、pycharm、vscode等外部IDE编写量化交易代码) 抛出了mpython的秘密,当时MiniQMT并不为人知晓。此篇文章也算是对上文的承接。目前官方文档已经很详尽了,可以查询讯投知识库:http://docs.thinktrader.net/pages/040ff7/

使用xtquant可以不受QMT运行环境(尤其是Python3.6.8版本)的限制,可以充分发挥本地Python的性能,也可以方便的调用第三方库。

我们这里小试牛刀,其实还有更多玩法。视评论情况,后续给大家陆续解锁。

感觉有用就点个赞,发个评论再走!让更多人可以看到!

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

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

相关文章

Linux Docker本地部署WBO在线协作白板结合内网穿透远程访问

文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 前言 WBO在线协作白板是一个自由和开源的在线协作白板&#xff0c;允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用…

LeetCode刷题--- 全排列 II

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述递归递归、搜…

搭建git服务器(本地局域网)

搭建git服务器&#xff08;本地局域网&#xff09; 创建仓库 (假定在/home/git目录下创建仓库) git init --bare sample.git克隆远程仓库到本地 git clone git192.168.0.100:/home/git/sample.git已有项目&#xff0c;绑定远程仓库 # 查看远程仓库绑定 git remote -v# 解除…

拼多多ID取商品详情API:电商行业的核心价值与实时数据获取策略

一、引言 在当今的电商行业中&#xff0c;数据是驱动业务决策和优化用户体验的关键因素。拼多多作为中国电商市场的主要参与者&#xff0c;其根据ID取商品详情原数据的API在电商行业中具有显著的重要性。本文将深入探讨这个话题&#xff0c;并介绍如何实现实时数据获取。 二、…

UE学习记录09----C++实现Actor 单击/双击事件

思路&#xff1a;重载Actor的单击事件&#xff0c;通过计时器判断时间段内鼠标惦记的次数 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "GameFramework/Actor.h" #in…

回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 &#xff08;多指标&#…

doNet Core中解压zip

doNet Core4.0解压zip文件 1、ZipInputStream.cs public class ZipHelper { /// /// 解压缩一个 zip 文件。 /// /// The ziped file. /// The STR directory. /// 是否覆盖已存在的文件。 public static void UnZip(string zipedFile, string strDirectory, bool overWrit…

ISCTF(b)

test_nc nc_shell ls cat flag 这两道题比较像 你说爱我&#xff1f;尊嘟假嘟 打开后重复出现 “ 你说爱我 ” “ 尊嘟 ” “ 假嘟 ” 。判断为 Ook 加密 , 将 “ 你说爱我 ” 替换为 “Ook.” &#xff1b; “ 尊嘟 ” 替换为&#xff1a; “Ook!” &#xff1b; “ 假嘟…

mysql函数(二)之常见字符串函数

MySQL中常见的字符串函数有以下几种&#xff1a; CONCAT()&#xff1a;将两个或多个字符串连接在一起。 用法&#xff1a;CONCAT(string1, string2, ...) 效果图&#xff1a; LENGTH()&#xff1a;返回字符串的长度。 用法&#xff1a;LENGTH(string) 效果图&#xff1a; U…

教你如何使用天眼销查企业客户

天眼销是一款能够帮助客户获取最新的企业联系方式、工商信息等关键数据的平台。 平台基于先进的技术和大数据解决方案&#xff0c;深入挖掘和分析企业信息&#xff0c;能够高效地收集、整理和存储各类企业数据&#xff0c;为用户提供360度视角和洞察&#xff1b;提供全面、准确…

【算法与数据结构】LeetCode55、45、跳跃游戏 I 、II

文章目录 一、跳跃游戏I二、跳跃游戏II三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、跳跃游戏I 思路分析&#xff1a;本题目标是根据跳跃数组的元素&#xff0c;判断最终能够到达数组末端。我们引入了一个跳跃范围…

跨境电商的未来工作方式:远程团队与全球协作

随着数字化时代的来临&#xff0c;跨境电商行业在不断演变&#xff0c;其未来工作方式也呈现出新的趋势。本文将探讨跨境电商未来的工作方式&#xff0c;聚焦于远程团队与全球协作的发展&#xff0c;以揭示这一变革如何重新定义企业的组织结构和工作模式。 远程团队的崛起 近年…

【重点!】【二分查找】33.搜索旋转排序数组

题目 法1&#xff1a;二分查找 根据mid来分段&#xff0c;此思路需要牢记&#xff01;&#xff01;&#xff01; class Solution {public int search(int[] nums, int target) {if (nums.length 0) {return -1;}int left 0, right nums.length - 1, mid 0;while (left &…

Leetcode—859.亲密字符串【简单】

2023每日刷题&#xff08;六十三&#xff09; Leetcode—859.亲密字符串 &#x1f4a9;山实现代码 class Solution { public:bool buddyStrings(string s, string goal) {int len1 s.size(), len2 goal.size();int cnt 0;int flag 0;int flag2 0;int odd -1;int a[26] …

双指针——找到字符串中的所有字母异位词

https://leetcode.cn/problems/find-all-anagrams-in-a-string/description/?envTypestudy-plan-v2&envIdtop-100-liked 双指针&#xff0c;每次都统计出来p长度的滑动窗口里的数字,拿Arrays.equals进行对比,然后滑动一小格&#xff0c;减1加1继续比对即可。 class Solut…

VS2019, mfc,c++和halcon 2022调试的时候,查询halcon变量的值, 一直提示未为 halconcpp.dll 加载任何符号

在调试看值的过程中&#xff0c;发现这里看不到变量的值。 可以使用halcon变量检查工具查看。

Leetcode—96.不同的二叉搜索树【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—96.不同的二叉搜索树 算法思想 实现代码 class Solution { public:int numTrees(int n) {vector<int> G(n 1, 0);G[0] 1;G[1] 1;for(int i 2; i < n; i) {for(int j 1; j < i; j) {G[i] G[j - 1] * …

多目标跟踪学习

本文来源&#xff1a; 目标跟踪那些事儿-技术和课程介绍_哔哩哔哩_bilibili 为该视频的学习笔记 目的&#xff1a;我的学习目的主要是了解现有的跟踪算法&#xff0c;并着重了解卡尔曼滤波算法&#xff0c;利用卡尔曼滤波算法进行多目标跟踪等后续一系列估计算法。老师视频中提…

harmonyOS 自定义组件基础演示讲解

上文 HarmonyOS组件属性控制 链式编程格式推荐我们讲了一些系统组件 可以传入一些事件和参数 来达到一些不同的效果 其实 我们还可以用自己写的组件 那么 组件这么写&#xff1f; 其实 我们的 page 内部结果 就是一个组件 harmonyOS的概念 万物皆组件 那么 我们就可以在他下面…

C/C++ fmt 格式化字符串实现(轻量)

实现的目的&#xff1b;提高 C/C 编译速度&#xff0c;fmt 库模板嵌套过多编译速度非常慢&#xff0c;且编译后程序体积也过大&#xff0c;函数步入的栈帧过多&#xff01; 只支持格式&#xff1b;{} 不支持格式&#xff1b;{:02x} class fmt { public:template <typenam…