Chiến lược đường dài đôi EMA Golden Cross

Tác giả:ChaoZhang, Ngày: 2024-02-23 12:17:40
Tags:

img

Tổng quan

Chiến lược đường dài Golden Cross Long là một chiến lược theo dõi xu hướng chỉ mở các vị trí dài. Chiến lược sử dụng ba đường trung bình động, EMA ngắn hạn, EMA trung hạn và EMA dài hạn. Quy tắc nhập khẩu cụ thể là: mở dài khi giá vượt trên EMA dài hạn và EMA ngắn hạn vượt qua EMA trung hạn để tạo thành đường chéo vàng.

Chiến lược logic

  1. Tính toán EMA ngắn hạn, EMA trung hạn và EMA dài hạn bằng cách sử dụng ba giai đoạn EMA có thể cấu hình.

  2. Nếu giá trên đường EMA dài hạn, nó chứng minh rằng nó hiện đang trong một xu hướng tăng.

  3. Nếu đường EMA ngắn hạn vượt qua đường EMA trung hạn từ dưới để tạo thành một thập giá vàng, điều này chứng minh thêm rằng xu hướng tăng đang được tăng cường.

  4. Khi cả hai điều kiện trên được đáp ứng cùng một lúc, mở dài.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là nó có thể xác định hiệu quả xu hướng bằng cách sử dụng đánh giá kết hợp EMA nhiều giai đoạn để tránh bị đánh lừa bởi tiếng ồn thị trường ngắn hạn.

Phân tích rủi ro

Rủi ro chính của chiến lược này là vị trí dài. Khi thị trường đảo ngược, nó không thể đóng các vị trí kịp thời, dẫn đến nguy cơ tổn thất mở rộng. Ngoài ra, việc thiết lập thời gian EMA không đúng cũng có thể dẫn đến giao dịch thường xuyên và tăng chi phí giao dịch.

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

  1. Tăng quản lý kích thước vị trí để giảm vị trí khi rút vốn đạt một tỷ lệ phần trăm nhất định.

  2. Tăng cài đặt dừng lỗ khi phá vỡ mức cao mới.

  3. Tối ưu hóa các thông số thời gian EMA để giảm tần suất giao dịch.

Tóm lại

Chiến lược này nói chung là một chiến lược nắm giữ lâu dài ổn định chất lượng cao. Nó có khả năng xác định mạnh mẽ xu hướng với kiểm soát rủi ro thích hợp. Với tối ưu hóa hơn nữa, nó dự kiến sẽ có được lợi nhuận ổn định tốt hơn.


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

//@version=5
strategy("Strategia EMA Long con Opzioni di Uscita Avanzate e Periodi EMA Personalizzabili", overlay=true)

// Parametri di input generali
useVolatilityFilter = input.bool(true, title="Usa Filtro di Volatilità")
atrPeriods = input.int(14, title="Periodi ATR", minval=1)
atrMultiplier = input.float(1.5, title="Moltiplicatore ATR", step=0.1)
useTrailingStop = input.bool(true, title="Usa Trailing Stop")
trailingStopPercent = input.float(15.0, title="Percentuale Trailing Stop", minval=0.1, step=0.1) / 100.0
useEMAExit = input.bool(true, title="Usa Uscita EMA Corta incrocia EMA Media al Ribasso")

// Parametri di input per periodi EMA personalizzabili
emaLongTermPeriod = input.int(200, title="Periodo EMA Lungo Termine", minval=1)
emaShortTermPeriod = input.int(5, title="Periodo EMA Breve Termine", minval=1)
emaMidTermPeriod = input.int(10, title="Periodo EMA Medio Termine", minval=1)

// Calcolo delle EMA con periodi personalizzabili
longTermEMA = ta.ema(close, emaLongTermPeriod)
shortTermEMA = ta.ema(close, emaShortTermPeriod)
midTermEMA = ta.ema(close, emaMidTermPeriod)

// Calcolo ATR e soglia di volatilità
atr = ta.atr(atrPeriods)
atrThreshold = ta.sma(atr, atrPeriods) * atrMultiplier

// Condizione di entrata
enterLongCondition = close > longTermEMA and shortTermEMA > midTermEMA
enterLong = useVolatilityFilter ? (enterLongCondition and atr > atrThreshold) : enterLongCondition

if (enterLong)
    strategy.entry("Enter Long", strategy.long)

// Tracking del prezzo di entrata e del massimo prezzo raggiunto per il trailing stop
var float entryPrice = na
var float maxPriceSinceEntry = na
if (strategy.position_size > 0)
    maxPriceSinceEntry := math.max(na(maxPriceSinceEntry) ? high : maxPriceSinceEntry, high)
    entryPrice := na(entryPrice) ? strategy.position_avg_price : entryPrice
else
    maxPriceSinceEntry := na
    entryPrice := na

// Calcolo del valore del trailing stop
trailStopPrice = maxPriceSinceEntry * (1 - trailingStopPercent)

// Implementazione delle condizioni di uscita
exitCrossUnder = close < longTermEMA
emaCross = ta.crossunder(shortTermEMA, midTermEMA)

if (useEMAExit and emaCross)
    strategy.close("Enter Long", comment="EMA Cross Exit")

if (useTrailingStop)
    strategy.exit("Trailing Stop", from_entry="Enter Long", stop=trailStopPrice)

// Visualizzazioni
plot(longTermEMA, color=color.yellow, title="EMA Lungo Termine")
plot(shortTermEMA, color=color.blue, title="EMA Breve Termine")
plot(midTermEMA, color=color.green, title="EMA Medio Termine")
plot(useVolatilityFilter ? atrThreshold : na, color=color.purple, title="ATR Threshold")
plot(strategy.position_size > 0 ? trailStopPrice : na, color=color.orange, title="Trailing Stop Value", style=plot.style_linebr)

Thêm nữa