牛市追涨杀跌策略


创建日期: 2023-11-02 16:21:21 最后修改: 2023-11-02 16:21:21
复制: 0 点击次数: 464
avatar of ChaoZhang ChaoZhang
1
关注
1239
关注者

牛市追涨杀跌策略

概述

牛市追涨杀跌策略旨在牛市阶段利用RSI指标捕捉回撤买入,并利用双均线确认趋势买入。当价格重新回到多头趋势时,利用均线确认信号平仓获利。

策略原理

该策略首先设置回测的起始日期和结束日期,然后设置RSI参数以及快慢均线参数。

策略信号发出的逻辑是:

  1. 当RSI小于设定的阈值(默认35)时,表示处于超卖区,发出买入信号;

  2. 同时,快均线要高于慢均线,表示目前处于多头趋势,避免在盘整时买入;

  3. 当价格高于快均线,且快均线高于中均线时,发出平仓信号。

以上合理应用RSI指标和双均线的交叉原理,在牛市中捕捉回调买入机会,并在价格重新回到趋势上时及时获利了结。

策略优势分析

  • 利用RSI指标有效识别超卖点位
  • 快慢均线判断大趋势,避免买入震荡市
  • 均线再次交叉判断回到趋势,及时获利

RSI指标非常适合捕捉反转点位。当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)