Dựa trên chiến lược kinh điển của Larry Connors


Ngày tạo: 2023-10-27 16:32:19 sửa đổi lần cuối: 2023-10-27 16:32:19
sao chép: 1 Số nhấp chuột: 660
1
tập trung vào
1617
Người theo dõi

Dựa trên chiến lược kinh điển của Larry Connors

Tổng quan

Chiến lược này dựa trên tư tưởng chiến lược cổ điển của Larry Connors, sử dụng hệ thống hai đường bằng nhau để nắm bắt các biến động đường ngắn và đường trung của thị trường, để thực hiện chiến lược hoạt động an toàn trong khu vực mua quá mức.

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

  1. Sử dụng chỉ số RSI 2 chu kỳ để xác định giá cổ phiếu có nằm trong vùng bán tháo hay không.

  2. Sử dụng đường trung bình chu kỳ dài ((200 chu kỳ) để xác định hướng của xu hướng lớn. Chỉ khi giá cao hơn đường trung bình chu kỳ dài thì hãy cân nhắc đặt hàng.

  3. Khi giá cao hơn đường trung bình chu kỳ dài và chỉ số RSI thấp hơn đường bán tháo, hãy đặt nhiều vị trí với giá thị trường.

  4. Khi giá tăng vượt qua đường trung bình ngắn kỳ ((5 chu kỳ), giá thị trường sẽ tăng một lần.

Ngoài ra, chính sách còn cung cấp các tùy chọn cấu hình sau:

  • Các tham số RSI: độ dài của chu kỳ, vị trí của đường giao dịch quá mua quá bán

  • Mật số đường trung bình: chu kỳ đường trung bình dài và ngắn.

  • Bộ lọc đường trung bình RSI: Thêm phán đoán đường trung bình RSI để tránh chỉ số RSI dao động quá mạnh.

  • Cài đặt Stop Loss: Bạn có thể chọn thêm Stop Loss.

Phân tích lợi thế

  1. Sử dụng hệ thống hai đường đồng nhất, có thể theo dõi hiệu quả xu hướng đường dài.

  2. Chỉ số RSI tránh bỏ lỡ thời điểm tốt nhất để tham gia trong một cơn động đất mạnh mẽ.

  3. Có thể cấu hình linh hoạt, phù hợp với các tham số khác nhau tối ưu hóa.

  4. Các chiến lược đột phá rundown, không dễ để bỏ lỡ.

Phân tích rủi ro

  1. Chiến lược hai đường đều nhạy cảm với các tham số và cần tối ưu hóa các tham số để đạt được hiệu quả tối ưu.

  2. Cài đặt không lỗ có nguy cơ tăng lỗ. Cần quản lý tài chính cẩn thận, kiểm soát quy mô vị trí đơn lẻ.

  3. Có thể có nguy cơ thua lỗ khi phá vỡ giả trong tình huống chấn động. Bạn có thể cân nhắc tối ưu hóa chu kỳ trung bình hoặc thêm các điều kiện khác như là bộ lọc.

  4. Đánh giá rủi ro phù hợp của dữ liệu. Cần xác minh tính ổn định của chiến lược trong nhiều thị trường trong một khoảng thời gian dài.

Hướng tối ưu hóa

  1. Kiểm tra tối ưu hóa các tham số của RSI và đường trung bình để tìm tham số tối ưu.

  2. Kiểm tra các điều kiện lọc khác nhau, chẳng hạn như khối lượng giao dịch tăng vọt, để giảm tín hiệu giả.

  3. Thêm theo dõi dừng để kiểm soát tổn thất đơn lẻ. Cần đánh giá tác động của thiết lập dừng đối với lợi nhuận tổng thể.

  4. Đánh giá ảnh hưởng của thời gian giữ vị trí khác nhau đối với lợi nhuận, tìm kiếm chu kỳ giữ vị trí tối ưu.

  5. Kiểm tra tính ổn định của chiến lược trong một chu kỳ thời gian dài hơn (ví dụ như cấp độ đường nắng).

Tóm tắt

Chiến lược này tích hợp theo dõi xu hướng hai đường ngang và tính năng mua bán quá mức của chỉ số RSI, một hệ thống đột phá điển hình. Với sự tối ưu hóa tham số, quản lý tài chính nghiêm ngặt và xác minh sức khỏe, chiến lược này có thể trở thành một công cụ mạnh mẽ để định lượng giao dịch. Tuy nhiên, các nhà giao dịch cần cảnh giác khi phản hồi các vấn đề phù hợp và tiếp tục điều chỉnh và hoàn thiện chiến lược trong môi trường thị trường thay đổi.

Mã nguồn chiến lược
/*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()