Strategi Perdagangan Crossover EMA

Penulis:ChaoZhang, Tanggal: 2024-02-22 17:48:09
Tag:

img

Gambaran umum

Strategi perdagangan EMA Crossover menghasilkan sinyal beli dan jual dengan menghitung garis EMA dari periode yang berbeda dan mendeteksi situasi silang mereka. Ketika EMA yang lebih cepat melintasi di atas EMA yang lebih lambat, sinyal beli dihasilkan. Ketika EMA yang lebih cepat melintasi di bawah EMA yang lebih lambat, sinyal jual dihasilkan.

Logika Strategi

Inti dari strategi ini adalah untuk menghitung dua garis EMA dengan periode yang berbeda, termasuk EMA yang lebih cepat dengan periode default 9, dan EMA yang lebih lambat dengan periode default 20. Kode menghitung dua garis ini dengan memanggil fungsi ema bawaan di Pine Script. Kemudian menghasilkan sinyal perdagangan dengan mendeteksi apakah dua garis EMA bersilang. Secara khusus, jika EMA yang lebih cepat melintasi EMA yang lebih lambat, sinyal beli dipicu. Jika EMA yang lebih cepat melintasi di bawah EMA yang lebih lambat, sinyal jual dipicu.

Fungsi crossover mendeteksi situasi crossover dan crossunder menggunakan fungsi crossover dan crossunder built-in di Pine Script. Fungsi crossover memeriksa apakah EMA yang lebih cepat melintasi di atas EMA yang lebih lambat dan mengembalikan nilai boolean. Fungsi crossunder memeriksa apakah EMA yang lebih cepat melintasi di bawah EMA yang lebih lambat dan mengembalikan nilai boolean. Berdasarkan nilai pengembalian dari kedua fungsi ini, kode mengirimkan pesanan beli atau jual yang sesuai.

Selain itu, kode menyediakan beberapa kondisi tambahan seperti menetapkan tanggal awal / akhir, membatasi hanya perdagangan panjang atau pendek, dll. Fitur-fitur ini membantu melakukan backtest atau optimasi yang lebih canggih.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah bahwa strategi ini sangat sederhana dan langsung, mudah dimengerti dan diimplementasikan, sehingga cocok untuk pemula untuk belajar. Juga, sebagai indikator trend berikut, moving average dapat secara efektif melacak tren pasar dan menghasilkan keuntungan tambahan dengan mengeksploitasi momentum.

Analisis Risiko

Risiko utama yang dihadapi strategi ini adalah perdagangan whipsaw dan pembalikan tren. Garis EMA rentan terhadap fluktuasi pasar jangka pendek, yang dapat menghasilkan sinyal palsu dan memicu perdagangan yang tidak perlu, meningkatkan frekuensi dan biaya perdagangan. Di sisi lain, ketika sinyal crossover memicu, tren mungkin mendekati titik pembalikan, membuat perdagangan lebih berisiko. Pengaturan parameter yang tidak tepat juga dapat mempengaruhi kinerja strategi.

Metode seperti menyesuaikan periode EMA, menambahkan filter dapat membantu mengurangi whipsaws. Stop loss order mengendalikan kerugian perdagangan tunggal. Optimasi parameter meningkatkan ketahanan. Namun, tidak ada strategi perdagangan yang dapat sepenuhnya menghindari kerugian, jadi seseorang harus siap untuk mengambil risiko.

Peluang Optimalisasi

Strategi ini dapat ditingkatkan dalam hal berikut:

  1. Mengoptimalkan periode EMA untuk menemukan set parameter terbaik
  2. Tambahkan indikator seperti MACD, RSI sebagai filter untuk mengurangi sinyal palsu
  3. Masukkan metrik tren untuk menghindari pembalikan tren
  4. Pilih saham berdasarkan fundamental
  5. Sesuaikan ukuran posisi, atur berhenti berdasarkan ATR

Kesimpulan

EMA crossover adalah strategi trend following yang sederhana namun efektif. Ini menggunakan EMA cross untuk menghasilkan sinyal perdagangan, secara otomatis menangkap tren harga. Strategi yang mudah dimengerti dan dapat disesuaikan ini sangat cocok untuk pemula untuk dipelajari. Ini juga dapat diintegrasikan ke dalam strategi yang lebih kompleks. Namun, semua strategi membawa risiko dan membutuhkan manajemen yang bijaksana. Peningkatan berkelanjutan dalam hal optimasi dan memperkaya kondisi pasar dapat membuat strategi ini lebih kuat.


/*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"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// This strategy has been created for illustration purposes only and should not be relied upon as a basis for buying, selling, or holding any asset or security.
// © kirilov

//@version=4
strategy(
     "EMA Cross Strategy",
     overlay=true,
     calc_on_every_tick=true,
     currency=currency.USD
     )

// INPUT:

// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input(title="Fast EMA", type=input.integer, defval=9, minval=1, maxval=9999)
emaSlow = input(title="Slow EMA", type=input.integer, defval=20, minval=1, maxval=9999)

// Option to select trade directions
tradeDirection = input(title="Trade Direction", options=["Long", "Short", "Both"], defval="Both")

// Options that configure the backtest date range
startDate = input(title="Start Date", type=input.time, defval=timestamp("01 Jan 1970 00:00"))
endDate = input(title="End Date", type=input.time, defval=timestamp("31 Dec 2170 23:59"))


// CALCULATIONS:

// Use the built-in function to calculate two EMA lines
fastEMA = ema(close, emaFast)
slowEMA = ema(close, emaSlow)


// PLOT:

// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.black, linewidth=2)
plot(series=slowEMA, color=color.red, linewidth=2)


// CONDITIONS:

// Check if the close time of the current bar falls inside the date range
inDateRange = true

// Translate input into trading conditions
longOK  = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")

// Decide if we should go long or short using the built-in functions
longCondition = crossover(fastEMA, slowEMA)
shortCondition = crossunder(fastEMA, slowEMA)


// ORDERS:

// Submit entry (or reverse) orders
if (longCondition and inDateRange)
    strategy.entry(id="long", long=true, when = longOK)
if (shortCondition and inDateRange)
    strategy.entry(id="short", long=false, when = shortOK)
    
// Submit exit orders in the cases where we trade only long or only short
if (strategy.position_size > 0 and shortCondition)
    strategy.exit(id="exit long", stop=close)
if (strategy.position_size < 0 and longCondition)
    strategy.exit(id="exit short", stop=close)



Lebih banyak