Strategi Crossover Rata-rata Bergerak

SMA MA
Tanggal Pembuatan: 2024-06-14 15:48:32 Akhirnya memodifikasi: 2024-06-14 15:48:32
menyalin: 3 Jumlah klik: 621
1
fokus pada
1617
Pengikut

Strategi Crossover Rata-rata Bergerak

Ringkasan

Strategi ini adalah strategi perdagangan kuantitatif yang didasarkan pada persilangan rata-rata bergerak. Dengan menghitung rata-rata bergerak dari dua periode yang berbeda (garis cepat dan garis lambat), strategi ini menghasilkan sinyal beli ketika garis cepat melintasi garis lambat dari bawah ke atas, dan sinyal jual ketika garis cepat melintasi garis lambat dari atas ke bawah. Strategi ini juga memperkenalkan konsep manajemen posisi dinamis, yang secara dinamis menyesuaikan ukuran posisi setiap perdagangan sesuai dengan kerugian akun, untuk mengendalikan risiko.

Prinsip Strategi

  1. Hitung rata-rata bergerak sederhana (SMA) dari dua periode yang berbeda, yaitu 9 dan 21.
  2. Ketika garis cepat ((9 siklus) dari bawah ke atas melewati garis lambat ((21 siklus), menghasilkan sinyal beli; ketika garis cepat dari atas ke bawah melewati garis lambat, menghasilkan sinyal jual.
  3. Jumlah risiko per transaksi dihitung berdasarkan 1% dari saldo akun, lalu jumlah saham yang harus dibeli berdasarkan jumlah risiko dan kisaran harga saat ini (harga tertinggi - harga terendah).
  4. Jika strategi saat ini berada dalam keadaan menguntungkan, maka posisi perdagangan berikutnya akan ditingkatkan sebesar 10%; jika dalam keadaan rugi, maka posisi perdagangan berikutnya akan dikurangi sebesar 10%.
  5. Melakukan operasi beli saat sinyal beli muncul, melakukan operasi jual saat sinyal jual muncul.

Keunggulan Strategis

  1. Sederhana dan mudah dipahami: Strategi ini didasarkan pada prinsip lintas rata-rata bergerak klasik, logikanya jelas, mudah dipahami dan diterapkan.
  2. Trend Tracking: Menggunakan Moving Average dari dua periode yang berbeda untuk menangkap tren jangka menengah dan panjang harga.
  3. Manajemen Posisi Dinamis: Mengatur ukuran posisi secara dinamis sesuai dengan situasi untung dan rugi, meningkatkan posisi dengan tepat saat untung, mengurangi posisi dengan tepat saat rugi, membantu mengendalikan risiko dan meningkatkan keuntungan.
  4. Terapan luas: Strategi ini dapat diterapkan di berbagai pasar keuangan dan jenis perdagangan, seperti saham, futures, forex, dll.

Risiko Strategis

  1. Perdagangan frekuensi: Karena strategi ini didasarkan pada sinyal crossover rata-rata bergerak jangka pendek, dapat menyebabkan perdagangan frekuensi, meningkatkan biaya perdagangan dan risiko slippage.
  2. Performa buruk di pasar yang bergoyang: Dalam pasar yang bergoyang dan bukan tren, strategi ini mungkin menghasilkan lebih banyak sinyal palsu yang menyebabkan kerugian.
  3. Risiko optimasi parameter: kinerja strategi tergantung pada pilihan periodik rata-rata bergerak, parameter yang berbeda dapat menyebabkan hasil yang berbeda, ada risiko overfit optimasi parameter.

Arah optimasi strategi

  1. Pengenalan indikator konfirmasi tren: Berdasarkan sinyal persilangan rata-rata bergerak, pengenalan indikator konfirmasi tren lainnya, seperti MACD, ADX, dan lain-lain, untuk menyaring beberapa sinyal palsu dan meningkatkan kualitas sinyal.
  2. Optimalkan aturan manajemen posisi: Aturan manajemen posisi yang ada relatif sederhana, dan dapat dipertimbangkan untuk memperkenalkan algoritma manajemen posisi yang lebih kompleks, seperti rumus Kelly, manajemen modal proporsi tetap, dan lain-lain, untuk lebih meningkatkan laba setelah risiko.
  3. Menambahkan mekanisme stop loss dan stop loss: Menambahkan aturan stop loss dan stop loss ke dalam strategi untuk mengontrol kerugian maksimum dan keuntungan maksimum dari satu perdagangan, meningkatkan rasio risiko-keuntungan strategi.
  4. Optimasi Parameter Adaptif: Memperkenalkan mekanisme optimasi parameter adaptif, menyesuaikan parameter strategi secara otomatis sesuai dengan perubahan kondisi pasar, meningkatkan stabilitas dan kemampuan beradaptasi strategi.

Meringkaskan

Strategi moving average crossover adalah strategi perdagangan kuantitatif yang sederhana dan praktis untuk menangkap tren harga melalui sinyal silang dari dua rata-rata bergerak dengan periode yang berbeda, sambil memperkenalkan aturan manajemen posisi dinamis untuk mengendalikan risiko. Strategi ini logisnya jelas, mudah diimplementasikan, dan luas. Namun, dalam aplikasi praktis, perlu diperhatikan risiko potensial seperti perdagangan yang sering terjadi, kinerja pasar yang bergolak, dan pengoptimalan parameter, dan sesuai dengan kebutuhan untuk mengoptimalkan dan memperbaiki strategi, seperti memasukkan indikator untuk mengkonfirmasi tren, mengoptimalkan aturan posisi, mengatur stop loss, dan mengoptimalkan parameter.

Kode Sumber Strategi
/*backtest
start: 2024-06-06 00:00:00
end: 2024-06-13 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © okolienicholas

//@version=5
strategy("Moving Average Crossover Strategy", overlay=true)

// Input parameters
fast_length = input(9, title="Fast MA Length")
slow_length = input(21, title="Slow MA Length")
source = close
account_balance = input(100, title="Account Balance") // Add your account balance here

// Calculate moving averages
fast_ma = ta.sma(source, fast_length)
slow_ma = ta.sma(source, slow_length)

// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")

// Generate buy/sell signals
buy_signal = ta.crossover(fast_ma, slow_ma)
sell_signal = ta.crossunder(fast_ma, slow_ma)

// Plot buy/sell signals
plotshape(buy_signal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// Calculate the risk per trade
risk_per_trade = account_balance * 0.01

// Calculate the number of shares to buy
shares_to_buy = risk_per_trade / (high - low)

// Calculate the profit or loss
profit_or_loss = strategy.netprofit

// Adjust the position size based on the profit or loss
if (profit_or_loss > 0)
    shares_to_buy = shares_to_buy * 1.1 // Increase the position size by 10% when in profit
else
    shares_to_buy = shares_to_buy * 0.9 // Decrease the position size by 10% when in loss

// Execute orders
if (buy_signal)
    strategy.entry("Buy", strategy.long, qty=shares_to_buy)
    
if (sell_signal)
    strategy.entry("Sell", strategy.short, qty=shares_to_buy)