9.6 KiB
Name
双机会反转量化策略Dual-confirmation-Reversal-Trading-Strategy
Author
ChaoZhang
Strategy Description
概述
双机会反转量化策略是一种综合运用123反转和Stochastic RSI两种策略思路的组合策略。该策略首先判断价格是否出现了123反转形态,然后结合Stochastic RSI指标再次确认反转信号,只有当两者同时发出信号时,才会开仓做多或做空。这种双重确认机制可以有效过滤误报信号,提高策略的稳定性。
策略原理
该策略由两部分组成:
- 123反转
该部分运用123形态来判断价格反转。具体逻辑是:
-
如果收盘价低于昨日收盘价,且当前收盘价高于昨日收盘价,同时9日Slow Stochastic低于50,则做多
-
如果收盘价高于昨日收盘价,且当前收盘价低于昨日收盘价,同时9日Fast Stochastic高于50,则做空
这样可以发现价格反转的早期信号。
- Stochastic RSI
该部分使用Stochastic指标对RSI进行再次分析,判断反转确认:
-
计算RSI的值,长度为14
-
对RSI应用Stochastic分析,长度14,获得K值
-
计算K值的3日SMA D值
-
如果K值超过80则看多,K值低于20则看空
只有当两部分策略同时发出信号时,才会开仓。
优势分析
该策略最大的优势是采用了双重确认的思路,可以有效过滤误报信号,提高稳定性。具体优势如下:
-
123反转可以较早判断价格反转趋势
-
Stochastic RSI提供反转确认,避免错过反转点
-
两者结合可以提高胜率,降低误报概率
-
采用参数组合优化,可以针对不同市场调整参数
-
程序化实现简单清晰,易于实盘应用
风险分析
该策略也存在一些风险需要注意:
-
反转失败风险。市场可能出现假反转,导致亏损。
-
参数优化风险。不合适的参数组合可能导致策略效果不佳。
-
过优化风险。针对历史数据过度优化参数,而未来效果无法复制。
-
交易频率过高风险。双重信号可能增加交易频率,导致滑点成本升高。
-
代码实现风险。代码存在错漏可能导致实盘效果异常。
对应解决方法:
-
适当调整仓位规模,控制单笔亏损。
-
采用walk-forward方法进行参数优化。
-
注重参数稳定性,不追求过高收益。
-
适当调整开仓条件,降低交易频率。
-
仔细测试代码,确保逻辑正确。
优化方向
该策略可以从以下方面进行优化:
-
优化参数。可以调整Stochastic等参数,针对具体市场进行优化。
-
优化开仓条件。可以增加其他因子判断,避免冲动反转。
-
优化止损机制。可以设定移动止损、时间止损等方式。
-
降低交易频率。可增加交易过滤条件,降低交易频率。
-
增加仓位管理。根据市场情况调整仓位大小。
-
考虑手续费因素。根据实际手续费调整策略参数。
总结
双机会反转量化策略总体来说是一个稳定、实用的短线反转策略。它同时兼具捕捉反转的灵敏度以及双重过滤的稳定性。通过参数优化和适当修改,该策略可以成为量化策略体系中的一个有效组成部分。但我们也要注意防范过优化和误报风险,保持参数稳定性,在实盘中审慎验证。
||
Overview
The dual-confirmation reversal trading strategy combines the 123 reversal pattern with the Stochastic RSI indicator to create a robust mean-reversion system. It provides two layers of confirmation before entering a trade, improving the strategy's accuracy and stability.
Strategy Logic
The strategy consists of two components:
- 123 Reversal
It uses the 123 pattern to identify potential reversals. The logic is:
-
Long if close < previous close and current close > previous close and 9-day Slow Stochastic < 50
-
Short if close > previous close and current close < previous close and 9-day Fast Stochastic > 50
This provides an early signal for price reversals.
- Stochastic RSI
It applies Stochastic indicator on RSI for additional confirmation:
-
Compute RSI with length 14
-
Calculate Stochastic of RSI, with lengths 14, to get K
-
Take 3-day SMA of K to get D
-
If K crosses above 80, it indicates long. If K crosses below 20, it indicates short.
A trade is triggered only when both parts agree.
Advantage Analysis
The key advantage of this strategy is the double confirmation, which improves accuracy and reduces whipsaws. Specific benefits include:
-
123 reversal provides early detection of trend reversal
-
Stochastic RSI confirms the reversal signal
-
Combination improves win rate and reduces false signals
-
Parameters can be optimized for different markets
-
Simple and clean implementation for live trading
Risk Analysis
Some risks to consider for this strategy:
-
Failed reversal risk. False reversals may cause losses.
-
Parameter optimization risk. Bad parameters lead to poor performance.
-
Overfitting risk. Excessive optimization to historical data.
-
High trading frequency risk. More signals may increase costs.
-
Coding error risk. Bugs in implementation logic.
Possible solutions:
-
Use prudent position sizing to limit losses.
-
Employ walk-forward optimization methods.
-
Focus on parameter stability, not high returns.
-
Tune conditions to reduce trade frequency.
-
Thoroughly test code logic.
Enhancement Opportunities
The strategy can be improved in the following areas:
-
Parameter tuning for specific markets.
-
Adding filters to avoid hasty reversals.
-
Incorporating stop loss mechanisms.
-
Reducing trade frequency with additional filters.
-
Implementing dynamic position sizing.
-
Adjusting for transaction costs.
Conclusion
The dual-confirmation reversal strategy is a stable and practical system for short-term mean-reversion. It balances the sensitivity to catch reversals and the accuracy from dual confirmation. With proper optimization and modifications, it can effectively complement a quantitative strategy portfolio. But parameters should be robust and risks like overfitting and whipsaws should be managed prudently in live trading.
[/trans]
Strategy Arguments
| Argument | Default | Description |
|---|---|---|
| v_input_1 | true | ---- 123 Reversal ---- |
| v_input_2 | 14 | Length |
| v_input_3 | true | KSmoothing |
| v_input_4 | 3 | DLength |
| v_input_5 | 50 | Level |
| v_input_6 | true | ---- Stochastic RSI ---- |
| v_input_7 | 80 | TopBand |
| v_input_8 | 20 | LowBand |
| v_input_9 | 14 | lengthRSI |
| v_input_10 | 14 | lengthStoch |
| v_input_11 | 3 | smoothK |
| v_input_12 | 3 | smoothD |
| v_input_13 | false | Trade reverse |
Source (PineScript)
/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 03/08/2021
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This strategy used to calculate the Stochastic RSI
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
SRSI(lengthRSI,lengthStoch,smoothK,smoothD, TopBand,LowBand) =>
pos = 0.0
Source = close
rsi1 = rsi(Source, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
d_cross_80 = cross(d,TopBand)
pos := iff(k > TopBand, 1,
iff(k < LowBand, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Stochastic RSI", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Stochastic RSI ----")
TopBand = input(80, step=0.01)
LowBand = input(20, step=0.01)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSRSI = SRSI(lengthRSI,lengthStoch,smoothK,smoothD, TopBand,LowBand)
pos = iff(posReversal123 == 1 and posSRSI == 1 , 1,
iff(posReversal123 == -1 and posSRSI == -1, -1, 0))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1 , 1, pos))
if (possig == 1 )
strategy.entry("Long", strategy.long)
if (possig == -1 )
strategy.entry("Short", strategy.short)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )
Detail
https://www.fmz.com/strategy/432092
Last Modified
2023-11-14 13:42:47
