Chiến lược đột phá dao động

Tác giả:ChaoZhang, Ngày: 2023-10-27 16:32:19
Tags:

img

Tổng quan

Chiến lược này dựa trên ý tưởng cổ điển của Larry Connors, sử dụng hệ thống trung bình động kép để nắm bắt sự dao động trung hạn của thị trường và kiếm lợi nhuận khi nó bị mua quá mức hoặc bán quá mức.

Chiến lược logic

  1. Sử dụng chỉ số RSI 2 giai đoạn để xác định xem giá có ở khu vực quá bán không.

  2. Sử dụng đường trung bình động dài (200 thời gian) để xác định hướng xu hướng chính. Chỉ xem xét vị trí mở khi giá vượt quá đường MA dài.

  3. Khi giá trên MA dài và RSI dưới đường bán quá mức, mở vị trí dài theo giá thị trường.

  4. Khi giá vượt qua thời gian MA ngắn (5 thời gian) lên, đóng vị trí dài theo giá thị trường để kiếm lợi nhuận.

Ngoài ra, chiến lược cung cấp các tùy chọn cấu hình sau:

  • Các thông số RSI: thời gian, mức mua quá mức / bán quá mức.

  • Các thông số MA: thời gian dài và ngắn.

  • Bộ lọc RSI MA: thêm RSI MA để tránh biến động RSI.

  • Stop loss: có thể cấu hình để thêm stop loss hoặc không.

Phân tích lợi thế

  1. Hệ thống MA đôi có thể theo dõi hiệu quả xu hướng trung bình dài hạn.

  2. RSI tránh bỏ lỡ thời điểm xuất hiện tốt nhất trong biến động dữ dội.

  3. Cấu hình linh hoạt phù hợp với tối ưu hóa tham số.

  4. Chiến lược đột phá, không thể bỏ lỡ tín hiệu.

Phân tích rủi ro

  1. Chiến lược MA đôi nhạy cảm với các thông số, đòi hỏi tối ưu hóa để đạt được hiệu suất tốt nhất.

  2. Không có lỗ dừng mang lại rủi ro mở rộng lỗ.

  3. Phá vỡ sai rủi ro tổn thất trong thị trường dao động.

  4. Rủi ro quá phù hợp với thử nghiệm. Yêu cầu xác nhận trên thị trường và thời gian.

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

  1. Kiểm tra và tối ưu hóa sự kết hợp của các thông số RSI và MA để tìm ra tối ưu.

  2. Kiểm tra các bộ lọc nhập thêm như âm lượng tăng để giảm tín hiệu sai.

  3. Thêm stop loss để kiểm soát lỗ giao dịch duy nhất. Đánh giá tác động đến lợi nhuận tổng thể.

  4. Đánh giá tác động của các thời gian giữ khác nhau để tìm ra tối ưu.

  5. Kiểm tra độ bền trong thời gian dài như hàng ngày.

Tóm lại

Chiến lược này kết hợp theo dõi xu hướng MA đôi và RSI mua quá / bán quá để tạo thành một hệ thống đột phá điển hình. Với tối ưu hóa tham số, quản lý rủi ro nghiêm ngặt và xác nhận độ bền, nó có thể trở thành một công cụ giao dịch định lượng mạnh mẽ. Nhưng các nhà giao dịch nên cảnh giác với quá mức kiểm tra lại và tiếp tục cải thiện chiến lược để thích nghi với điều kiện thị trường thay đổi.


/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("RSI Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//Starter Parameters

length = input(title="RSI Lenght", defval=2)
overBoughtRSI = input(title="OverBought Level for RSI",  defval=10)
shortLength = input(title="Short MA Length",  defval=5)
longLength = input(title="Long MA Length",  defval=200)

RuleMRSI=input(title="RSI Moving Average Filter", defval= true)
lengthmrsi=input(title="RSI Moving Average Length",  defval=4)
overBoughtMRSI=input(title="OverBought Level for the Moving Average of the RSI",  defval=30)

Rulestop=input(title="Apply Stop Loss", defval=false)
stop_percentual=input(title="% Stop Loss",  defval=10)

//RSI

vrsi = rsi(close, length)

//Moving Averages

longma = sma(close,longLength)
shortma = sma(close,shortLength)
mrsi=sma(vrsi,lengthmrsi)

//Stop Loss

stop_level = strategy.position_avg_price*((100-stop_percentual)/100)

//Backtest Period
testStartYear = input(2009, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true
    
//Strategy

if testPeriod() and (not na(vrsi))
    if  (RuleMRSI==false) and (Rulestop==false)
        if (vrsi<overBoughtRSI) and (close>longma)
            strategy.entry("RsiLE", strategy.long , comment="Open")
        if (close>shortma)
            strategy.close_all()

    if (RuleMRSI==true) and (Rulestop==false)
        if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI)
            strategy.entry("RsiLE", strategy.long , comment="Open")
        if (close>shortma)
            strategy.close_all()

    if (RuleMRSI==false) and (Rulestop==true)
        if (vrsi<overBoughtRSI) and (close>longma)
            strategy.entry("RsiLE", strategy.long , comment="Open")
            strategy.exit("RsiLE", stop = stop_level)
        if (close>shortma)
            strategy.close_all()

    if (RuleMRSI==true) and (Rulestop==true)
        if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI)
            strategy.entry("RsiLE", strategy.long , comment="Open")
            strategy.exit("RsiLE", stop = stop_level)
        if (close>shortma)
            strategy.close_all()

Thêm nữa