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.
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.
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.
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.
Strategi ini dapat ditingkatkan dalam hal berikut:
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)