华泰证券matic 量化教程- 获取持仓个股与委托成交数据
在量化的实盘里,少不了经常获取持仓股票数据,还有委托与成交数据。
在华泰matic里面,提供了函数可以直接获取此类数据。
读取持仓数据
话不多说,直接展示代码:
def write_pos_info():
pos_file = '我的持仓.txt'
with open(pos_file, 'w') as f:
f.write('资金账号,证券代码,当前持仓,可用持仓,期初持仓\n')
fund_account = context.get_fund_account_by_type(AccountType.normal)
# 获取普通账号的持仓(和信用账号,期货账号区分开来)
pos_list = get_positions_ex(AccountType.normal)
if pos_list is not None:
for pos in pos_list:
pos_str = '{},{},{},{},{}\n'.format(fund_account,
pos.security,
pos.total_amount,
pos.closeable_amount,
pos.init_amount)
f.write(pos_str)
上面的write_pos_info函数可以把你的所有持仓都写入一个叫“我的持仓.txt"的文件里面。
读取委托订单,未成交订单,已成交订单,可用资金
def timer_func(context, interval, msg_type):
if interval == 3:
log.debug('开始查询资金账号下所有成交数据')
trade_deals = get_trades(only_this_inst=False)
log.debug('查询获取到%d条成交数据' % len(trade_deals))
log.debug('开始查询所有订单数据')
order_list = get_orders(only_this_inst=False)
log.debug('查询所有订单返回%d条数据' % len(order_list))
print('账户可用资金', context.portfolio.available_cash)
cancel_order_list = []
log.debug('开始查询资金账号下所有未成订单')
open_orders = get_open_orders(only_this_inst=False)
log.debug('查询获得当前资金账号下所有未完成订单,%s' % len(open_orders))
def initialize(context):
run_timely(timer_func, 3) # 注册一个3s的定时函数,用于下单
上面的代码是每隔3秒执行一次,查询自己的下单数据。 比如:
-
查询资金账号下所有成交数据
-
查询所有订单数据
-
查询资金账号下所有未成订单
注意事项
需要注意的是,可用资金和持仓这类数据后台是根据需要实时查询更新的;
但是在量化程序里面,目前实盘资金和持仓的更新是有延迟的,一般在 1.5s 以内,有时会到 2s。
所以强烈建议各位的策略不 要强依赖资金和持仓,如果强依赖,建议自己在策略中维护一个虚拟的资金和持仓。
此外,强依赖资金和 持仓的策略在回测的时候也可能出现相同参数回测结果不一致的问题,原理是一样的。
更多文章,可关注公众号:量化低费率
转载请注明:吾要开户 » 华泰证券matic 量化教程- 获取持仓个股与委托成交数据