十大券商哪家可以接入api?python怎么写股票交易策略代码
发布时间:2024-9-5 15:30阅读:38
on_order_response - 委托主推(可选)
on_order_response(context, order_list)
使用场景
该函数仅在交易模块可用
接口说明
该函数会在委托主推回调时响应,比引擎、get_order()和get_orders()函数更新Order状态的速度更快,适合对速度要求比较高的策略。
注意事项:
- 目前可接收股票、可转债、ETF、LOF、期货代码的主推数据。
- 当接到策略外交易产生的主推时(需券商配置默认不推送),由于没有对应的Order对象,主推信息中order_id字段赋值为""。
- 当在主推里调用委托接口时,需要进行判断处理避免无限迭代循环问题。
- 当券商配置接收策略外交易产生的主推且策略调用set_parameters()并设置receive_other_response="1"时,策略中将接收非本交易产生的主推。
- 当策略调用set_parameters()并设置receive_cancel_response="1",策略接收到撤单成交主推时,主推信息中的order_id为买入或卖出委托Order对象的order_id,entrust_no为撤单委托的委托编号。
- 撤单委托主推信息中成交数量均处理为正数。
参数
context: Context对象,存放有当前的账户及持仓信息;
order_list:一个列表,当前委托单发生变化时,发生变化的委托单列表。委托单以字典形式展现,内容包括:'entrust_no'(委托编号), 'error_info'(错误信息), 'order_time'(委托时间), 'stock_code'(股票代码), 'amount'(委托数量), 'price'(委托价格), 'business_amount'(成交数量), 'status'(委托状态), 'entrust_type'(委托类别), 'entrust_prop'(委托属性), 'order_id'(Order对象编号);
字段备注:
- status -- 委托状态,详见Order对象;
- entrust_type -- 委托类别(str)
- 0 -- 委托
- 2 -- 撤单
- 4 -- 确认
- 6 -- 信用融资
- 7 -- 信用融券
- 9 -- 信用交易
- entrust_prop -- 委托属性(str)
- 0 -- 买卖
- 1 -- 配股
- 3 -- 申购
- 7 -- 转股
- 9 -- 股息
- N -- ETF申赎
- Q -- 对手方最优价格
- R -- 最优五档即时成交剩余转限价
- S -- 本方最优价格
- T -- 即时成交剩余撤销
- U -- 最优五档即时成交剩余撤销
- b -- 定价委托
- c -- 确认委托
- d -- 限价委托
返回
None
接收到的主推格式如下:
本交易产生的主推:[{'business_amount': 0.0, 'order_id': 'e71d1684c8a74b4ca00b3326c9eb8614', 'order_time': '2022-05-10 15:52:10.780', 'entrust_prop': '0', 'status': '2', 'price': 36.95, 'entrust_no': '700006', 'error_info': '', 'amount': 200, 'stock_code': '600570.SS', 'entrust_type': '0'}]
非本交易产生的主推:[{'business_amount': 0.0, 'order_id': '', 'order_time': '2022-05-10 15:54:30.204', 'entrust_prop': '0', 'status': '2', 'price': 36.95, 'entrust_no': '700008', 'error_info': '', 'amount': 200, 'stock_code': '600570.SS', 'entrust_type': '0'}]
示例
def initialize(context):
g.security = ['600570.SS','002416.SZ']
set_universe(g.security)
g.flag = 0
def on_order_response(context, order_list):
log.info(order_list)
if(g.flag==0):
order('600570.SS', 100)
g.flag = 1
else:
log.info("end")
def handle_data(context, data):
order('600570.SS', 100)
on_trade_response - 交易主推(可选)
on_trade_response (context, trade_list)
使用场景
该函数仅在交易模块可用
接口说明
该函数会在成交主推回调时响应,比引擎和get_trades()函数更新Order状态的速度更快,适合对速度要求比较高的策略。
注意事项:
- 目前可接收股票、可转债、ETF、LOF、期货代码的主推数据。
- 当接到策略外交易产生的主推时(需券商配置默认不推送),由于没有对应的Order对象,主推信息中order_id字段赋值为""。
- 当在主推里调用委托接口时,需要进行判断处理避免无限迭代循环问题。
- 当券商配置接收策略外交易产生的主推且策略调用set_parameters()并设置receive_other_response="1"时,策略中将接收非本交易产生的主推。
- 当策略调用set_parameters()并设置receive_cancel_response="1",策略接收到撤单成交主推时,主推信息中的order_id为买入或卖出委托Order对象的order_id,entrust_no为撤单委托的委托编号。
- 撤单成交主推信息中成交数量均处理为正数。
- 部分券商柜台成交主推信息中status字段为"",策略中需予以保护。
参数
context: Context对象,存放有当前的账户及持仓信息;
trade_list:一个列表,当前成交单发生变化时,发生变化的成交单列表。成交单以字典形式展现,内容包括:'entrust_no'(委托编号), 'business_time'(成交时间), 'stock_code'(股票代码), 'entrust_bs'(成交方向), 'business_amount'(成交数量), 'business_price'(成交价格), 'business_balance'(成交额), 'business_id'(成交编号), 'status'(委托状态), 'order_id'(Order对象编号);
字段备注:
- entrust_bs -- 成交方向(str),1-买,2-卖;
- status -- 委托状态,详见Order对象;
返回
None
接收到的主推格式如下:
本交易产生的主推:[{'status': '8', 'business_id': '76', 'business_amount': 200, 'order_id': 'e71d1684c8a74b4ca00b3326c9eb8614', 'entrust_no': '700006', 'business_balance': 7390.000000000001, 'business_price': 36.95, 'stock_code': '600570.SS', 'entrust_bs': '1', 'business_time': '2022-05-10 15:51:47'}]
非本交易产生的主推:[{'status': '8', 'business_id': 'b155235000000003', 'business_amount': 200, 'order_id': '', 'entrust_no': '700007', 'business_balance': 3000.0, 'business_price': 15.0, 'stock_code': '000001.SZ', 'entrust_bs': '1', 'business_time': '2022-05-10 15:52:35'}]
示例
def initialize(context):
g.security = ['600570.SS','002416.SZ']
set_universe(g.security)
g.flag = 0
def on_trade_response(context, trade_list):
log.info(trade_list)
if(g.flag==0):
order('600570.SS', 100)
g.flag = 1
else:
log.info("end")
def handle_data(context, data):
order('600570.SS', 100)
后续小编会持续更新关于ptrade量化软件的使用和开通小tips,感兴趣的朋友们可以关注私信一起交流学习哦!
温馨提示:投资有风险,选择需谨慎。