- UID
- 2
- 积分
- 2874604
- 威望
- 1387331 布
- 龙e币
- 1487273 刀
- 在线时间
- 13155 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
[模板与范例参考] 做市商策略(期货)Python策略源码模板【东方财富Python量化】
基于tick价差的交易策略- # coding=utf-8
- from __future__ import print_function, absolute_import, unicode_literals
- from gm.api import *
- '''
- 本策略通过不断对DCE.y2105进行:
- 买(卖)一价现价单开多(空)仓和卖(买)一价平多(空)仓来做市
- 并以此赚取差价
- 回测数据为:DCE.y2105的tick数据
- 回测时间为:2021-01-29 11:25:00到2021-01-29 11:30:00
- 需要特别注意的是:本平台对于回测对限价单固定完全成交,本例子 仅供参考.
- 敬请通过适当调整回测参数
- 1.backtest_commission_ratio回测佣金比例
- 2.backtest_slippage_ratio回测滑点比例
- 3.backtest_transaction_ratio回测成交比例
- 以及优化策略逻辑来达到更贴近实际的回测效果
- 目前只支持最近三个月的tick数据,回测时间和标的需要修改
- '''
- def init(context):
- # 订阅DCE.y2105的tick数据
- context.symbol = 'DCE.y2105'
- subscribe(symbols=context.symbol, frequency='tick')
- def on_tick(context, tick):
- quotes = tick['quotes'][0]
- # 获取持有的多仓
- position_long = context.account().position(symbol=context.symbol, side=PositionSide_Long)
- # 获取持有的空仓
- position_short = context.account().position(symbol=context.symbol, side=PositionSide_Short)
- # 没有仓位则双向开限价单
- # 若有仓位则限价单平仓
- if not position_long:
- # 获取买一价
- price = quotes['bid_p']
- print('买一价为: ', price)
- order_target_volume(symbol=context.symbol, volume=1, price=price, order_type=OrderType_Limit,
- position_side=PositionSide_Long)
- print('DCE.y2105开限价单多仓1手')
- else:
- # 获取卖一价
- price = quotes['ask_p']
- print('卖一价为: ', price)
- order_target_volume(symbol=context.symbol, volume=0, price=price, order_type=OrderType_Limit,
- position_side=PositionSide_Long)
- print('DCE.y2105平限价单多仓1手')
- if not position_short:
- # 获取卖一价
- price = quotes['ask_p']
- print('卖一价为: ', price)
- order_target_volume(symbol=context.symbol, volume=1, price=price, order_type=OrderType_Limit,
- position_side=PositionSide_Short)
- print('DCE.y2105卖一价开限价单空仓')
- else:
- # 获取买一价
- price = quotes['bid_p']
- print('买一价为: ', price)
- order_target_volume(symbol=context.symbol, volume=0, price=price, order_type=OrderType_Limit,
- position_side=PositionSide_Short)
- print('DCE.y2105买一价平限价单空仓')
- if __name__ == '__main__':
- '''
- strategy_id策略ID,由系统生成
- filename文件名,请与本文件名保持一致
- mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST
- token绑定计算机的ID,可在系统设置-密钥管理中生成
- backtest_start_time回测开始时间
- backtest_end_time回测结束时间
- backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
- backtest_initial_cash回测初始资金
- backtest_commission_ratio回测佣金比例
- backtest_slippage_ratio回测滑点比例
- backtest_transaction_ratio回测成交比例
- '''
- run(strategy_id='strategy_id',
- filename='main.py',
- mode=MODE_BACKTEST,
- token='{{token}}',
- backtest_start_time='2021-01-20 11:25:00',
- backtest_end_time='2021-01-20 11:30:00',
- backtest_adjust=ADJUST_PREV,
- backtest_initial_cash=500000,
- backtest_commission_ratio=0.00006,
- backtest_slippage_ratio=0.0001,
- backtest_transaction_ratio=0.5)
复制代码 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|