Strategi Crossover Rata-rata Bergerak Eksponensial

Penulis:ChaoZhang, Tanggal: 2024-01-08 11:30:21
Tag:

img

Gambaran umum

Strategi crossover rata-rata bergerak eksponensial adalah strategi perdagangan kuantitatif sederhana yang melacak tren harga. Ini menggunakan persilangan dua rata-rata bergerak eksponensial dengan pengaturan parameter yang berbeda sebagai sinyal beli dan jual. Ketika EMA jangka pendek melintasi di atas EMA jangka panjang, sinyal beli dihasilkan. Ketika EMA jangka pendek melintasi di bawah EMA jangka panjang, sinyal jual dihasilkan.

Logika Strategi

Logika inti dari strategi ini didasarkan pada teori EMA. Rata-rata bergerak eksponensial dapat secara efektif meratakan fluktuasi harga dan menentukan arah tren harga. EMA cepat merespons dengan cepat perubahan harga sementara EMA lambat memberikan referensi untuk arah tren harga. Ketika EMA cepat melintasi di atas EMA lambat, itu menunjukkan bahwa harga telah mulai naik dan sinyal beli dihasilkan. Ketika EMA cepat melintasi di bawah EMA lambat, itu menunjukkan bahwa harga telah mulai turun dan sinyal jual dihasilkan.

Secara khusus, strategi ini pertama-tama mendefinisikan dua rata-rata bergerak eksponensial: fib_level dan fib_price. fib_level ditetapkan oleh input pengguna, dan fib_price dihitung berdasarkan harga tertinggi dan terendah dari 100 bar terbaru. Ketika harga penutupan melintasi di atas atau di bawah fib_price, sinyal beli dan jual dihasilkan, masing-masing. Pada saat yang sama, stop loss ditetapkan pada harga tertinggi dan terendah dari 10 bar terbaru.

Analisis Keuntungan

  • Menggunakan sistem EMA ganda untuk menentukan arah tren harga dan menghindari sinyal yang salah
  • Strategi yang dapat disesuaikan dengan parameter yang ditentukan pengguna
  • Menetapkan stop loss bermanfaat untuk pengendalian risiko

Analisis Risiko

  • EMA lag mungkin melewatkan titik pembalikan harga
  • Pembebasan EMA yang sering meningkatkan biaya transaksi dan kerugian slippage
  • Pengaturan stop loss yang tidak tepat dapat menyebabkan stop loss prematur atau kerugian yang berlebihan

Risiko dapat dikurangi dengan mengoptimalkan parameter EMA, menggunakan sistem triple EMA, atau menggabungkan dengan indikator lain untuk konfirmasi sinyal.

Arahan Optimasi

Strategi ini dapat dioptimalkan dari aspek berikut:

  1. Mengoptimalkan parameter periode EMA. Uji kombinasi periode yang berbeda untuk menemukan parameter terbaik.

  2. Tambahkan Volume dan filter lainnya. Membuat sinyal beli ketika Volume naik dan sinyal jual ketika Volume turun untuk menghindari sinyal yang salah selama lonjakan harga yang tajam.

  3. Menggunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara otomatis berdasarkan data historis.

  4. Tambahkan mekanisme stop trailing untuk stop loss placement. Pindah ke garis stop loss dengan peningkatan keuntungan untuk mencegah stop out prematur.

Ringkasan

Strategi crossover rata-rata bergerak eksponensial adalah strategi perdagangan kuantitatif yang mudah digunakan secara keseluruhan. Strategi ini memanfaatkan kekuatan EMA untuk menentukan tren harga dan menetapkan stop untuk mengendalikan risiko. Strategi ini mudah dipahami, fleksibel dalam parameter, dan berlaku untuk perdagangan kuantitatif di berbagai produk. Optimasi lebih lanjut dalam penyesuaian parameter, filter tambahan, dan trailing stop dapat menyebabkan kinerja strategi yang lebih baik.


/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fibonacci Strategy", overlay=true)

// Define Fibonacci 0.5 level
fib_level = input(0.5, title="Fibonacci Level")

// Calculate Fibonacci 0.5 level price
fib_price = ta.lowest(low, 100) + (ta.highest(high, 100) - ta.lowest(low, 100)) * fib_level

// Define entry and exit conditions
long_condition = ta.crossover(close, fib_price)
short_condition = ta.crossunder(close, fib_price)

// Set exit points (using previous high or low)
long_exit = ta.highest(high, 10)
short_exit = ta.lowest(low, 10)

// Plot Fibonacci 0.5 level
plot(fib_price, "Fib 0.5", color=color.blue, linewidth=1, style=plot.style_circles)

// Initialize variables
var inLong = false
var inShort = false

// Set trading signals
if (long_condition)
    if not inLong
        strategy.entry("Buy", strategy.long)
        inLong := true
    strategy.exit("Exit", "Buy", limit=long_exit)

if (short_condition)
    if not inShort
        strategy.entry("Sell", strategy.short)
        inShort := true
    strategy.exit("Exit", "Sell", limit=short_exit)

if (ta.crossover(close, long_exit) or ta.crossunder(close, short_exit))
    inLong := false
    inShort := false


Lebih banyak