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

这篇具有很好参考价值的文章主要介绍了【大麦小米学量化】使用xtquant调用迅投MiniQMT客户端定时操作逆回购,再也不担心忘了赚零花钱了(含完整源代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

前面很多人提到逆回购,但是经常一忙就忘了收盘后下单逆回购,白给的肉又飞了。这里我们使用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-8

import 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的性能,也可以方便的调用第三方库。

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

感觉有用就点个赞,发个评论再走!让更多人可以看到!文章来源地址https://www.toymoban.com/news/detail-786143.html

到了这里,关于【大麦小米学量化】使用xtquant调用迅投MiniQMT客户端定时操作逆回购,再也不担心忘了赚零花钱了(含完整源代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 使用selenium 实现大麦网自动购票

    前言 大麦网是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域 今天,我们要用代码来实现他的购票过程 知识点: 面向对象编程 selenium 操作浏览器 pickle 保存和读取Cookie实现免登陆 time 做延时操作 os 创建文件,判断文件是否存在 开发环

    2023年04月11日
    浏览(28)
  • 2023.04.22更新大麦网移动端/M端抢购软件和使用教程

    近期发现大麦网页端抢购页面悄然发生变化,之前可以在页面选择票价、档次,并且点击按钮进行购票,现在不行了,并且有些票只能在APP端购买,因此针对性编写了代码来适配。 新的代码中首先进行了如下改造。 构造下单地址。之前是需要在购票地址页面点击按钮进行跳

    2024年02月11日
    浏览(22)
  • Java 客户端调用 WebService 接口的一种方式

      通过SoapUI创建一个SOAP Project;   项目名称自定义,WSDL地址维护WebService接口地址。点击OK即可   项目创建完成后,展开WebService项,可以看到具体的接口,打开接口下的Request,右侧面板Form标签下可以清晰的看到请求入参,点击Submit请求按钮可以看到Overview标签下的响应结

    2024年01月18日
    浏览(37)
  • home assistant 调用api控制智能家居 小米风扇 美的空调

    curl -H “Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJiMWY3YTczNmRiYzk0OGUzYTUzZDViOTBkZDQ5NTNlMiIsImlhdCI6MTY4MDg0MzczMiwiZXhwIjoxOTk2MjAzNzMyfQ.TD8ku7P9cGLkQI1Ry9PAv-MhxLX8vSBWZBz3nmGKSlE” -H “Content-Type: application/json” -d ‘{“device_id”: “12b147e2e494579f7448d730736b1fcb”}’ http://localhost:8123/api/service

    2024年02月08日
    浏览(31)
  • Http远程调用(feign客户端通过POST传递FORM格式数据)

    目录       feign实现http远程调用(正文)       解决方案: 在正式讲解HTTP远程调用时,我们先来了解一下缺省方法的定义。 写在前面: 缺省参数可传可不传,可以传多个但他们必须是相同的类型 每个方法中缺省参数只能定义一个,并且只能在参数的最后定义; 缺省参

    2023年04月08日
    浏览(31)
  • Java客户端调用elasticsearch进行深度分页查询 (search_after)

    前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 具体的Search_after解释,可以看我这篇文章 elasticsearch 深度分页查询 Search_after(图文教程) 参考:https://blog.csdn.net/qq_44056652/article/details/126341810 作者:神的孩子

    2024年03月22日
    浏览(39)
  • 【AI选股】如何通过python调用通达信-小达实现AI选股(量化又多了一个选股工具)

    ChatGPT火遍网络,那么有没有可以不用写公式就可以实现AI选股的方法?答案是有,今天我们就来试试通达信的小达,让小达按我们的要求去进行选股。 使用Chrome浏览器报错的请改为Edge浏览器,或者Firefox浏览器,参考如下文章: 【Python小技巧】browser_cookie3访问Chrome浏览器Co

    2024年02月06日
    浏览(129)
  • java静默打印PDF(可实现生产环境下服务器写入PDF模板,然后调用客户端打印机打印)

    需求 写这个的原因主要是因为当时项目中的打印功能是用户打印标签时,每次点击打印是通过把PDF文件下载到客户端浏览器,然后需要通过浏览器去点击打印机实现打印,就非常麻烦,每次都步骤非常复杂,而且每次参数都要重新设置。于是就想着怎么通过java实现自己调用

    2024年02月13日
    浏览(34)
  • UnityMirror学习笔记(3):服务器与客户端间的函数调用,互发控制指令:Command,ClientRpc,TargetRpc

    Mirror是一个简单高效的开源的Unity多人游戏网络框架。 官方文档链接: https://mirror-networking.gitbook.io/docs API Mirror提供了一个特性 Command 来进行从客户端到服务器的远程控制指令, 它的核心逻辑就是,当 客户端 的脚本调用此特性修饰的函数时, 服务端 的 对应的对象 执行此函数

    2024年02月07日
    浏览(26)
  • Forest-声明式HTTP客户端框架-集成到SpringBoot实现调用第三方restful api并实现接口数据转换

    声明式HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层, 是封装调用第三方restful api client接口的好帮手,是retrofit和feign之外另一个选择。 通过在接口上声明注解的方式配置HTTP请求接口。 官网: Forest   代码地址: forest: 声明式HTTP客户端API框架,让

    2024年02月04日
    浏览(100)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包