文章目录
前言
前面很多人提到逆回购,但是经常一忙就忘了收盘后下单逆回购,白给的肉又飞了。这里我们使用QMT玩玩逆回购,代码简单,复制到本地,配置好即可运行,收益无负担,送你的钱不要白不要。
一、逆回购是什么?
1. 什么是逆回购?
简单来讲,逆回购从本质上讲是一种短期贷款,就是你把钱借给别人,获得固定利息;别人用债券(国债或企业债)作抵押,到期还本付息。
2. 最低参与金额是多少?
上海市场国债逆回购:交易数量为10万或10万的整数倍;深圳市场债券逆回购:交易数量为1000元或其整数倍;
3. 逆回购交易是否安全?
逆回购交易一般没有风险,因为逆回购方直接针对的是中国结算公司这样的第三方。如果债券质押方到期不能按时还款,结算公司会先垫付资金,然后通过罚款和处置质押券等方式向融资方追诉。
与股票交易不同的是,逆回购交易在初始交易时收益的大小即已确定,抵押债券价格的涨跌、市场利率水平的波动与逆回购交易的收益无关。
4. 逆回购交易适合什么类型的客户?
逆回购交易适合风险承受能力较低的个人以及流动资金充裕且有资金管理需求的机构。
二、讯投QMT是什么?
QMT 极速策略交易系统,简称 QMT 系统,内置了 3.6 版本 的 python 运行环境,提供行情数据与交易下单两大核心功能。通过编写 python 脚本,可以完成指标计算,策略编写,策略回测,实盘下单等需求。
三、使用QMT进行逆回购(含完整源代码)
1、在支持QMT的券商开户后,券商都会给一个交易账户;
2、安装QMT客户端,并在下载python运行环境。
如果以上环境已准备到位,下面我们说如何来实现交易。
因为逆回购的交易基本没有风险,且可以在股市交易期间交易,还可以在15:05-15:30进行交易,为了最大化发挥资金优势,一般都会将股市剩余资金在休市后来购买逆回购以增加收益(虽然没多钱,但蚊子腿也是肉不是)。
1.选择深市开展逆回购
笔者一般选择深市开展逆回购(上海也有,需要自己计算下单手数),由于逆回购代码固定,这里默认选深市1天逆回购,代码:“131810.SZ”。下单手数需要进行计算,深圳市场债券逆回购交易数量为1000元或其整数倍,所以这里查询可用金额后,直接取模计算下单手数,并使用异步接口进行下单。
一般逆回购量都比较大,个人投资者基本不用考虑成交不了,需要撤单的问题,一般盘口下单立即就可以成交。所以这里只报单即可。
特别声明:不放心的可用去观察下成交情况,或者自行完善代码,笔者不对成交和收益负责!
def nihuigou(C):
# -----------------------------(逆回购)函数说明----------------------
acct_info = get_trade_detail_data(C.accID, 'stock', 'account')
if len(acct_info)==0:
msg = f'账号{A.investor} 未登录,请检查'
print(msg)
return
time_str = time.strftime('%H%M%S')
if A.nihuigou_kg and '150500' < time_str < '153000':
# '逆回购时间开始'
print('nihuigou开始:')
for i in acct_info:
# m_dAvailable float 可用金额,指账户中可用于交易和提取的资金金额
# m_dRepurchaseValue float 逆回购总市值,表示账户中持有的所有回购交易的总市值
if i.m_dAvailable >1000 and i.m_dRepurchaseValue<100:
vol = int((i.m_dAvailable//1000)*10)# 1000一笔取模得最终逆回购数量
passorder(24, 1101, C.accID, "131810.SZ", 5, 9.99,vol, "逆回购R-001", 1, A.stgyname, C) #逆回购卖出
# 打印日志消息
msg = time_str+'卖出逆回购:{}手'.format(vol)
print(msg)
else:
msg = 'nihuigou:逆回购金额不足'
print(msg)
else:
msg = 'nihuigou:不在交易时间,逆回购暂停交易!'
print(msg)
通过判断可用资金和回购总市值,计算下单手数并下单,其它情况则忽略。
2.深市逆回购完整代码
将以下代码保存到QMT,并将 xxxx 处的证券账号按证券公司给的账户进行修改,运行即可。由于使用handle驱动,所以只要系统有行情就会触发,触发一次即可交易。其它情况下程序会忽略。所以编译设置好开机运行就不用管了。
# coding:gbk
'''
功能:逆回购策略,在收盘后15:05分定时运行,一次性完成操作。
'''
import time
# ============定义全局变量及函数===============
# 创建一个空对象,方便快速引用。
class a():
pass
A = a()
A.nihuigou_kg = True
A.investor = 'xxxx' # 填写_投资者账号
A.stgyname = '定时逆回购'
def nihuigou(C):
# -----------------------------(逆回购)函数说明----------------------
acct_info = get_trade_detail_data(C.accID, 'stock', 'account')
if len(acct_info)==0:
msg = f'账号{A.investor} 未登录,请检查'
print(msg)
return
time_str = time.strftime('%H%M%S')
if A.nihuigou_kg and '150500' < time_str < '153000':
# '逆回购时间开始'
for i in acct_info:
# m_dAvailable float 可用金额,指账户中可用于交易和提取的资金金额
# m_dRepurchaseValue float 逆回购总市值,表示账户中持有的所有回购交易的总市值
if i.m_dAvailable >1000 and i.m_dRepurchaseValue<100:
vol = int((i.m_dAvailable//1000)*10) # 1000一笔取模得最终逆回购数量
passorder(24, 1101, C.accID, "131810.SZ", 5, 9.99,vol, "逆回购R-001", 1, A.stgyname, C) #逆回购卖出
# 打印日志消息
msg = time_str+'卖出逆回购:{}手'.format(vol)
print(msg)
else:
msg = 'nihuigou:逆回购金额不足'
print(msg)
else:
msg = 'nihuigou:不在交易时间,逆回购暂停交易!'
print(msg)
def init(C):
# -------------------init(初始设置参数)函数说明------------------------
# init函数为初始化策略基础设置的参数,策略允许的适合只执行一次
# --------------设置交易账户------------------------
C.set_account(A.investor) # 设置交易账户
C.accID = A.investor # 设置资金账户
def handlebar(C):
# 跳过历史k线
if not C.is_last_bar():
return
time_str = time.strftime('%H%M%S')
if A.nihuigou_kg and '150500' < time_str < '153000':
nihuigou(C)
else:
time.sleep(60)# 降低CPU开销
return
运行日志如下:
[2024-03-13 08:50:40][REAL_逆回购][SH000300][日线] [trade]start trading mode
[2024-03-13 15:05:02][REAL_逆回购][SH000300][日线] nihuigou开始:
150502卖出逆回购:xxxx手
nihuigou:逆回购金额不足
nihuigou:逆回购金额不足
总结
当然使用QMT mini也可以完成逆回购,可参考之前的文章:
使用xtquant调用迅投MiniQMT客户端定时操作逆回购,再也不担心忘了赚零花钱了(含完整源代码)
感觉有用,请用您发财的小手点个赞,发个评论再走!让更多人可以看到!