Khảo thuật RSI Range Breakout Strategy

Tác giả:ChaoZhang, Ngày: 2023-10-17 17:14:09
Tags:

img

Tổng quan

Chiến lược này theo dõi sự đột phá của chỉ số RSI trong các phạm vi khác nhau để thực hiện mua thấp và bán cao. Nó đi dài khi RSI ở trong phạm vi thấp và đi ngắn khi RSI ở trong phạm vi cao, do đó đảo ngược vị trí khi các điều kiện mua quá mức hoặc bán quá mức xuất hiện.

Chiến lược logic

  1. Đặt thời gian RSI là 14

  2. Đặt phạm vi tín hiệu mua RSI:

    • Phạm vi 1: RSI <= 27
    • Phạm vi 2: RSI <= 18
  3. Đặt phạm vi tín hiệu bán RSI:

    • Dải 1: RSI >= 68
    • Phạm vi 2: RSI >= 80
  4. Khi RSI vào phạm vi mua, mua dài:

    • Nếu RSI đi vào phạm vi 1 (dưới 27), mua dài 1 lot
    • Nếu RSI đi vào phạm vi 2 (dưới 18), đi thêm dài 1 lô
  5. Khi RSI bước vào bán phạm vi, đi ngắn:

    • Nếu RSI đi vào phạm vi 1 (trên 68), mua ngắn 1 lot
    • Nếu RSI bước vào phạm vi 2 (cao hơn 80), tiếp tục mua ngắn 1 lô
  6. Đặt cố định lấy lợi nhuận đến 2500 pips và dừng lỗ đến 5000 pips

  7. Khóa vị trí khi RSI thoát khỏi phạm vi tín hiệu

Phân tích lợi thế

  1. Cài đặt phạm vi hai giúp xác định tốt hơn các điều kiện mua quá mức và bán quá mức, tránh bỏ lỡ cơ hội đảo ngược

  2. Việc áp dụng lợi nhuận cố định và dừng lỗ trong pips ngăn chặn theo đuổi xu hướng quá nhiều

  3. RSI là một dao động trưởng thành trong việc xác định mức mua quá mức và bán quá mức với lợi thế so với các chỉ số khác

  4. Với điều chỉnh tham số thích hợp, chiến lược này có thể bắt hiệu quả các điểm đảo ngược xu hướng và tạo ra lợi nhuận dư thừa

Phân tích rủi ro

  1. Sự khác biệt RSI có thể xảy ra dẫn đến tổn thất liên tiếp từ vị trí ngắn bền vững

  2. Lợi nhuận cố định và dừng lỗ có thể không phù hợp với biến động thị trường, không thể kiếm lợi nhuận hoặc dừng sớm

  3. Việc thiết lập phạm vi không chính xác có thể dẫn đến việc bỏ lỡ giao dịch hoặc giao dịch thường xuyên không có lợi nhuận

  4. Chiến lược này phụ thuộc nhiều vào tối ưu hóa tham số dựa trên backtests.

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

  1. Hiệu quả thử nghiệm của RSI với thời gian dài khác nhau

  2. Tối ưu hóa giá trị bán và mua để phù hợp với các đặc điểm của các sản phẩm khác nhau

  3. Nghiên cứu năng động lấy lợi nhuận và dừng lỗ để cải thiện lợi nhuận và hợp lý

  4. Xem xét kết hợp các chỉ số khác cho giao dịch tập thể để cải thiện độ vững chắc

  5. Khám phá các kỹ thuật học máy để tự động tối ưu hóa phạm vi tham số cho độ bền

Kết luận

Chiến lược này dựa trên các nguyên tắc mua quá nhiều và bán quá nhiều của RSI. Bằng cách áp dụng phạm vi giao dịch kép, nó sử dụng chỉ số RSI hiệu quả, nắm bắt những điều cực đoan của thị trường với sự ổn định tốt. Tuy nhiên, nó có một số độ phụ thuộc tham số và cần tối ưu hóa trên các sản phẩm. Nếu điều chỉnh đúng cách, chiến lược này có thể mang lại lợi nhuận dư thừa tốt. Tóm lại, đây là một chiến lược giao dịch đơn giản nhưng hiệu quả sử dụng chỉ số trưởng thành, đáng nghiên cứu để cải thiện và cung cấp thông tin chi tiết cho giao dịch định lượng.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
basePeriod: 15m
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/
// © Rawadabdo

// Ramy's Algorithm

//@version=5
strategy("BTC/USD - RSI", overlay=false, initial_capital = 5000)

// User input
length = input(title = "Length", defval=14, tooltip="RSI period")

first_buy_level = input(title = "Buy Level 1", defval=27, tooltip="Level where 1st buy triggers")
second_buy_level = input(title = "Buy Level 2", defval=18, tooltip="Level where 2nd buy triggers")

first_sell_level = input(title = "Sell Level 1", defval=68, tooltip="Level where 1st sell triggers")
second_sell_level = input(title = "Sell Level 2", defval=80, tooltip="Level where 2nd sell triggers")

takeProfit= input(title="target Pips", defval=2500, tooltip="Fixed pip stop loss distance")
stopLoss = input(title="Stop Pips", defval=5000, tooltip="Fixed pip stop loss distance")

lot = input(title = "Lot Size", defval = 1, tooltip="Trading Lot size")

// Get RSI
vrsi = ta.rsi(close, length)

// Entry Conditions
long1 = (vrsi <= first_buy_level and vrsi>second_buy_level)
long2 = (vrsi <= second_buy_level)

short1= (vrsi >= first_sell_level and vrsi<second_sell_level)
short2= (vrsi >= second_sell_level)


// Entry Orders
// Buy Orders
if (long1 and strategy.position_size == 0)
    strategy.entry("Long", strategy.long, qty=lot, comment="Buy")
    if (long2 and  strategy.position_size == 0)
        strategy.entry("Long", strategy.long, qty=lot, comment="Buy")

// Short Orders
if (short1 and strategy.position_size == 0)
    strategy.entry("Short", strategy.short,qty=lot, comment="Sell")
    if (short2 and strategy.position_size == 0)
        strategy.entry("Short", strategy.short,qty=lot, comment="Sell")
    
// Exit our trade if our stop loss or take profit is hit
strategy.exit(id="Long Exit", from_entry="Long",qty = lot, profit=takeProfit, loss=stopLoss)
strategy.exit(id="Short Exit", from_entry="Short", qty = lot, profit=takeProfit, loss=stopLoss)

// plot data to the chart
hline(first_sell_level, "Overbought Zone", color=color.red, linestyle=hline.style_dashed, linewidth = 2)
hline(second_sell_level, "Overbought Zone", color=color.green, linestyle=hline.style_dashed, linewidth = 2)
hline(first_buy_level, "Oversold Zone", color=color.red, linestyle=hline.style_dashed, linewidth = 2)
hline(second_buy_level, "Oversold Zone", color=color.green, linestyle=hline.style_dashed, linewidth = 2)
plot (vrsi, title = "RSI", color = color.blue, linewidth=2)





Thêm nữa