Chiến lược dài hạn Double EMA Golden Cross


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

Chiến lược dài hạn Double EMA Golden Cross

Tổng quan

Chiến lược đường dài hai EMA vàng là một chiến lược theo dõi xu hướng chỉ mở nhiều vị trí. Chiến lược này sử dụng ba đường trung bình di chuyển cùng một lúc là EMA ngắn hạn, EMA trung hạn và EMA dài hạn. Quy tắc nhập cụ thể là: giá cao hơn EMA dài hạn, trong khi EMA ngắn hạn từ phía dưới tạo thành một giao dịch vàng.

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

  1. Sử dụng ba chu kỳ EMA có thể được cấu hình, tính toán EMA ngắn hạn, EMA trung hạn và EMA dài hạn.

  2. Nếu giá cao hơn EMA dài hạn, nó chứng minh rằng hiện tại đang trong xu hướng đa đầu.

  3. Nếu EMA ngắn hạn xuyên qua EMA trung bình từ dưới lên, tạo thành một giao chéo vàng, nó sẽ xác nhận thêm xu hướng đa đầu đang tăng lên.

  4. Khi cả hai điều kiện trên đều được đáp ứng, bạn có thể mở thêm.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là có thể xác định xu hướng hiệu quả, sử dụng phán đoán kết hợp EMA đa chu kỳ, tránh bị lừa bởi tiếng ồn thị trường ngắn hạn. Đồng thời, cấu hình dừng lỗ như một phương tiện kiểm soát rủi ro, có thể kiểm soát tổn thất trong một phạm vi nhất định.

Phân tích rủi ro

Rủi ro chính của chiến lược này nằm ở vị trí nhiều đầu. Không thể đóng vị trí kịp thời khi thị trường đảo ngược, dẫn đến nguy cơ tổn thất mở rộng. Ngoài ra, thiết lập chu kỳ EMAS không chính xác 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ý số lượng vị trí, giảm vị trí khi rút lại đạt một tỷ lệ nhất định.

  2. Thêm thiết lập dừng lỗ cao đột phá.

  3. Tối ưu hóa các tham số chu kỳ EMAS, giảm tần suất giao dịch.

Tóm tắt

Chiến lược này là một chiến lược nắm giữ dài hạn chất lượng ổn định. Khả năng nhận diện xu hướng mạnh mẽ, rủi ro được kiểm soát.

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