EMA Crossover untuk Long Line Quant Strategy

Penulis:ChaoZhang, Tanggal: 2024-02-20 15:22:12
Tag:

img

Gambaran umum

Strategi ini memanfaatkan pola silang antara moving average (MA) dari kerangka waktu yang berbeda dan indikator RSI untuk menentukan waktu masuk dan keluar di pasar, bertujuan untuk kepemilikan jangka panjang.

Logika Strategi

Mekanisme inti dari strategi ini adalah untuk mengidentifikasi titik masuk dan keluar melalui salib emas dan salib kematian garis EMA. Ini juga menggabungkan indikator RSI untuk menentukan kondisi overbought dan oversold.

Secara khusus, logika sinyal beli memeriksa hal-hal berikut: Harga melintasi di bawah EMA20 dan di atas EMA50, membentuk salib emas, yang membantu mengidentifikasi pembalikan tren dengan lebih tepat dibandingkan dengan sistem EMA tunggal. Kriteria tambahan pada harga penutupan yang lebih rendah dari harga buka dan rendah hari sebelumnya lebih lanjut menyaring keluar pecah palsu.

Kriteria pembelian di atas dikonfigurasi dengan berbagai parameter untuk membentuk 4 aturan pembelian, yang sesuai dengan periode dan jumlah EMA yang berbeda.

Untuk exit, strategi memeriksa untuk death cross di atas EMA10, dengan sinyal RSI overbought; atau death cross di bawah EMA10, dengan sinyal RSI oversold.

Analisis Keuntungan

Kekuatan terbesar dari strategi ini terletak pada efektivitasnya dalam mengidentifikasi titik pembalikan tren dengan penyeberangan EMA, memungkinkan tren mengikuti. Dibandingkan dengan sistem EMA tunggal, penyeberangan EMA ganda membantu menghilangkan sinyal palsu. Selain itu, penggunaan RSI menambahkan konfirmasi sebelum memasuki zona overbought / oversold, lebih lanjut menurunkan risiko perdagangan.

Keuntungan lain adalah implementasi piramida dan biaya rata-rata turun. pembelian tranche seperti mendistribusikan jumlah pada tingkat harga yang berbeda, memastikan keuntungan maksimum ketika tren dilanjutkan.

Analisis Risiko

Risiko utama yang terkait dengan strategi ini meliputi:

  1. Sifat keterlambatan sistem EMA membuatnya lambat bereaksi terhadap perubahan harga yang tiba-tiba, tidak dapat keluar dari posisi tepat waktu.

  2. Kurangnya pembatasan pada rentang waktu masuk pembelian dapat menyebabkan masuk awal, terjebak dalam konsolidasi pasar.

  3. Pyramiding buy order dapat mengakibatkan posisi yang terlalu besar, menciptakan kerentanan terhadap risiko breakout satu arah.

Peluang Peningkatan

Strategi ini dapat dioptimalkan lebih lanjut di bidang berikut:

  1. Menggabungkan aturan stop loss untuk mengurangi kerugian ketika tingkat dukungan utama dilanggar pada arah menurun, mengendalikan risiko penurunan.

  2. Tambahkan modul validasi perdagangan untuk memeriksa arah tren utama, masukkan perdagangan hanya ketika tren keseluruhan menunjuk ke atas, menghindari risiko kontra-tren.

  3. Tetapkan pembatasan zona pembelian yang lebih ketat untuk mencegah entri piramida prematur sebelum konfirmasi.

  4. Menggunakan algoritma pembelajaran mesin dengan analisis multifaktor untuk meningkatkan akurasi entri dan tingkat kemenangan.

Kesimpulan

Ringkasnya, artikel ini menggambarkan secara rinci strategi kuantitatif jangka panjang yang menggunakan crossover EMA ganda dan indikator RSI untuk sinyal masuk dan keluar, didukung oleh pembangunan posisi tranche untuk memaksimalkan efisiensi. Logika dan parameter dapat disesuaikan untuk indeks dan saham di seluruh pasar, menjadikannya strategi serbaguna untuk mengikuti tren jangka panjang. Analisis risiko dan peluang peningkatan juga memberikan referensi untuk optimasi lebih lanjut.


/*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("EMA_zorba1", shorttitle="3 NIFTY RSI EMA", overlay=true)

// Input parameters
qt1 = input.int(1, title="Quantity 1", minval=1)
qt2 = input.int(2, title="Quantity 2", minval=1)
qt3 = input.int(3, title="Quantity 3", minval=1)
qt4 = input.int(4, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// RSI(14) condition
rsi_threshold = 65
rsi_crossed_above_70 = ta.rsi(close, 14) > rsi_threshold
rsi_crossed_above_70_two_days_ago = ta.rsi(close[5], 14) > rsi_threshold or ta.rsi(close[4], 14) > rsi_threshold or ta.rsi(close[3], 14) > rsi_threshold
rsi_crossed_above_70_yesterday = ta.rsi(close[1], 14) > rsi_threshold

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=1, day=1)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(1, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and ((close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_two_days_ago) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and ((close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_yesterday) and profit_condition and close < low[1] and close < low[2]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)


Lebih banyak