RSI và chiến lược chênh lệch tăng RSI trơn tru

Tác giả:ChaoZhang, Ngày: 2024-03-01 12:11:58
Tags:

img

Tổng quan

Chiến lược này kết hợp chỉ số RSI và chỉ số RSI trơn để tìm cơ hội mua ở đáy giá. Khi RSI đạt mức thấp mới trong khi giá không đạt mức thấp mới, nó được coi là tín hiệu chênh lệch tăng.

Chiến lược logic

  1. Tính toán chỉ số RSI với 14 giai đoạn.
  2. Tính toán RSI trơn bằng cách sử dụng WMA đôi để đạt được hiệu ứng trơn.
  3. Kiểm tra xem chỉ số RSI dưới mức 30, tình trạng bán quá mức.
  4. Kiểm tra xem chỉ số RSI được làm mịn có dưới 35, với xu hướng hướng mạnh hơn không.
  5. Kiểm tra xem điểm thấp nhất của chỉ số RSI có dưới 25 không.
  6. Tính toán chênh lệch tăng RSI, tìm RSI làm cho thấp mới trong khi giá không.
  7. Yêu cầu RSI trơn tru xu hướng giảm kéo dài hơn 3 giai đoạn.
  8. Trigger tín hiệu mua khi tất cả các điều kiện trên được đáp ứng.
  9. Thiết lập các điều kiện dừng lỗ và lấy lợi nhuận.

Chiến lược chủ yếu dựa trên đặc điểm đảo ngược RSI, kết hợp với phán đoán xu hướng RSI trơn tru, để mua khi giá bị áp lực trong khi RSI bị bán quá mức.

Phân tích lợi thế

  1. Sự kết hợp của hai chỉ số RSI cải thiện hiệu suất chiến lược.
  2. Sử dụng tính năng đảo ngược RSI, có một cạnh xác suất.
  3. Phân tích xu hướng RSI giúp tránh đảo ngược sai.
  4. Hoàn toàn dừng lỗ và lấy lợi nhuận logic có thể hạn chế rủi ro.

Phân tích rủi ro

  1. Khả năng thất bại của RSI không thể tránh hoàn toàn.
  2. RSI trơn tru có hiệu ứng chậm trễ, có thể bỏ lỡ thời điểm vào tốt nhất.
  3. Đặt dừng lỗ quá lỏng lẻo, nguy cơ mở rộng lỗ.

Có thể tối ưu hóa thời gian nhập bằng cách điều chỉnh các thông số RSI. Tắt khoảng cách dừng lỗ để dừng nhanh hơn. Kết hợp với các chỉ số khác để đánh giá rủi ro xu hướng, giảm tỷ lệ đảo ngược sai.

Hướng dẫn tối ưu hóa

  1. Kiểm tra hiệu quả của RSI dưới các bộ tham số khác nhau.
  2. Cải thiện tính toán RSI trơn để cải thiện chất lượng trơn.
  3. Điều chỉnh điểm dừng lỗ và lấy lợi nhuận, tìm tỷ lệ rủi ro-lợi nhuận tối ưu.
  4. Thêm các chỉ số động lực vv để tránh các tình huống động lực thấp.

Cải thiện hơn nữa hiệu suất chiến lược bằng cách điều chỉnh tham số và kết hợp nhiều chỉ số hơn.

Kết luận

Chiến lược này sử dụng đặc điểm đảo ngược RSI nói chung. Sự kết hợp RSI kép tận dụng đầy đủ hiệu ứng đảo ngược trong khi cũng giới thiệu sự không chắc chắn từ sự khác biệt của chỉ số. Đây là một ý tưởng chiến lược chỉ số điển hình. Có thể cải thiện khả năng thích nghi của chỉ số thông qua thử nghiệm và tối ưu hóa không ngừng. Cũng kết hợp nhiều chỉ số hơn để giảm đánh giá sai và tăng độ bền.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BigBitsIO

//@version=4
strategy(title="RSI and Smoothed RSI Bull Div Strategy [BigBitsIO]", shorttitle="RSI and Smoothed RSI Bull Div Strategy [BigBitsIO]", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=.1, slippage=0)


TakeProfitPercent = input(3, title="Take Profit %", type=input.float, step=.25)
StopLossPercent = input(1.75, title="Stop Loss %", type=input.float, step=.25)

RSICurve = input(14, title="RSI Lookback Period", type=input.integer, step=1)
BuyBelowTargetPercent = input(0, title="Buy Below Lowest Low In RSI Divergence Lookback Target %", type=input.float, step=.05)
BuyBelowTargetSource = input(close, title="Source of Buy Below Target Price", type=input.source)
SRSICurve = input(10, title="Smoothed RSI Lookback Period", type=input.integer, step=1)
RSICurrentlyBelow = input(30, title="RSI Currently Below", type=input.integer, step=1)
RSIDivergenceLookback = input(25, title="RSI Divergence Lookback Period", type=input.integer, step=1)
RSILowestInDivergenceLookbackCurrentlyBelow  = input(25, title="RSI Lowest In Divergence Lookback Currently Below", type=input.integer, step=1)
RSISellAbove = input(65, title="RSI Sell Above", type=input.integer, step=1)
MinimumSRSIDownTrend = input(3, title="Minimum SRSI Downtrend Length", type=input.integer, step=1)
SRSICurrentlyBelow = input(35, title="Smoothed RSI Currently Below", type=input.integer, step=1)

PlotTarget = input(false, title="Plot Target")


RSI = rsi(close, RSICurve)
SRSI = wma(2*wma(RSI, SRSICurve/2)-wma(RSI, SRSICurve), round(sqrt(SRSICurve))) // Hull moving average

SRSITrendDownLength = 0
if (SRSI < SRSI[1])
    SRSITrendDownLength := SRSITrendDownLength[1] + 1

// Strategy Specific
ProfitTarget = (close * (TakeProfitPercent / 100)) / syminfo.mintick
LossTarget = (close * (StopLossPercent / 100)) / syminfo.mintick
BuyBelowTarget = BuyBelowTargetSource[(lowestbars(RSI, RSIDivergenceLookback)*-1)] - (BuyBelowTargetSource[(lowestbars(RSI, RSIDivergenceLookback)*-1)] * (BuyBelowTargetPercent / 100))

plot(PlotTarget ? BuyBelowTarget : na)



bool IsABuy = RSI < RSICurrentlyBelow and SRSI < SRSICurrentlyBelow and lowest(SRSI, RSIDivergenceLookback) < RSILowestInDivergenceLookbackCurrentlyBelow and BuyBelowTargetSource < BuyBelowTarget and SRSITrendDownLength >= MinimumSRSIDownTrend and RSI > lowest(RSI, RSIDivergenceLookback)
bool IsASell = RSI > RSISellAbove

if IsABuy
    strategy.entry("Positive Trend", true) // buy by market
    strategy.exit("Take Profit or Stop Loss", "Positive Trend", profit = ProfitTarget, loss = LossTarget)
if IsASell
    strategy.close("Positive Trend")


Thêm nữa