量化策略开发,高质量社群,交易思路分享等相关内容
『正文』
ˇ
目录
一、基于订单流的日内盘口策略
二、亚努斯量化交易图表介绍
一、基于订单流的日内盘口策略
大家好,我是乌克兰剑圣。
在7月份的时候我们发布了第一版盘口策略专享策略06 | 盘口策略CTP实盘版,这个策略写了订单流的核心算法及最基础的交易规则,加入了固定与移动的止损止盈。
今日发布的日内版本在前版基础之上加入了夜盘白盘的收盘清仓、修改了开仓条件,跟踪止损改为跟踪止盈、定时启动程序。同时提供了回测,模拟,实盘三个版本源码。
OK,下面我们来说说修改的部分。
收盘清仓
def 收盘清仓(data):# 获取当前时间current_time = datetime.now().time()# 设置清仓操作的时间范围1:14:55到15:00clearing_time1_start = s_time(14, 55)clearing_time1_end = s_time(15, 0)# 设置清仓操作的时间范围2:22:55到23:00clearing_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=0print("多头清仓操作")passelif self.pos<0:#平空self.insert_order(data['ExchangeID'], data['InstrumentID'], data['AskPrice1'],1,b'0',b'3')self.pos=0print("空头清仓操作")passclearing_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=0print("多头清仓操作")passelif self.pos<0:#平空self.insert_order(data['ExchangeID'], data['InstrumentID'], data['AskPrice1'],1,b'0',b'3')self.pos=0print("空头清仓操作")passclearing_executed = True # 设置标志变量为已执行# 如果不在任何清仓操作的时间范围内,可以执行其他操作或不执行任何操作else:clearing_executed = Falsepass#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=1self.long_trailing_stop_price=data['AskPrice1']self.sl_long_price=data['AskPrice1']#空头开仓条件省略
开平仓条件:
-
满足堆积条件后,需要日内均线判断顺势开仓,同时信号BAR必须是同向(多头堆积必须是阳线)。
-
仅满足堆积条件同时持有反向的持仓,执行反手平仓。
-
将跟踪出场改为跟踪止盈,只有盈利的情况下触发。
定时启动程序
为了保证策略每日变量重置,我们写了一个辅助脚本来全天后自动运行。
回测报告
回测报告分为隔夜和日内两个模式:
测试参数:
-
2023年1月1日-6月1日,6个月内(TICK数据合成1M)。
-
手续费均为实盘费率。
-
没有优化参数。
尿素(隔夜):
尿素(日内):
白糖(隔夜):
白糖(日内):
纯碱(隔夜):
纯碱(日内):
菜粕(隔夜):
菜粕(日内):
螺纹(隔夜):
螺纹(日内):
花生(隔夜):
花生(日内):
篇幅有限,还有更多的品种小伙伴们下载后自己回测研究吧。隔夜的代码版本是前版,日内的代码就是今天发布的这版,回测用的行情数据在俱乐部后台下载。
PS:9月12日起,松鼠将实盘测试7天订单流日内策略代码,用一个小账户挂在七禾网跑,观看地址在俱乐部发布供学员跟踪研究,最终交付无BUG源码给到俱乐部小伙伴。
二、亚努斯量化交易图表介绍
同义词 亚努斯(古罗马神话人物)一般指雅努斯
Janus,雅努斯(Janus [1] )是罗马人的门神,也是罗马人的保护神。具有前后两个面孔或四方四个面孔,象征开始。最古老的信息告诉人们,雅努斯是起源神,执掌着开始和入门,也执掌着出口和结束,同时他又被称为“门户总管”,他永远都象征着世界上矛盾的万事万物,所以,他的肖像被画成两张脸,有“双头雅努斯“的说法。
传说中,雅努斯有两副面孔:一副看着过去,一副看着未来。
亚努斯量化-交易图表的主旨是辅助交易者分析行情,把握买卖点,总览市场强弱变化。
1、日内全市场delta累计(加权)实时,总览市场多空力量变化趋势。
2、日内市场全景delta强弱排序(实时),实时监测最强最弱品种变化。
3、日内K线信号图表(实时)交易信号,辅助判断交易时点。
4、多图同列-多周期-多品种及时把握多品种买卖点。
目前亚努斯量化交易图表处于内测阶段,俱乐部内部试用。预计10月份正式上线,同时松鼠沙盘订单流图表将合并到亚努斯量化图表里。
本策略仅作学习交流使用,实盘交易盈亏投资者个人负责。