牛市追涨杀跌策略旨在牛市阶段利用RSI指标捕捉回撤买入,并利用双均线确认趋势买入。当价格重新回到多头趋势时,利用均线确认信号平仓获利。
该策略首先设置回测的起始日期和结束日期,然后设置RSI参数以及快慢均线参数。
策略信号发出的逻辑是:
当RSI小于设定的阈值(默认35)时,表示处于超卖区,发出买入信号;
同时,快均线要高于慢均线,表示目前处于多头趋势,避免在盘整时买入;
当价格高于快均线,且快均线高于中均线时,发出平仓信号。
以上合理应用RSI指标和双均线的交叉原理,在牛市中捕捉回调买入机会,并在价格重新回到趋势上时及时获利了结。
RSI指标非常适合捕捉反转点位。当RSI进入超卖区时买入,可以有效锁定超卖区买入时机。同时结合均线判断趋势,可以过滤震荡行情,避免在盘整时重复买入。最后利用均线交叉再次确认趋势,及时止盈,避免给回撤带来损失。
RSI参数如果设定过大或过小,将失去准确判断超卖区的效果。如果均线参数选择不当,快线过快或慢线过慢也会判断错误的趋势。止盈平仓的时机如果选择不当,过早平仓无法获利充分,过晚平仓又容易损失利润。
可以通过调整RSI参数,选取合适的均线周期,并测试不同的止盈方式来优化止盈效果。
可以通过测试不同参数的RSI周期来优化超卖区判断。调整均线周期组合找到判断趋势的最佳参数。此外可以测试移动止盈、阻力止盈等其他止盈方式。优化仓位管理可以更好控制风险。最后考虑交易费用的影响可以使策略更加贴近实盘。
牛市追涨杀跌策略整体思路清晰合理,综合运用RSI和均线原理,在趋势行情中有效把握买入时机和止盈时机。通过参数优化、止盈方式测试以及优化仓位管理可以进一步增强策略稳定性和实盘表现。该策略思路简单实用,适用于捕捉牛市阶段的回调机会,可以为投资组合带来较好收益。
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(shorttitle='Buy The Dips in Bull Market',title='Buy The Dips in Bull Market (by Coinrule)', overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)
//Backtest dates
fromMonth = input(defval = 1, title = "From Month")
fromDay = input(defval = 10, title = "From Day")
fromYear = input(defval = 2020, title = "From Year")
thruMonth = input(defval = 1, title = "Thru Month")
thruDay = input(defval = 1, title = "Thru Day")
thruYear = input(defval = 2112, title = "Thru Year")
showDate = input(defval = true, title = "Show Date Range")
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// RSI inputs and calculations
lengthRSI = input(14, title = 'RSI period', minval=1)
RSI = rsi(close, lengthRSI)
//MA inputs and calculations
inSignal=input(9, title='MAfast')
inlong1=input(50, title='MAslow')
inlong2=input(200, title='MAslow')
MAfast= sma(close, inSignal)
MAslow= sma(close, inlong1)
MAlong= sma(close, inlong2)
RSI_buy_signal= input(35, title='RSI Buy Signal')
//Entry
strategy.entry(id="long", long = true, when = RSI < RSI_buy_signal and MAlong < MAslow and window())
//Exit
strategy.close("long", when = close > MAfast and MAfast > MAslow and window())
plot(MAslow, color=color.orange, linewidth=1)
plot(MAfast, color=color.purple, linewidth=1)
plot(MAlong, color=color.blue, linewidth=2)