改进RSI突破策略带止损止盈

Author: ChaoZhang, Date: 2024-02-04 15:27:50
Tags:

改进RSI突破策略带止损止盈

概述

改进RSI突破策略是一种趋势跟踪策略,它使用相对强弱指数(RSI)指标来确定入场和退出的时间点。它在基本RSI策略的基础上增加了止损和止盈单来管理风险。

当RSI上穿70(超买水平)时,该策略做多。 当RSI下穿30(超卖水平)时,该策略做空。 这使其可以顺势而为,顺势而上,顺势而下。 然后使用止损和止盈单来锁定利润和限制损失。

工作原理

该策略的核心机制依赖于RSI指标穿过其超买水平(默认为70)或超卖水平(默认为30)来触发入场。

  • 当RSI上穿70时,表示资产超买,可能会反转,所以策略开仓做多。

  • 当RSI下穿30时,表示资产超卖,可能会反弹,所以策略开仓做空。

这使得该策略能够从RSI极端水平反转中获利。

关键的改进是增加了通过止损和止盈单来管理风险。

入场后,在入场价格上下设置一定百分比的止损和止盈单(默认为2%止损,10%止盈)。这使每笔交易都锁定了固定的风险回报比。

如果头寸走势有利,止盈限价单将在盈利情况下平仓。如果走势不利,止损单将小亏损出局。这可以最大化获利头寸的利润,并最小化亏损头寸的损失。

优势

  • 顺势而为,买入低点,卖出高点
  • 止盈大于止损,实现非对称的风险收益率
  • 止损最小化错误方向交易的损失
  • 概念简单易于理解和实施
  • 相比基本RSI策略,增加了风险管理优势

风险

  • 如果RSI水平多次上下交叉可能出现误差信号
  • 止损位置可以进一步优化
  • 止盈水平需要微调以获得更好的表现
  • 趋势性行情中表现最佳,区间震荡行情中表现较弱

优化方向

该策略可以进一步改进的一些思路:

  • 在入场前增加其他过滤器,如价格突破
  • 追踪止损以锁定更多的盈利
  • 拓展止盈目标以获得更大的收益潜力
  • 对每个市场优化 RSI 水平、止损百分比、止盈百分比
  • 根据ATR来设置止损幅度以适应市场波动率

总结

改进后RSI突破策略汇集了几个正面因素——使用RSI识别潜在转折点,根据势头判断方向,通过止盈大于止损实现非对称风险收益率,以及通过出场单来降低风险。

通过组合这些因素,其目的是在每笔交易中最大限度获得收益而最小化风险。适当优化头寸规模可以使其在不同市场环境中稳定运行。内置的风险控制系统使其比基本RSI策略更具优势。


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

// @version=4
// Improved RSI Simple Strategy
// Added Risk Management System: SL & TP
// © Bitduke
// All scripts: https://www.tradingview.com/u/Bitduke/#published-scripts

strategy("Simple RSI Buy/Sell at a level", shorttitle="Simple RSI Strategy (SL/TP)", overlay=false )
overbought = input(70, title="overbought value")
oversold = input(30, title="oversold value")

lenght = 14
rsi = rsi(close, lenght)
myrsi = rsi > overbought
myrsi2 = rsi < oversold

barcolor(myrsi ? color.black : na)
barcolor(myrsi2 ? color.blue : na)

// Risk Management Sysyem
convert_percent_to_points(percent) =>
    strategy.position_size != 0 ? round(percent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
    
setup_percent(percent) =>
    convert_percent_to_points(percent)

STOP_LOSS = 2
TAKE_PROFIT = 10

plot(rsi)
plot(overbought, color = color.red)
plot(oversold, color = color.green)

//STRATEGY
if (myrsi)
    strategy.entry("Long", strategy.long)
    
if (myrsi2)
    strategy.entry("Short", strategy.short)

strategy.exit("Exit", qty_percent = 100, profit = setup_percent(STOP_LOSS), loss = setup_percent(TAKE_PROFIT))



更多内容