• QQ空间
  • 回复
  • 收藏

【宽客策略源码】做市商交易(期货)

geek168 数据策略 2019-8-11 16:04 97528人围观


本策略通过不断对CZCE.CF801进行:
买(卖)一价现价单开多(空)仓和卖(买)一价平多(空)仓来做市,并以此赚取差价
回测数据为:CZCE.CF801的tick数据
回测时间为:2017-09-29 11:25:00到2017-09-29 11:30:00
需要特别注意的是:本平台对于回测对限价单固定完全成交,本例子 仅供参考.


1.backtest_commission_ratio回测佣金比例
2.backtest_slippage_ratio回测滑点比例
3.backtest_transaction_ratio回测成交比例
以及优化策略逻辑来达到更贴近实际的回测效果


  1. # coding=utf-8
  2. from __future__ import print_function, absolute_import, unicode_literals
  3. from gm.api import *

  4. def init(context):
  5.     # 订阅CZCE.CF801的tick数据
  6.     context.symbol = 'CZCE.CF801'
  7.     subscribe(symbols=context.symbol, frequency='tick')
  8. def on_tick(context, tick):
  9.     quotes = tick['quotes'][0]
  10.     # 获取持有的多仓
  11.     positio_long = context.account().position(symbol=context.symbol, side=PositionSide_Long)
  12.     # 获取持有的空仓
  13.     position_short = context.account().position(symbol=context.symbol, side=PositionSide_Short)
  14.     print(quotes['bid_p'])
  15.     print(quotes['ask_p'])
  16.     # 没有仓位则双向开限价单
  17.     # 若有仓位则限价单平仓
  18.     if not positio_long:
  19.         # 获取买一价
  20.         price = quotes['bid_p']
  21.         print('买一价为: ', price)
  22.         order_target_volume(symbol=context.symbol, volume=1, price=price, order_type=OrderType_Limit,
  23.                             position_side=PositionSide_Long)
  24.         print('CZCE.CF801开限价单多仓1手')
  25.     else:
  26.         # 获取卖一价
  27.         price = quotes['ask_p']
  28.         print('卖一价为: ', price)
  29.         order_target_volume(symbol=context.symbol, volume=0, price=price, order_type=OrderType_Limit,
  30.                             position_side=PositionSide_Long)
  31.         print('CZCE.CF801平限价单多仓1手')
  32.     if not position_short:
  33.         # 获取卖一价
  34.         price = quotes['ask_p']
  35.         print('卖一价为: ', price)
  36.         order_target_volume(symbol=context.symbol, volume=1, price=price, order_type=OrderType_Limit,
  37.                             position_side=PositionSide_Short)
  38.         print('CZCE.CF801卖一价开限价单空仓')
  39.     else:
  40.         # 获取买一价
  41.         price = quotes['bid_p']
  42.         print('买一价为: ', price)
  43.         order_target_volume(symbol=context.symbol, volume=0, price=price, order_type=OrderType_Limit,
  44.                             position_side=PositionSide_Short)
  45.         print('CZCE.CF801买一价平限价单空仓')
  46. if __name__ == '__main__':
  47.     '''
  48.     strategy_id策略ID,由系统生成
  49.     filename文件名,请与本文件名保持一致
  50.     mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST
  51.     token绑定计算机的ID,可在系统设置-密钥管理中生成
  52.     backtest_start_time回测开始时间
  53.     backtest_end_time回测结束时间
  54.     backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
  55.     backtest_initial_cash回测初始资金
  56.     backtest_commission_ratio回测佣金比例
  57.     backtest_slippage_ratio回测滑点比例
  58.     backtest_transaction_ratio回测成交比例
  59.     '''
  60.     run(strategy_id='strategy_id',
  61.         filename='main.py',
  62.         mode=MODE_BACKTEST,
  63.         token='token_id',
  64.         backtest_start_time='2017-09-29 11:25:00',
  65.         backtest_end_time='2017-09-29 11:30:00',
  66.         backtest_adjust=ADJUST_PREV,
  67.         backtest_initial_cash=500000,
  68.         backtest_commission_ratio=0.00006,
  69.         backtest_slippage_ratio=0.0001,
  70.         backtest_transaction_ratio=0.5)
复制代码




路过

雷人

握手

鲜花

鸡蛋
原作者: abctrader
关注微信