返回介绍

开始入门

操作指引

SDK

数据文档

常见问题

量化工具

其他

其他

算法交易函数

发布于 2024-06-22 12:53:28 字数 13333 浏览 0 评论 0 收藏 0

算法 SDK

python 算法 SDK 包含在 gm3.0.126 版本及以上版本,不需要引入新库 仅支持实时模式,部分券商版本可用

algo_order 算法交易委托

委托算法母单

函数原型:

algo_order(symbol, volume, side, order_type,position_effect, price, algo_name, algo_param)

参数:

参数类型说明
symbolstr标的代码
volumeint数量
sideintOrderSide_Buy = 1 买入 OrderSide_Sell = 2 卖出
order_typeintOrderType_Limit = 1 限价委托,OrderType_Market = 2 市价委托
position_effectintPositionEffect_Open = 1 开仓 PositionEffect_Close = 2 平仓,
priceint基准价格(ATS-SMART 算法不生效)
algo_namestr算法名称,ATS-SMART、ZC-POV
algo_paramdict算法参数

返回值:

类型说明
list[order]委托对象列表,参见order 对象

当 algo_name = 'ATS-SMART'时 algo_param 的参数为

参数类型说明
start_timestr开始时间
end_time_referredstr结束参考时间(不能超过 14:55:00)
time_endstr结束时间(不能超过 14:55:00)
end_time_validint结束时间是否有效,如设为无效,则以收盘时间为结束时间, 1 为有效, 0 为无效
stop_sell_when_dlint涨停时是否停止卖出, 1 为是,0 为否
cancel_when_plint跌停时是否撤单, 1 为是, 0 为否
min_trade_amountint最小交易金额

示例:

# 下算法母单,设定母单的执行参数
algo_param = {'start_time': '09:00:00', 'end_time_referred':'14:55:00', 'end_time': '14:55:00', 'end_time_valid': 1, 'stop_sell_when_dl': 1,
              'cancel_when_pl': 0, 'min_trade_amount': 100000}
aorders = algo_order(symbol='SHSE.600000', volume=20000, side=OrderSide_Buy, order_type=OrderType_Limit,
                   position_effect=PositionEffect_Open, price=5, algo_name='ATS-SMART', algo_param=algo_param)
print(aorders)

输出:

[{'strategy_id': '6f534238-2883-11eb-a8fe-fa163ef85f63', 'account_id': '927f9095-27e5-11eb-bb81-fa163ef85f63', 'account_name': '1001000002', 'cl_ord_id': '03f13690-2d64-11eb-9e36-fa163ef85f63', 'symbol': 'SHSE.600000', 'side': 1, 'position_effect': 1, 'order_type': 1, 'status': 10, 'price': 5.0, 'order_style': 1, 'volume': 20000, 'created_at': datetime.datetime(2020, 11, 23, 16, 15, 15, 105141, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2020, 11, 23, 16, 15, 15, 105141,tzinfo=tzfile('PRC')), 'algo_name': 'ATS-SMART', 'algo_param': 'start_time&&1606093200||end_time_referred&&1606114500||end_time&&1606114500||end_time_valid&&1||stop_sell_when_dl&&1||cancel_when_pl&&0||min_trade_amount&&100000', 'order_id': '', 'ex_ord_id': '', 'position_side': 0, 'order_business': 0, 'order_duration': 0, 'order_qualifier': 0, 'order_src': 0, 'position_src': 0, 'ord_rej_reason': 0, 'ord_rej_reason_detail': '', 'stop_price': 0.0, 'value': 0.0, 'percent': 0.0, 'target_volume': 0, 'target_value': 0.0, 'target_percent': 0.0, 'filled_volume': 0, 'filled_vwap': 0.0, 'filled_amount': 0.0, 'filled_commission': 0.0, 'algo_status': 0, 'algo_comment': ''}]

当 algo_name = 'ZC-POV'时 algo_param 的参数为

参数类型说明
part_ratefloat市场参与率(0~45),单位%,默认 30,即 30%
pricefloat基准价格

示例:

# 下算法母单,设定母单的执行参数
algo_param = {"participation_rate" : 15, "price" : 15.47}
aorder = algo_order(symbol=symbol, volume=1000, side=OrderSide_Buy, order_type=OrderSide_Buy,
               position_effect=PositionEffect_Open, price=price, algo_name=algo_name, algo_param=algo_param)
print(aorder)

输出:

[{'strategy_id': '6f534238-2883-11eb-a8fe-fa163ef85f63', 'account_id': '15b7afb1-e91d-11eb-953b-025041000001', 'account_name': 'b6b2819b-e864-11eb-b146-00163e0a4100', 'cl_ord_id': 'e0f4ca3f-f97a-11eb-acee-165afc004509', 'symbol': 'SHSE.600007', 'side': 1, 'position_effect': 1, 'order_type': 1, 'status': 10, 'price': 15.470000267028809, 'order_style': 1, 'volume': 1000, 'created_at': datetime.datetime(2021, 8, 10, 9, 32, 52, 39737, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2021, 8, 10, 9, 32, 52, 42738, tzinfo=tzfile('PRC')), 'algo_name': 'ZC-POV', 'algo_param': 'TimeStart&&1628559000||TimeEnd&&1628578800||PartRate&&0.150000||MinAmount&&1000', 'order_id': '', 'ex_ord_id': '', 'position_side': 0, 'order_business': 0, 'order_duration': 0, 'order_qualifier': 0, 'order_src': 0, 'position_src': 0, 'ord_rej_reason': 0, 'ord_rej_reason_detail': '', 'stop_price': 0.0, 'value': 0.0, 'percent': 0.0, 'target_volume': 0, 'target_value': 0.0, 'target_percent': 0.0, 'filled_volume': 0, 'filled_vwap': 0.0, 'filled_amount': 0.0, 'filled_commission': 0.0, 'algo_status': 0, 'algo_comment': '', 'properties': {}]

注意: 回测模式不支持算法单

algo_order_cancel 撤销算法委托

撤销母单委托

函数原型:

algo_order_cancel(wait_cancel_orders)

参数:

参数类型说明
wait_cancel_ordersstr撤单算法委托. 传入单个字典. 或者 list 字典. 每个字典包含 key:cl_ord_id key:account_id

cl_ord_id 为委托 id, account_id 为账户 id

返回值:

类型说明
list[order]委托对象列表,参见order 对象

示例:

aorders = get_algo_orders(account='')
wait_cancel_orders = [{'cl_ord_id': aorders[0]['cl_ord_id'], 'account_id': aorders[0]['account_id']}]
algo_order_cancel(wait_cancel_orders)

get_algo_orders 查询算法委托

查询母单委托

函数原型:

algo_order_cancel(account)

参数:

参数类型说明
accountstraccount_id 默认帐号时为 ''

返回值:

类型说明
list[order]委托对象列表,参见order 对象

示例:

get_algo_orders(account='')

输出:

[{'strategy_id': '6f534238-2883-11eb-a8fe-fa163ef85f63', 'account_id': '927f9095-27e5-11eb-bb81-fa163ef85f63', 'account_name': '1001000002', 'cl_ord_id': 'fe0ec2d3-2d50-11eb-9e36-fa163ef85f63', 'symbol': 'SHSE.510300', 'side': 1, 'position_effect': 1, 'order_type': 1, 'status': 10, 'price': 5.0, 'order_style': 1, 'volume': 20000, 'created_at': datetime.datetime(2020, 11, 23, 13, 59, 4,794594, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2020, 11, 23, 13, 59, 4, 795571, tzinfo=tzfile('PRC')), 'algo_name': 'ATS-SMART', 'algo_param': 'start_time&&1606093200||end_time_referred&&1606114500||end_time&&1606114500||end_time_valid&&1||stop_sell_when_dl&&1||cancel_when_pl&&0||min_trade_amount&&100000', 'order_id': '', 'ex_ord_id': '', 'position_side': 0, 'order_business': 0, 'order_duration': 0, 'order_qualifier': 0, 'order_src': 0, 'position_src': 0, 'ord_rej_reason': 0, 'ord_rej_reason_detail': '', 'stop_price': 0.0, 'value': 0.0, 'percent': 0.0, 'target_volume': 0, 'target_value': 0.0, 'target_percent': 0.0, 'filled_volume': 0, 'filled_vwap': 0.0, 'filled_amount': 0.0, 'filled_commission': 0.0, 'algo_status': 0, 'algo_comment': ''}]

algo_order_pause 暂停或重启或者撤销算法委托

函数原型:

algo_order_pause(alorders)

参数:

参数类型说明
alordersstr传入单个字典. 或者 list 字典. 每个字典包含 key:cl_ord_id, key:account_id key:algo_status

cl_ord_id 为委托 id, account_id 为账户 id,algo_status 为算法单状态(1 - 重启 2 - 暂停 3 -暂停并撤子单)

返回值:

类型说明
list[order]委托对象列表,参见order 对象
aorders = get_algo_orders(account='')
# 暂停订单,修改订单结构的母单状态字段
alorders01 = [{'cl_ord_id': aorders[0]['cl_ord_id'], 'account_id': aorders[0]['account_id'], 'algo_status': 3}]
algo_order_pause(alorders01)

注意: ATS-SMART 算法暂不支持此接口

get_algo_child_orders 查询算法委托的所有子单

函数原型:

get_algo_child_orders(cl_ord_id, account='')

参数:

参数类型说明
cl_ord_idstr传入单个字典. 或者 list 字典. 每个字典包含 key:cl_ord_id
accountstraccount_id 默认帐号时为 ''

返回值:

类型说明
list[order]委托对象列表,参见order 对象

示例:

aorders = get_algo_orders(account='')
child_order= get_algo_child_orders(aorders[0]['cl_ord_id'], account='')
print(child_order[0])

输出:

[{'account_id': '17ceec74-2efb-11eb-b437-00ff5a669ee2', 'account_name': '0000001', 'cl_ord_id': '1606294231_9', 'order_id': '1606294231_9', 'symbol': 'SZSE.000001', 'side': 1, 'position_effect': 1, 'order_type': 1, 'status': 3, 'price': 19.06, 'volume': 100, 'filled_volume': 100, 'filled_vwap': 19.06, 'filled_amount': 1905.9999999999998, 'algo_order_id': '453b3064-2efb-11eb-b437-00ff5a669ee2', 'strategy_id': '', 'ex_ord_id': '', 'position_side': 0, 'order_business': 0, 'order_duration': 0, 'order_qualifier': 0, 'order_src': 0, 'ord_rej_reason': 0, 'ord_rej_reason_detail': '', 'stop_price': 0.0, 'order_style': 0, 'value': 0.0, 'percent': 0.0, 'target_volume': 0, 'target_value': 0.0, 'target_percent': 0.0, 'filled_commission': 0.0, 'created_at': None, 'updated_at': None}]

on_algo_order_status 算法单状态事件

响应算法单状态更新事情,下算法单后状态更新时被触发

函数原型:

on_algo_order_status(context, algo_order)

参数:

参数名类型说明
contextcontext上下文
algo_orderorder 对象委托

示例:

def on_algo_order_status(context, algo_order):
	print(algo_order)

输出:

{'strategy_id': '6f534238-2883-11eb-a8fe-fa163ef85f63', 'account_id': '927f9095-27e5-11eb-bb81-fa163ef85f63', 'account_name': '1001000002', 'cl_ord_id': '09baa735-2e01-11eb-ab6f-fa163ef85f63','symbol': 'SHSE.600000', 'side': 1, 'position_effect': 1,'order_type': 1, 'status':1, 'price': 5.0, 'order_style': 1, 'volume': 20000, 'created_at':datetime.datetime(2020,11, 24, 10, 59, 15, 800453, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2020, 11, 24, 10, 59, 17, 922523, tzinfo=tzfile('PRC')), 'algo_name': 'ATS-SMART', 'algo_param': 'start_time&&1606179600||end_time_referred&&1606200900||end_time&&1606200900||end_time_valid&&1|stop_sell_when_dl&&1||cancel_when_pl&&0||min_trade_amount&&100000', 'order_id': '', 'ex_ord_id':'', 'position_side': 0, 'order_business': 0, 'order_duration': 0, 'order_qualifier':0, 'order_src': 0, 'position_src': 0, 'ord_rej_reason': 0, 'ord_rej_reason_detail': '', 'stop_price': 0.0, 'value': 0.0, 'percent': 0.0, 'target_volume': 0, 'target_value': 0.0, 'target_percent': 0.0, 'filled_volume': 0, 'filled_vwap': 0.0, 'filled_amount': 0.0, 'filled_commission': 0.0, 'algo_status':0, 'algo_comment': ''}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文