关键反转信号回测策略

Author: ChaoZhang, Date: 2024-01-26 16:11:28
Tags:

关键反转信号回测策略

概述

关键反转信号回测策略通过识别股票价格的关键反转信号,判断当前趋势是否反转,以捕捉趋势反转后的价格运行方向。该策略基于“关键反转日”的理论,在发现关键反转信号时做多做空,通过配置止盈止损来锁定利润。

策略原理

关键反转信号回测策略的核心逻辑是识别关键反转日。根据股票的价格走势,我们可以判断目前的趋势方向。当出现关键反转信号时,说明趋势可能发生反转。

具体来说,对于股票上涨趋势,如果当天的最低价创新低,但收盘价接近前一日的最低价,那么这一天就是关键反转日。这意味着多头力量正在减弱,承压能力下降,说明上涨趋势可能反转为下跌。策略会在关键反转日开仓做空。

相反,对于股票下跌趋势,如果当天创新低,但收盘价接近前一日的最高价。那么这也是一个关键反转日,说明空头力量减弱,下跌趋势可能反转为上涨。策略会在关键反转日开仓做多。

通过判断关键反转日并追踪后续行情,策略能捕捉到价格反转后的运行。

优势分析

关键反转信号回测策略的主要优势有:

  1. 捕捉趋势反转,盈利空间大。关键反转信号往往预示着趋势变化方向,通过判断反转信号并跟踪后续运行,能够获得比较大的盈利空间。

  2. 规则清晰,容易回测验证。关键反转日的判断规则非常清晰,价格创新高或新低的同时,与前一日收盘价构成反转形态。这使得策略容易回测,也能减少误判。

  3. 灵活调整,易于优化。止盈止损点位的设置非常灵活,可以按照市场情况和个人风险偏好进行调整,对策略进行优化,降低亏损风险。

风险分析

关键反转信号回测策略也存在一些风险:

  1. 反转信号误判风险。股票价格常有短期调整,并不是所有的关键反转信号都预示着趋势反转,可能带来误判。通过优化参数,调整止盈止损条件可以降低误判概率。

  2. 反转不成或反转后继续反转的风险。即使判断准确,价格反转后也可能再次调头反转或者原趋势继续运行。这时就面临亏损风险。通过及时止损来控制亏损。

  3. 回测偏差。任何规则和信号在实盘中表现都可能与回测结果存在偏差,无法完全重现回测获利情况。

优化方向

关键反转信号回测策略主要可优化的方向:

  1. 优化止盈止损的设置。可以基于更多的历史数据来计算合适的止盈止损点位。

  2. 增加过滤条件,结合其他技术指标过滤误判。例如可以结合成交量来确认反转信号,避免被套利操作误导。

  3. 优化反转后的跟踪策略。反转后价格运行也有一定规律可循,设定后续跟踪策略,进一步扩大收益。

  4. 结合机器学习模型判断信号质量。训练模型评估每一个关键反转信号的可靠性,避免追踪质量较差的信号。

总结

关键反转信号策略通过判断关键反转日,捕捉价格趋势反转机会。策略规则简单清晰,容易实现。反转后趋势持续运行空间大,但是也存在一定的误判风险。通过不断优化参数和过滤条件,降低误判概率,能够获得较为可靠的效果。


/*backtest
start: 2024-01-18 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 21/01/2020
//
// A key reversal is a one-day trading pattern that may signal the reversal of a trend. 
// Other frequently-used names for key reversal include "one-day reversal" and "reversal day."
// How Does a Key Reversal Work?
// Depending on which way the stock is trending, a key reversal day occurs when:
// In an uptrend -- prices hit a new high and then close near the previous day's lows.
// In a downtrend -- prices hit a new low, but close near the previous day's highs
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Key Reversal Up Backtest", shorttitle="KRU Backtest", overlay = true) 
nLength = input(1, minval=1, title="Enter the number of bars over which to look for a new low in prices.")
input_takeprofit = input(20, title="Take Profit pip", step=0.01)
input_stoploss = input(10, title="Stop Loss pip", step=0.01)
xLL = lowest(low[1], nLength)
C1 = iff(low < xLL and close > close[1], true, false)
plotshape(C1, style=shape.triangleup, size = size.small, color=color.green, location = location.belowbar )
posprice = 0.0
pos = 0
barcolor(nz(pos[1], 0) == -1 ? color.red: nz(pos[1], 0) == 1 ? color.green : color.blue ) 
posprice := iff(C1== true, close, nz(posprice[1], 0)) 
pos := iff(posprice > 0, 1, 0)
if (pos == 0) 
    strategy.close_all()
if (pos == 1)
    strategy.entry("Long", strategy.long)
posprice := iff(low <= posprice - input_stoploss and posprice > 0, 0 ,  nz(posprice, 0))
posprice := iff(high >= posprice + input_takeprofit and posprice > 0, 0 ,  nz(posprice, 0))

更多内容