Tài nguyên đang được tải lên... tải...

Dual Timeframe Supertrend với hệ thống tối ưu hóa RSI

Tác giả:ChaoZhang, Ngày: 2024-11-25 17:27:21
Tags:RSIATR

img

Tổng quan

Chiến lược này là một hệ thống giao dịch khung thời gian kép dựa trên chỉ số SuperTrend và RSI. Nó kết hợp các chỉ số phân tích kỹ thuật từ các khung thời gian 120 phút và 15 phút, sử dụng SuperTrend để nắm bắt hướng xu hướng trung hạn trong khi sử dụng RSI để kiếm lợi nhuận. Chiến lược thực hiện định kích thước vị trí thông qua phân bổ tỷ lệ phần trăm và bao gồm các điều kiện lấy lợi nhuận dựa trên tỷ lệ phần trăm.

Nguyên tắc chiến lược

Logic cốt lõi được xây dựng trên một số yếu tố chính:

  1. Sử dụng chỉ số SuperTrend khung thời gian 120 phút như là công cụ xác định xu hướng chính, với thời gian ATR là 14 và yếu tố là 3,42
  2. Tạo tín hiệu giao dịch thông qua giá chéo với đường SuperTrend - chéo lên cho các mục dài và chéo xuống cho các mục ngắn
  3. Sử dụng chỉ số RSI khung thời gian 15 phút với thời gian 5 như một công cụ bổ sung cho các điều kiện mua quá mức / bán quá mức trên thị trường
  4. Khóa các vị trí dài khi RSI đạt đến vùng mua quá mức (95) và các vị trí ngắn ở vùng bán quá mức (5)
  5. Đặt mức lợi nhuận 30% tính theo giá trung bình đầu vào

Ưu điểm chiến lược

  1. Sự kết hợp nhiều khung thời gian cải thiện độ tin cậy tín hiệu và giảm tín hiệu sai
  2. Các thông số SuperTrend tối ưu hóa cân bằng độ nhạy cảm xu hướng trong khi tránh giao dịch quá mức
  3. Các giá trị cực đoan RSI nghiêm ngặt (5 và 95) đảm bảo đóng cửa vị trí chỉ trong điều kiện cực đoan
  4. Định kích thước vị trí sử dụng tỷ lệ phần trăm cố định của vốn chủ sở hữu (35%), kiểm soát rủi ro hiệu quả trong khi duy trì tiềm năng lợi nhuận
  5. Tự động đóng các vị trí ngược trước khi mở các vị trí mới, tránh tiếp xúc đồng thời dài và ngắn

Rủi ro chiến lược

  1. Cách tiếp cận hai khung thời gian có thể tạo ra sự chậm trễ trong các thị trường khác nhau, đòi hỏi quản lý rút vốn
  2. Các giá trị cực đoan RSI nghiêm ngặt có thể gây ra cơ hội thu lợi nhuận bị bỏ lỡ
  3. Mức lợi nhuận 30% là mạnh mẽ, có khả năng dẫn đến việc thoát sớm trong các thị trường biến động
  4. Thiếu các điều kiện dừng lỗ có thể dẫn đến tổn thất đáng kể trong các sự đảo ngược xu hướng đột ngột
  5. 35% định giá vị trí tương đối mạnh mẽ, tạo ra rủi ro cao trong thời điểm biến động cực kỳ

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

  1. Khuyến nghị thêm cơ chế dừng lỗ động, xem xét các lệnh dừng kéo theo dựa trên ATR
  2. Các ngưỡng mua quá mức / bán quá mức RSI có thể được điều chỉnh thành 10 và 90 để thích nghi tốt hơn
  3. Các chỉ số khối lượng có thể được thêm vào để xác nhận tín hiệu
  4. Xem xét định hình vị trí năng động dựa trên biến động thị trường bằng cách sử dụng ATR hoặc chỉ số biến động
  5. Đề xuất thêm bộ lọc sức mạnh xu hướng như DMI hoặc ADX để lọc xu hướng yếu

Tóm lại

Đây là một chiến lược theo xu hướng có cấu trúc tốt với logic rõ ràng. Nó kết hợp các chỉ số kỹ thuật khung thời gian khác nhau để nắm bắt xu hướng trong khi duy trì kiểm soát rủi ro. Mặc dù có chỗ cho tối ưu hóa, thiết kế tổng thể phù hợp với các nguyên tắc giao dịch định lượng. Các nhà giao dịch nên kiểm tra lại và tối ưu hóa các tham số trước khi giao dịch trực tiếp và điều chỉnh kích thước vị trí theo khả năng dung nạp rủi ro của họ.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © felipemiransan

//@version=5
strategy("Supertrend Strategy", overlay=true)

// Function for Supertrend
supertrend(_factor, _atrPeriod) =>
    [out, _] = ta.supertrend(_factor, _atrPeriod)
    out

// Supertrend Settings
factor = input.float(3.42, title="Supertrend Factor")
atrPeriod = input.int(14, title="ATR Period")
tf2 = input.timeframe("120", title="Supertrend Timeframe")

// RSI Settings
rsi_tf = input.timeframe("15", title="RSI Timeframe")
rsiLength = input.int(5, title="RSI Length")
rsiUpper = input.int(95, title="RSI Upper Limit")  
rsiLower = input.int(5, title="RSI Lower Limit")   

// RSI Timeframe
rsi_tf_value = request.security(syminfo.tickerid, rsi_tf, ta.rsi(close, rsiLength), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off)

// Supertrend Timeframe
supertrend_tf2 = request.security(syminfo.tickerid, tf2, supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off)

// Take Profit Settings (Percentage in relation to the average price)
takeProfitPercent = input.float(30, title="Take Profit", step=0.1) / 100

// Entry conditions based on price crossover with Supertrend Timeframe
longCondition = ta.crossover(close, supertrend_tf2) and barstate.isconfirmed
shortCondition = ta.crossunder(close, supertrend_tf2) and barstate.isconfirmed

// Execution of reversal orders with closing of previous position
if (longCondition)
    // Close a short position before opening a long position
    if (strategy.position_size < 0)
        strategy.close("Short", comment="Close Short for Long Entry")
    strategy.entry("Long", strategy.long)

if (shortCondition)
    // Close long position before opening short position
    if (strategy.position_size > 0)
        strategy.close("Long", comment="Close Long for Short Entry")
    strategy.entry("Short", strategy.short)

// Calculate take profit levels relative to the average entry price
if (strategy.position_size > 0)
    takeProfitLong = strategy.position_avg_price * (1 + takeProfitPercent)
    strategy.exit("Take Profit Long", "Long", limit=takeProfitLong)

if (strategy.position_size > 0 and (rsi_tf_value >= rsiUpper))
    strategy.close("Long", comment="RSI Take Profit Long")

if (strategy.position_size < 0)
    takeProfitShort = strategy.position_avg_price * (1 - takeProfitPercent)
    strategy.exit("Take Profit Short", "Short", limit=takeProfitShort)

if (strategy.position_size < 0 and (rsi_tf_value <= rsiLower))
    strategy.close("Short", comment="RSI Take Profit Short")

// Plot Supertrend timeframe with commit check to avoid repainting
plot(barstate.isconfirmed ? supertrend_tf2 : na, color=color.blue, title="Supertrend Timeframe (120 min)", linewidth=1)

// Plot RSI for visualization
plot(rsi_tf_value, "RSI", color=color.purple)
hline(rsiUpper, "RSI Upper", color=color.red)
hline(rsiLower, "RSI Lower", color=color.green)




Có liên quan

Thêm nữa