基于订单流的日内盘口策略

基于订单流的日内盘口策略_第1张图片

量化策略开发,高质量社群,交易思路分享等相关内容

『正文』

ˇ

目录

    一、基于订单流的日内盘口策略

    二、亚努斯量化交易图表介绍
 

一、基于订单流的日内盘口策略

大家好,我是乌克兰剑圣。

在7月份的时候我们发布了第一版盘口策略专享策略06 | 盘口策略CTP实盘版,这个策略写了订单流的核心算法及最基础的交易规则,加入了固定与移动的止损止盈。

今日发布的日内版本在前版基础之上加入了夜盘白盘的收盘清仓修改了开仓条件跟踪止损改为跟踪止盈定时启动程序。同时提供了回测,模拟,实盘三个版本源码

基于订单流的日内盘口策略_第2张图片

OK,下面我们来说说修改的部分。

收盘清仓

def 收盘清仓(data):
      # 获取当前时间
  current_time = datetime.now().time()

  # 设置清仓操作的时间范围1:14:55到15:00
  clearing_time1_start = s_time(14, 55)
  clearing_time1_end = s_time(15, 0)

  # 设置清仓操作的时间范围2:22:55到23:00
  clearing_time2_start = s_time(22, 55)
  clearing_time2_end = s_time(23, 0)

  # 创建一个标志变量,用于记录是否已经执行过清仓操作
  clearing_executed = False

  # 检查当前时间是否在第一个清仓操作的时间范围内,并且清仓操作未执行过
  if clearing_time1_start <= current_time <= clearing_time1_end and not clearing_executed :
      if self.pos>0:
          #平多
          self.insert_order(data['ExchangeID'], data['InstrumentID'], data['BidPrice1'],1,b'1',b'3')
          self.pos=0
          print("多头清仓操作")
          pass
      elif self.pos<0:
          #平空
          self.insert_order(data['ExchangeID'], data['InstrumentID'], data['AskPrice1'],1,b'0',b'3')
          self.pos=0
          print("空头清仓操作")
          pass
      clearing_executed = True  # 设置标志变量为已执行

  # 检查当前时间是否在第二个清仓操作的时间范围内,并且清仓操作未执行过
  elif clearing_time2_start <= current_time <= clearing_time2_end and not clearing_executed :
      if self.pos>0:
          #平多
          self.insert_order(data['ExchangeID'], data['InstrumentID'], data['BidPrice1'],1,b'1',b'3')
          self.pos=0
          print("多头清仓操作")
          pass
      elif self.pos<0:
          #平空
          self.insert_order(data['ExchangeID'], data['InstrumentID'], data['AskPrice1'],1,b'0',b'3')
          self.pos=0
          print("空头清仓操作")
          pass
      clearing_executed = True  # 设置标志变量为已执行
  # 如果不在任何清仓操作的时间范围内,可以执行其他操作或不执行任何操作
  else:
      clearing_executed = False
      pass
      #print("不在清仓操作时间范围内")

回测版本的收盘清仓写法不一,这里是实盘平仓的代码。

开平仓条件

 #开仓
  #多头开仓条件 
  if self.pos!=1:
      if self.pos==-1 and trader_df['dj'].iloc[-1]>self.dj_X :
          #self.buy_close(data['ExchangeID'], data['InstrumentID'], data['AskPrice1'],1,True)
          print('平空:','ExchangeID: ',data['ExchangeID'],'InstrumentID',data['InstrumentID'],'AskPrice1',data['AskPrice1'])
          #平空
          self.insert_order(data['ExchangeID'], data['InstrumentID'], data['AskPrice1'],1,b'0',b'3')
          print('datetime+sig: ', trader_df['datetime'].iloc[-1], '反手平空:', '平仓价格:', data['AskPrice1'],'堆积数:', trader_df['dj'].iloc[-1])
      if  trader_df['dj'].iloc[-1]>self.dj_X  and trader_df['close'].iloc[-1] > rinei_ma and trader_df['close'].iloc[-1]>trader_df['open'].iloc[-1] :
          print('开多:','ExchangeID: ',data['ExchangeID'],'InstrumentID',data['InstrumentID'],'AskPrice1',data['AskPrice1'])
          #self.buy_open(data['ExchangeID'], data['InstrumentID'], data['AskPrice1'], 1)
          #开多
          self.insert_order(data['ExchangeID'], data['InstrumentID'], data['AskPrice1'],1,b'0',b'0')
          print('datetime+sig: ', trader_df['datetime'].iloc[-1], '多头开仓', '开仓价格:', data['AskPrice1'],'堆积数:', trader_df['dj'].iloc[-1])
          self.pos=1
          self.long_trailing_stop_price=data['AskPrice1']
          self.sl_long_price=data['AskPrice1']
  #空头开仓条件省略

开平仓条件:

  1. 满足堆积条件后,需要日内均线判断顺势开仓,同时信号BAR必须是同向(多头堆积必须是阳线)。

  2. 仅满足堆积条件同时持有反向的持仓,执行反手平仓。

  3. 将跟踪出场改为跟踪止盈,只有盈利的情况下触发。

定时启动程序

基于订单流的日内盘口策略_第3张图片

为了保证策略每日变量重置,我们写了一个辅助脚本来全天后自动运行。

回测报告

回测报告分为隔夜和日内两个模式:

测试参数:

  1. 2023年1月1日-6月1日,6个月内(TICK数据合成1M)。

  2. 手续费均为实盘费率。

  3. 没有优化参数。

尿素(隔夜):

基于订单流的日内盘口策略_第4张图片

尿素(日内):

基于订单流的日内盘口策略_第5张图片

白糖(隔夜):

基于订单流的日内盘口策略_第6张图片

白糖(日内):

基于订单流的日内盘口策略_第7张图片

纯碱(隔夜):

基于订单流的日内盘口策略_第8张图片

纯碱(日内):

基于订单流的日内盘口策略_第9张图片

菜粕(隔夜):

基于订单流的日内盘口策略_第10张图片

菜粕(日内):

基于订单流的日内盘口策略_第11张图片

螺纹(隔夜):

基于订单流的日内盘口策略_第12张图片

螺纹(日内):

基于订单流的日内盘口策略_第13张图片

花生(隔夜):

基于订单流的日内盘口策略_第14张图片

花生(日内):

基于订单流的日内盘口策略_第15张图片

篇幅有限,还有更多的品种小伙伴们下载后自己回测研究吧。隔夜的代码版本是前版,日内的代码就是今天发布的这版,回测用的行情数据在俱乐部后台下载。

PS:9月12日起,松鼠将实盘测试7天订单流日内策略代码,用一个小账户挂在七禾网跑,观看地址在俱乐部发布供学员跟踪研究,最终交付无BUG源码给到俱乐部小伙伴。

、亚努斯量化交易图表介绍

同义词 亚努斯(古罗马神话人物)一般指雅努斯

Janus,雅努斯(Janus [1]  )是罗马人的门神,也是罗马人的保护神。具有前后两个面孔或四方四个面孔,象征开始。最古老的信息告诉人们,雅努斯是起源神,执掌着开始和入门,也执掌着出口和结束,同时他又被称为“门户总管”,他永远都象征着世界上矛盾的万事万物,所以,他的肖像被画成两张脸,有“双头雅努斯“的说法。

传说中,雅努斯有两副面孔:一副看着过去,一副看着未来。

亚努斯量化-交易图表的主旨是辅助交易者分析行情,把握买卖点,总览市场强弱变化。

1、日内全市场delta累计(加权)实时,总览市场多空力量变化趋势。

基于订单流的日内盘口策略_第16张图片

2、日内市场全景delta强弱排序(实时),实时监测最强最弱品种变化。

基于订单流的日内盘口策略_第17张图片

3、日内K线信号图表(实时)交易信号,辅助判断交易时点。

基于订单流的日内盘口策略_第18张图片

4、多图同列-多周期-多品种及时把握多品种买卖点。

基于订单流的日内盘口策略_第19张图片

目前亚努斯量化交易图表处于内测阶段,俱乐部内部试用。预计10月份正式上线,同时松鼠沙盘订单流图表将合并到亚努斯量化图表里。

基于订单流的日内盘口策略_第20张图片

基于订单流的日内盘口策略_第21张图片

本策略仅作学习交流使用,实盘交易盈亏投资者个人负责。 

你可能感兴趣的:(通用策略,专享策略,量化交易,量化研究,交易策略,策略研究)