
国债说白了就是国家发的 “借条”—— 以国家信用做担保,承诺按期给利息、到期还本金,信用等级最高,是公认最安全的投资。
而交易所的国债逆回购,本质就是短期借钱:我们个人有闲钱,通过交易所借给需要资金的一方(大多是金融机构),赚固定利息;而借钱的一方,得用自己手里的国债做抵押,到期连本带利还回来。
国债逆回购有国债作为抵押品,风险几乎等同于国债。另外,整个借钱流程、资金的流动都是在交易所的严格监管下进行的,所以它的安全性非常高。
上海市场的国债逆回购代码是204开头,深圳市场的国债逆回购代码是1318开头,国债逆回购名称中括号里的数字表示是几天的品种。例如:
204001(GC001)表示上海一天期回购
131810(R-001)表示深圳一天期回购

经常有用户在问:“我交易国债逆回购,希望每天收盘前能在QMT上自动卖出,应该怎么操作?”,今天就给大家分享一下!
上交所与深交所规定从2019年1月21日起,债券质押式回购延长交易时间30分钟,也就是延长到15点30分闭市,具体债券逆回购交易时间安排如下:
上交所国债逆回购交易时间:
深交所国债逆回购交易时间:

#encoding:gbk'''国债逆回购策略年化3%作者 量化生财君'''import pandas as pdimport numpy as npimport talibimport math from datetime import datetimedef init(c): c.account='********'#QMT登录资金账号 c.account_type='STOCK'#测试代码#######################测试代码 stats,text=reverse_repurchase_of_treasury_bonds_1(c)print(text)###################测试代码print('等带逆回购********************************') c.run_time("reverse_repurchase_of_treasury_bonds_1","1nDay","2024-07-25 14:57:00") #每日14:47分触发 c.run_time("trader_log","3nSecond","2024-07-25 13:20:00") reverse_repurchase_of_treasury_bonds_1(c)def trader_log(c):''' 程序记录 '''print('{}逆回购目前没有到交易时间'.format(datetime.now()))def adjust_stock(stock='600031.SH'):''' 调整代码 '''if stock[-2:]=='SH' or stock[-2:]=='SZ' or stock[-2:]=='sh' or stock[-2:]=='sz': stock=stock.upper()else:if stock[:3] in ['600','601','603','688','510','511','512','513','515','113','110','118','501'] or stock[:2] in ['11']: stock=stock+'.SH'else: stock=stock+'.SZ'return stockdef adjust_amount(stock='',amount=''):''' 调整数量 '''if stock[:3] in ['110','113','123','127','128','111'] or stock[:2] in ['11','12']: amount=math.floor(amount/10)*10else: amount=math.floor(amount/100)*100return amountdef balance(c,accounts=''):''' 对接同花顺 ''' try: accounts = get_trade_detail_data(c.account, c.account_type, 'account') except: accounts=accounts df=pd.DataFrame()for dt in accounts: df['账号类型']=[dt.m_nBrokerType] df['资金账户']=[dt.m_strAccountID] df['可用金额']=[dt.m_dAvailable]#df['冻结金额']=[dt.frozen_cash] df['持仓市值']=[dt.m_dInstrumentValue] df['总资产']=[dt.m_dBalance]return dfdef position(c,positions=''):''' 对接同花顺 持股 ''' try: positions = get_trade_detail_data(c.account, c.account_type, 'position') except : positions=positions data=pd.DataFrame()if len(positions)>0:print('持股数量{}'.format(len(positions)))for dt in positions: df=pd.DataFrame()#df['账号类型']=[positions[i].account_type] df['资金账号']=[dt.m_strAccountID] df['证券代码']=[dt.m_strInstrumentID] df['证券代码']=df['证券代码'].apply(lambda x:adjust_stock(x))#df['证券代码']=[dt.m_strProductID]#df['证券代码']=df['证券代码'].apply(lambda x:str(x)[:6]) df['股票余额']=[dt.m_nVolume] df['可用余额']=[dt.m_nCanUseVolume] df['成本价']=[dt.m_dPositionCost] df['参考成本价']=[dt.m_dOpenPrice] df['市值']=[dt.m_dInstrumentValue] data=pd.concat([data,df],ignore_index=True)return dataelse:return datadef get_spot_data(c,stock='600031.SH'):''' 获取最新价格 ''' df=c.get_full_tick([stock]) price=df[stock]['lastPrice']return pricedef buy(c,stock='159985.SZ',amount=100,price=2.045):''' 自定义买入函数 stock,股票 amount,数量 price价格 ''' account=c.account passorder(23,1101,account,stock,11,price,amount,1,c)print('买入股票{} 数量{} 价格{}##############'.format(stock,amount,price))def sell(c,stock='159985.SZ',amount=100,price=2.045):''' 自定义卖出函数 stock,股票 amount,数量 price价格 ''' account=c.account passorder(24,1101,account,stock,11,price,amount,1,c)print('卖出股票{} 数量{} 价格{}##############'.format(stock,amount,price))def reverse_repurchase_of_treasury_bonds_1(c,buy_ratio=1):''' 国债逆回购1,新的函数 购买比例buy_ratio '''# 对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功 account=balance(c)print(account) av_cash=account['可用金额'].tolist()[-1] av_cash=float(av_cash) av_cash=av_cash*buy_ratio#stock_code_sh = '204001.SH'#统一用深圳 stock_code_sh = '131810.SZ' stock_code_sz = '131810.SZ' price_sh = get_spot_data(c,stock_code_sh) price_sz = get_spot_data(c,stock_code_sz) bidPrice1 = max(price_sh,price_sz)if price_sh >= price_sz: stock_code = stock_code_shelse: stock_code = stock_code_szprint(stock_code,bidPrice1) price=bidPrice1 stock=stock_code#下单的数量要是1000 amount = int(av_cash/1000)*10#借出钱sellprint('开始逆回购***********')if amount>0: sell(c,stock=stock,amount=amount,price=price) text='国债逆回购交易类型 代码{} 价格{} 数量{}'.format(stock,price,amount)return'交易成功',textelse: text='国债逆回购卖出 标的{} 价格{} 委托数量{}小于0有问题'.format(stock,price,amount)print('账户没有可以的钱@@@@@@@@@@@@@@@@@@@')return'交易失败',text(注:上方account, accountType 变量为模型交易界面添加策略时, 选择的账号/账号类型)
““ 券商版ptrade权限开通:策略直接在券商云端运行,用户无需配置环境;运行过程高速且稳定,免费提供level2数据。该版本支持 Python 语言,可实现极速交易与实盘操作,还配备专用测试环境账号用于策略回测。
““ 券商版QMT权限开通:本地运行,支持虚拟机,可放到云服务器上运行,集行情展示、策略编写、策略回测、策略实盘于一体。支持Python语言,VBA语言,本地运行、高性能、高扩展、高策略保密性。支持xtquant 、外部数据(tushar等),适合量化进阶,复杂策略代码。
(1)开户成功后入金10万以上,第二天提交QMT申请流程
(2)申请过程全程线上,预计2个工作日申请完成。
(3)等待开通过程中,可以提供测试账号、安装配置流程、量化会员资料。
(4)开通成功后,会通过邮件发送你软件下载地址,登录账号后就可以使用。

