PDF下载 下载

做市商交易(期货)

阅读 6497
  1. # coding=utf-8
  2. from __future__ import print_function, absolute_import, unicode_literals
  3. from gm.api import *
  4. '''
  5. 本策略通过不断对CZCE.CF801进行:
  6. 买(卖)一价现价单开多(空)仓和卖(买)一价平多(空)仓来做市
  7. 并以此赚取差价
  8. 回测数据为:CZCE.CF801的tick数据
  9. 回测时间为:2017-09-29 11:25:00到2017-09-29 11:30:00
  10. 需要特别注意的是:本平台对于回测对限价单固定完全成交,本例子 仅供参考.
  11. 敬请通过适当调整回测参数
  12. 1.backtest_commission_ratio回测佣金比例
  13. 2.backtest_slippage_ratio回测滑点比例
  14. 3.backtest_transaction_ratio回测成交比例
  15. 以及优化策略逻辑来达到更贴近实际的回测效果
  16. '''
  17. def init(context):
  18. # 订阅CZCE.CF801的tick数据
  19. context.symbol = 'CZCE.CF801'
  20. subscribe(symbols=context.symbol, frequency='tick')
  21. def on_tick(context, tick):
  22. quotes = tick['quotes'][0]
  23. # 获取持有的多仓
  24. positio_long = context.account().position(symbol=context.symbol, side=PositionSide_Long)
  25. # 获取持有的空仓
  26. position_short = context.account().position(symbol=context.symbol, side=PositionSide_Short)
  27. print(quotes['bid_p'])
  28. print(quotes['ask_p'])
  29. # 没有仓位则双向开限价单
  30. # 若有仓位则限价单平仓
  31. if not positio_long:
  32. # 获取买一价
  33. price = quotes['bid_p']
  34. print('买一价为: ', price)
  35. order_target_volume(symbol=context.symbol, volume=1, price=price, order_type=OrderType_Limit,
  36. position_side=PositionSide_Long)
  37. print('CZCE.CF801开限价单多仓1手')
  38. else:
  39. # 获取卖一价
  40. price = quotes['ask_p']
  41. print('卖一价为: ', price)
  42. order_target_volume(symbol=context.symbol, volume=0, price=price, order_type=OrderType_Limit,
  43. position_side=PositionSide_Long)
  44. print('CZCE.CF801平限价单多仓1手')
  45. if not position_short:
  46. # 获取卖一价
  47. price = quotes['ask_p']
  48. print('卖一价为: ', price)
  49. order_target_volume(symbol=context.symbol, volume=1, price=price, order_type=OrderType_Limit,
  50. position_side=PositionSide_Short)
  51. print('CZCE.CF801卖一价开限价单空仓')
  52. else:
  53. # 获取买一价
  54. price = quotes['bid_p']
  55. print('买一价为: ', price)
  56. order_target_volume(symbol=context.symbol, volume=0, price=price, order_type=OrderType_Limit,
  57. position_side=PositionSide_Short)
  58. print('CZCE.CF801买一价平限价单空仓')
  59. if __name__ == '__main__':
  60. '''
  61. strategy_id策略ID,由系统生成
  62. filename文件名,请与本文件名保持一致
  63. mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST
  64. token绑定计算机的ID,可在系统设置-密钥管理中生成
  65. backtest_start_time回测开始时间
  66. backtest_end_time回测结束时间
  67. backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
  68. backtest_initial_cash回测初始资金
  69. backtest_commission_ratio回测佣金比例
  70. backtest_slippage_ratio回测滑点比例
  71. backtest_transaction_ratio回测成交比例
  72. '''
  73. run(strategy_id='strategy_id',
  74. filename='main.py',
  75. mode=MODE_BACKTEST,
  76. token='token_id',
  77. backtest_start_time='2017-09-29 11:25:00',
  78. backtest_end_time='2017-09-29 11:30:00',
  79. backtest_adjust=ADJUST_PREV,
  80. backtest_initial_cash=500000,
  81. backtest_commission_ratio=0.00006,
  82. backtest_slippage_ratio=0.0001,
  83. backtest_transaction_ratio=0.5)

做市商交易(期货)

0 篇笔记