目录
一、基于订单流的日内盘口策略
二、亚努斯量化交易图表介绍
一、基于订单流的日内盘口策略
大家好,我是乌克兰剑圣。
在7月份的时候我们发布了第一版盘口策略专享策略06 | 盘口策略CTP实盘版,这个策略写了订单流的核心算法及最基础的交易规则,加入了固定与移动的止损止盈。
今日发布的日内版本在前版基础之上加入了夜盘白盘的收盘清仓、修改了开仓条件,跟踪止损改为跟踪止盈、定时启动程序。同时提供了回测,模拟,实盘三个版本源码。
![](http://dingyue.ws.126.net/2024/0606/94faf56ej00semx9d000dd000dm004lm.jpg)
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']
- #空头开仓条件省略
开平仓条件:
- 满足堆积条件后,需要日内均线判断顺势开仓,同时信号BAR必须是同向(多头堆积必须是阳线)。
- 仅满足堆积条件同时持有反向的持仓,执行反手平仓。
- 将跟踪出场改为跟踪止盈,只有盈利的情况下触发。
![定时启动程序](http://cms-bucket.ws.126.net/2019/10/14/c66f41ca219849a987b74f5b496dd9db.png)
定时启动程序
![](http://dingyue.ws.126.net/2024/0606/aa7bfd85j00semx9e000od000ga0086m.jpg)
为了保证策略每日变量重置,我们写了一个辅助脚本来全天后自动运行。
回测报告
回测报告分为隔夜和日内两个模式:
测试参数:
- 2023年1月1日-6月1日,6个月内(TICK数据合成1M)。
- 手续费均为实盘费率。
3.没有优化参数。
尿素(隔夜):
![](http://dingyue.ws.126.net/2024/0606/66589f3ej00semx9h005td000u000e0m.jpg)
尿素(日内):
![](http://dingyue.ws.126.net/2024/0606/1c633acej00semx9h007ud000u000fvm.jpg)
白糖(隔夜):
![](http://dingyue.ws.126.net/2024/0606/7623ecb1j00semx9h004zd000u000e4m.jpg)
白糖(日内):
![](http://dingyue.ws.126.net/2024/0606/9427926bj00semx9h006yd000u000dvm.jpg)
纯碱(隔夜):
![](http://dingyue.ws.126.net/2024/0606/fb791758j00semx9h004kd000u000dwm.jpg)
纯碱(日内):
![](http://dingyue.ws.126.net/2024/0606/b4f62eb5j00semx9h004yd000u000e2m.jpg)
菜粕(隔夜):
![](http://dingyue.ws.126.net/2024/0606/b19bc43ej00semx9h006ad000u000dsm.jpg)
菜粕(日内):
![](http://dingyue.ws.126.net/2024/0606/c020e52dj00semx9h006qd000u000dtm.jpg)
螺纹(隔夜):
![](http://dingyue.ws.126.net/2024/0606/2dbf12daj00semx9h006ed000u000dum.jpg)
螺纹(日内):
![](http://dingyue.ws.126.net/2024/0606/cff8ca8cj00semx9h0063d000u000dtm.jpg)
花生(隔夜):
![](http://dingyue.ws.126.net/2024/0606/78d0fa8fj00semx9h006nd000u000dym.jpg)
花生(日内):
![](http://dingyue.ws.126.net/2024/0606/1bc774adj00semx9h006rd000u000dwm.jpg)
篇幅有限,还有更多的品种小伙伴们下载后自己回测研究吧。隔夜的代码版本是前版,日内的代码就是今天发布的这版,回测用的行情数据在俱乐部后台下载。
PS:2023年9月12日起,松鼠将实盘测试7天订单流日内策略代码,用一个小账户挂在七禾网跑,观看地址在俱乐部发布供学员跟踪研究,最终交付无BUG源码给到俱乐部小伙伴。
二、亚努斯量化交易图表介绍
同义词亚努斯(古罗马神话人物)一般指雅努斯
Janus,雅努斯(Janus[1])是罗马人的门神,也是罗马人的保护神。具有前后两个面孔或四方四个面孔,象征开始。最古老的信息告诉人们,雅努斯是起源神,执掌着开始和入门,也执掌着出口和结束,同时他又被称为“门户总管”,他永远都象征着世界上矛盾的万事万物,所以,他的肖像被画成两张脸,有“双头雅努斯“的说法。
传说中,雅努斯有两副面孔:一副看着过去,一副看着未来。
亚努斯量化-交易图表的主旨是辅助交易者分析行情,把握买卖点,总览市场强弱变化。
日内全市场delta累计(加权)实时,总览市场多空力量变化趋势。
![](http://dingyue.ws.126.net/2024/0606/c793d6c0j00semx9g002cd000u000fum.jpg)
2.日内市场全景delta强弱排序(实时),实时监测最强最弱品种变化。
![](http://dingyue.ws.126.net/2024/0606/9c7681e7j00semx9g001ad000u000esm.jpg)
3.日内K线信号图表(实时)交易信号,辅助判断交易时点。
![](http://dingyue.ws.126.net/2024/0606/f7f1c451j00semx9h0065d000u000fvm.jpg)
4.多图同列-多周期-多品种及时把握多品种买卖点。
![](http://dingyue.ws.126.net/2024/0606/b2f401bbj00semx9h008cd000u000gfm.jpg)
目前亚努斯量化交易图表处于内测阶段,俱乐部内部试用。预计10月份正式上线,同时松鼠沙盘订单流图表将合并到亚努斯量化图表里。
![](http://dingyue.ws.126.net/2024/0606/6536c287j00semx9h0058d000u000fum.jpg)
![](http://dingyue.ws.126.net/2024/0606/1278fb1aj00semx9h004ad000u000dom.jpg)
感谢大家的支持,有问题随时联系小松鼠(viquant01)。
本策略仅作学习交流使用,实盘交易盈亏投资者个人负责。
热门跟贴