Chiến lược dừng lỗ theo sau dựa trên SMA và ATR


Ngày tạo: 2024-02-06 10:06:29 sửa đổi lần cuối: 2024-02-06 10:06:29
sao chép: 0 Số nhấp chuột: 751
1
tập trung vào
1617
Người theo dõi

Chiến lược dừng lỗ theo sau dựa trên SMA và ATR

Tổng quan

Chiến lược này là một chiến lược giao dịch đường dài dựa trên đường trung bình di chuyển đơn giản (SMA) và đường biến động thực tế trung bình (ATR). Nó kết hợp các ưu điểm của theo dõi xu hướng và quản lý rủi ro để kiểm soát rút lui và tối đa hóa lợi nhuận.

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

Chiến lược này sử dụng SMA 200 để xác định hướng xu hướng lớn, sử dụng ATR để thiết lập đường dừng để theo dõi động lực. Cụ thể, tín hiệu mua là dấu hiệu phá vỡ SMA 200 cộng với ATR 14 ngày, dấu hiệu phá vỡ này cho thấy hiện tại đang trong xu hướng tăng.

Phân tích lợi thế

Chiến lược này kết hợp các lợi thế của hai chỉ số SMA và ATR. SMA 200 có thể lọc tiếng ồn thị trường, khóa theo hướng chính của đường dài; và ATR 14 ngày có thể thiết lập đường dừng dựa trên biến động trong hai tuần gần đây, đạt hiệu quả của dừng theo dõi động. Điều này mang lại lợi nhuận liên tục trong xu hướng, đồng thời cũng có thể kiểm soát hiệu quả việc rút lui.

  1. Tỷ lệ lợi nhuận cao. Tiếp theo xu hướng, kiểm soát rủi ro, do đó đạt được tỷ lệ lợi nhuận cao.

  2. Quay trở có thể kiểm soát được. Theo dõi động ATR làm giảm tác động của sự cố bất ngờ, kiểm soát hiệu quả việc rút lui.

  3. Các tham số đơn giản. Chỉ sử dụng hai tham số để cân bằng rủi ro và lợi ích, tránh tối ưu hóa quá mức.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro cần lưu ý. Những rủi ro chính là:

  1. Rủi ro đảo ngược xu hướng. Chiến lược không thể tự mình đánh giá xu hướng đảo ngược, nếu có sự thay đổi đột ngột có thể dẫn đến tổn thất lớn.

  2. Rủi ro chậm trễ của SMA. SMA có độ chậm trễ và không thể phản ánh ngay lập tức sự thay đổi xu hướng.

  3. Rủi ro khi đặt tham số ATR. Thiết lập tham số ATR quá lớn hoặc quá nhỏ sẽ ảnh hưởng đến hiệu suất của chiến lược.

Giải pháp tương ứng:

  1. Kết hợp với các chỉ số khác để đánh giá xu hướng, như MACD.
  2. Kiểm tra các kết hợp các tham số khác nhau để tìm sự cân bằng tối ưu.

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

Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:

  1. Kiểm tra các kết hợp khác nhau của các tham số SMA và ATR để tìm tham số tối ưu.

  2. Thêm các chỉ số kỹ thuật khác để đánh giá sự đảo ngược, như MACD.

  3. Tối ưu hóa cơ chế dừng lỗ, chẳng hạn như thay đổi dừng lỗ, di chuyển dừng lỗ.

  4. Kết hợp các chỉ số cơ bản của cổ phiếu để tránh mua các cổ phiếu không có triển vọng.

Tóm tắt

Chiến lược này tích hợp các phương pháp theo dõi xu hướng và quản lý rủi ro động, cho phép tối ưu hóa dừng lỗ và dừng lại trong thời gian giữ đường dài. Nó có các đặc điểm của tỷ lệ lỗ cao, có thể thu hồi, cân bằng lợi nhuận rủi ro. Nhưng cũng có một số rủi ro đảo ngược xu hướng và khó tối ưu hóa tham số.

Mã nguồn chiến lược
/*backtest
start: 2023-01-30 00:00:00
end: 2024-02-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA+ATR Strategie", overlay=true)

// Benutzer-Inputs für SMA, ATR und die Anzeigeoption
smaLength = input(200, title="SMA Länge")
atrLength = input(14, title="ATR Länge")
showSMAandATR = input(true, title="Zeige SMA und ATR-Bänder")

// Berechnung von SMA und ATR
sma = ta.sma(close, smaLength)
atr = ta.atr(atrLength)

// Kauf- und Verkaufslogik basierend auf SMA und ATR
buyCondition = close > sma + atr
sellCondition = close < sma - atr

// Variable zum Speichern des Eintrittspreises
var float entryPrice = na

// Kauf- und Verkaufssignale
if (buyCondition)
    strategy.entry("Buy", strategy.long)
    entryPrice := close // Speichere den Eintrittspreis

if (sellCondition)
    // Nur wenn ein Kauf stattgefunden hat
    if not na(entryPrice)
        // Berechne die Performance seit dem Kaufsignal
        performanceSinceBuy = ((close - entryPrice) / entryPrice) * 100
        // Anzeigen der Performance
        // Wähle die Box-Farbe basierend auf dem Vorzeichen der Performance
        plColor = performanceSinceBuy >= 0 ? color.green : color.red
        // Anzeigen der Performance in der entsprechenden Farbe
        plBox = "P/L: " + str.tostring(performanceSinceBuy, "#.##") + "%"
        label.new(bar_index, high, text=plBox, color=plColor, textcolor=color.white, style=label.style_label_center, yloc=yloc.price)
        
    // Schließe den Trade und setze den Eintrittspreis zurück
    strategy.close("Buy")
    entryPrice := na

// Optionale Anzeige von SMA und ATR-Band
plot(showSMAandATR ? sma : na, color=color.blue, title="SMA 200")
plot(showSMAandATR ? sma + atr : na, color=color.green, title="SMA 200 + ATR")
plot(showSMAandATR ? sma - atr : na, color=color.red, title="SMA 200 - ATR")