Dual EMA Golden Cross Long Line Strategi

Penulis:ChaoZhang, Tanggal: 2024-02-23 12:17:40
Tag:

img

Gambaran umum

Dual EMA Golden Cross Long Line adalah strategi pelacakan tren yang hanya membuka posisi panjang. Strategi ini menggunakan tiga moving average, EMA jangka pendek, EMA jangka menengah dan EMA jangka panjang. Aturan entri khusus adalah: buka panjang ketika harga berada di atas EMA jangka panjang dan EMA jangka pendek melintasi di atas EMA jangka menengah untuk membentuk salib emas.

Logika Strategi

  1. Menghitung EMA jangka pendek, EMA jangka menengah dan EMA jangka panjang menggunakan tiga periode EMA yang dapat dikonfigurasi.

  2. Jika harga berada di atas EMA jangka panjang, itu membuktikan bahwa saat ini dalam tren bullish.

  3. Jika EMA jangka pendek melintasi di atas EMA jangka menengah dari bawah untuk membentuk salib emas, hal ini lebih lanjut membuktikan bahwa tren bullish menguat.

  4. Ketika kedua kondisi di atas terpenuhi pada saat yang sama, buka panjang.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah bahwa ia dapat secara efektif mengidentifikasi tren dengan menggunakan penilaian gabungan EMA multi-periode untuk menghindari tertipu oleh kebisingan pasar jangka pendek.

Analisis Risiko

Risiko utama dari strategi ini adalah posisi panjang. Ketika pasar berbalik, ia tidak dapat menutup posisi tepat waktu, yang menyebabkan risiko kerugian yang berkembang. Selain itu, pengaturan periode EMA yang tidak tepat juga dapat menyebabkan perdagangan yang sering dan meningkatkan biaya transaksi.

Arah Optimalisasi

  1. Meningkatkan manajemen ukuran posisi untuk mengurangi posisi ketika drawdown mencapai persentase tertentu.

  2. Tingkatkan pengaturan stop loss saat memecahkan level tertinggi baru.

  3. Mengoptimalkan parameter periode EMA untuk mengurangi frekuensi perdagangan.

Ringkasan

Strategi ini secara keseluruhan merupakan strategi kepemilikan jangka panjang berkualitas tinggi yang stabil. Strategi ini memiliki kemampuan yang kuat untuk mengidentifikasi tren dengan pengendalian risiko yang tepat. Dengan optimalisasi lebih lanjut, diharapkan dapat memperoleh pengembalian stabil yang lebih baik.


/*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)

Lebih banyak