Strategi ini mengadopsi EMA crossover untuk melacak tren harga. Ini pergi panjang ketika EMA cepat melintasi di atas EMA lambat, dan menutup posisi ketika EMA cepat melintasi di bawah EMA lambat. Terutama cocok untuk produk dengan tren yang jelas, secara efektif mengikuti tren dan mendapatkan keuntungan berlebih.
Indikator inti dari strategi ini adalah EMA.
EMA (t) = C (t) ×2/ (n+1) + EMA (t-1) × (n-1) / (n+1)
Di mana t adalah tick saat ini, C(t) adalah harga penutupan saat ini, dan n adalah nilai parameter N. EMA adalah teknik rata-rata bergerak dengan faktor tertimbang, memberikan lebih banyak bobot pada harga terbaru, sehingga bereaksi lebih cepat terhadap perubahan harga terbaru.
Strategi ini membangun EMA cepat dan lambat dan mengambil EMA cepat melintasi di atas EMA lambat sebagai sinyal beli, dan EMA cepat melintasi di bawah EMA lambat sebagai sinyal jual.
Keuntungan dari strategi ini adalah:
Risiko utama adalah:
Untuk mengurangi risiko di atas, langkah-langkah optimalisasi berikut dapat diadopsi:
Strategi dapat dioptimalkan dari aspek berikut:
Secara singkat, ini adalah strategi tren sederhana dan praktis yang menggunakan EMA untuk menilai tren harga. Logika jelas dan mudah diterapkan. Keuntungannya terletak pada kesederhanaan untuk menyesuaikan parameter dan secara efektif mengikuti tren. Kelemahannya cenderung sinyal palsu dan kinerja aktual mungkin kurang baik dari backtest. Langkah selanjutnya dari optimasi dapat berfokus pada penambahan filter, parameter dinamis, membangun model untuk membuat strategi lebih kuat.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("EMA交叉策略by GPT", format = format.inherit, overlay = true, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD, initial_capital = 1000000) // 定義回測交易開始和結束時間的變數 start_time = input(title="開始時間", type=input.time, defval=timestamp("01 Jan 2020 00:00 +0000")) end_time = input(title="結束時間", type=input.time, defval=timestamp("31 Dec 2050 23:59 +0000")) // 判斷是否在回測交易時間範圍內 in_range = true // Define input variables fast_length = input(title="Fast EMA Length", type=input.integer, defval=5) slow_length = input(title="Slow EMA Length", type=input.integer, defval=20) // Define EMAs fast_ema = ema(close, fast_length) slow_ema = ema(close, slow_length) // Define buy and sell signals buy_signal = crossover(fast_ema, slow_ema) sell_signal = crossunder(fast_ema, slow_ema) // Buy signal if in_range and buy_signal strategy.entry("Buy", strategy.long, when=in_range) // Sell signal if in_range and sell_signal strategy.close("Buy", when=sell_signal)