双重反转准入策略通过组合使用MACD和Stochastic RSI两个指标的反转信号,在趋势反转点位准确做多做空,属于反转类交易策略。
该策略由以下部分组成:
使用MACD指标的差离线突破0轴判断趋势反转。
使用Stochastic RSI指标判断是否超买超卖。Stochastic RSI指标结合RSI指标的超买超卖原理,当Stochastic RSI above 70为超买,below 30为超卖。
当差离线上穿0轴(代表着多头反转信号)和Stochastic RSI指标显示超卖时,产生买入信号;当差离线下穿0轴(代表着空头反转信号)和Stochastic RSI指标显示超买时,产生卖出信号。
该策略同时具有指标绘制和交易执行两个模式。在指标模式下,用三角形标记反转信号。在策略模式下,在反转信号出现时开仓做多做空。
通过组合MACD的反转信号和Stochastic RSI的超买超卖信号,能够提高做多做空的准确性,在趋势反转点位把握较好的入场时机。
双重反转准入策略通过MACD和Stochastic RSI两个指标的组合使用,进行了双重的过滤,确保在趋势反转之后才产生交易信号,从而提高了做多做空的准确性,降低了错误信号的概率。
该策略属于反转类策略,主要在趋势反转点位打开仓位。这种反转策略适合熊市中频繁上涨下跌的震荡行情,能够在每个小级别走势反转的时候获利。
双重反转准入策略不需要预先判断大趋势的方向,而是在本地反转的时候直接做单,简单易用,适合新手学习使用。
该策略可以通过一个开关灵活选择策略模式或指标模式,使用更灵活。指标模式可以用于观察分析,策略模式可以自动执行交易。
反转交易由于不考虑大趋势方向,在大上涨和大下跌行情中交易风险较大,连续反向开仓亏损的概率较高。需要组合趋势交易策略来降低风险。
由于该策略使用了两个指标和多个参数,参数组合优化难度较大,不适当的参数组合可能会导致交易频繁或信号不足。需要充分反复测试优化。
双重反转准入策略属于高频交易策略,需要高手续费、低点差的交易账户作为支持,否则交易费用可能会抵消大部分盈利。
可以尝试不同的参数组合,寻找最佳的MACD和Stochastic RSI参数,使交易信号更准确。例如可以优化MACD的快慢均线周期、Stochastic的lookback period等。
可以在策略中加入趋势指标,仅在趋势方向一致时才考虑反转信号,避免逆势交易。例如结合MA指标判断长期趋势。
可以设置移动止损或者百分比止损来控制单笔损失。也可以考虑反向加仓来优化资金使用效率。
除了反转信号,可以加强其他入场条件,例如交易量放大,突破某均线等,来减少入场误报率。
双重反转准入策略通过双指标组合判断本地反转点位开仓做单的思路新颖可靠,适合熊市频繁震荡的行情环境,也适合新手反复回测实践。但该策略有较高风险,需要充分测试优化参数,并辅以趋势判断和风险控制机制,才能在实盘中稳定获利。
/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('RB Reversal Tabs Strategy', overlay=true)
//Developer: Andrew Palladino
//Owner: Rob Booker
//Date Modified: 11/25/2018
//Updated to Pinescript V5 and transformed into a Strategy by: Powerscooter 11/25/2022
StrategyMode = input.bool(true,"Strategy Mode")
macd_fast_period = input(title='MACD Fast Period', defval=12)
macd_slow_period = input(title='MACD Slow Period', defval=26)
macd_signal_period = input(title='MACD Signal Period', defval=9)
stoch_period = input(title='Stochastic RSI Period', defval=70)
prc_k_period = input(title='%K Period', defval=30)
prc_d_period = input(title='%D Period', defval=30)
stoch_ob = input(title='Stochastic Overbought Level', defval=70)
stoch_os = input(title='Stochastic Oversold Level', defval=30)
[macd_line, signal_line, hist_line] = ta.macd(close, macd_fast_period, macd_slow_period, macd_signal_period)
fast_prc_k = 100 * (close - ta.lowest(low, stoch_period)) / (ta.highest(high, stoch_period) - ta.lowest(low, stoch_period))
fast_prc_d = ta.sma(fast_prc_k, prc_d_period)
slow_prc_k = ta.sma(fast_prc_k, prc_k_period)
slow_prc_d = ta.sma(slow_prc_k, prc_d_period)
full_prc_k = ta.sma(fast_prc_k, prc_k_period)
full_prc_d = ta.sma(full_prc_k, prc_d_period)
is_buy_reversal = ta.crossover(macd_line, 0) and full_prc_k < stoch_os
is_sell_reversal = ta.crossunder(macd_line, 0) and full_prc_k > stoch_ob
plotshape(is_buy_reversal and not StrategyMode, style=shape.triangleup, color=color.new(color.green, 0), size=size.small, location=location.belowbar)
plotshape(is_sell_reversal and not StrategyMode, style=shape.triangledown, color=color.new(color.red, 0), size=size.small, location=location.abovebar)
//Orders
if is_buy_reversal and StrategyMode
strategy.entry("Long",strategy.long)
if is_sell_reversal and StrategyMode
strategy.entry("Short",strategy.short)
//plot(full_prc_k, color=blue)
//plot(full_prc_d, color=red)
//plot(macd_line, color=blue)