Multi Moving Average Breakout Strategy (Strategi Penembusan Rata-rata Bergerak Berbagai)

Penulis:ChaoZhang, Tanggal: 2023-11-22 13:41:38
Tag:

img

Gambaran umum

Strategi ini menghasilkan sinyal perdagangan berdasarkan terobosan dan callback dari beberapa garis rata-rata bergerak.

Logika Strategi

Kode ini menggunakan 4 garis rata-rata bergerak dengan periode yang berbeda - 21 hari, 50 hari, 100 hari dan 200 hari. Ini memasuki posisi panjang ketika harga menembus garis MA ini dan memasuki posisi pendek ketika harga jatuh di bawah garis MA ini. Selain itu, stop loss dan take profit level ditetapkan dalam strategi. Secara khusus, stop loss ditetapkan di dekat titik terendah dari lilin sebelumnya, dan take profit ditetapkan pada jarak 3 kali jarak antara titik terendah dan titik tertinggi dari lilin sebelumnya.

Ide inti dari strategi ini adalah untuk menilai tren menggunakan rata-rata bergerak. Ketika harga menembus garis MA ke atas, itu menunjukkan tren ke atas sehingga harus pergi panjang. Ketika harga turun di bawah garis MA ke bawah, itu menunjukkan tren ke bawah sehingga harus pergi pendek. Menggunakan beberapa garis MA dengan periode yang berbeda dapat menilai tren lebih akurat dan juga memverifikasi sinyal perdagangan melalui konsistensi tren.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Menggunakan beberapa MAs dapat secara efektif menyaring sinyal palsu
  2. Menetapkan stop loss dan mengambil keuntungan dapat membatasi kerugian tunggal
  3. Sederhana untuk diterapkan

Analisis Risiko

Risiko utama dari strategi ini adalah:

  1. Strategi MA cenderung tidak selaras, sehingga kehilangan titik pembalikan harga
  2. Penembusan sinyal palsu dapat menyebabkan kerugian
  3. Pengaturan stop loss dan take profit yang tidak tepat dapat memperkuat kerugian

Risiko ini dapat dikurangi dengan menyesuaikan parameter MA dan mengoptimalkan stop loss dan take profit.

Optimalisasi

Strategi ini dapat dioptimalkan dalam aspek berikut:

  1. Uji lebih banyak kombinasi MA untuk menemukan parameter optimal
  2. Tambahkan indikator lain untuk menghindari pecah palsu
  3. Mengoptimalkan stop loss dan mengambil keuntungan untuk rasio risiko-imbalan yang lebih baik
  4. Sesuaikan parameter untuk kondisi pasar yang berbeda untuk membuat strategi lebih kuat

Ringkasan

Secara umum, ini adalah tren yang khas mengikuti strategi. Keuntungannya adalah logika yang jelas dan mudah dipahami dan diimplementasikan. Kelemahannya adalah rentan terhadap sinyal palsu. Strategi dapat ditingkatkan dengan menyesuaikan parameter dan menambahkan indikator lain.


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true)

// Input for Moving Averages
ma21 = ta.sma(close, 21)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)
ma200 = ta.sma(close, 200)

// Calculate the lowest point of the previous candle for stop loss
lowestLow = ta.lowest(low, 2)

// Calculate the highest point of the previous candle for stop loss
highestHigh = ta.highest(high, 2)

// Calculate take profit levels
takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh)
takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh)

// Entry Conditions
longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200)
shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200)

// Stop Loss Levels
stopLossLong = lowestLow * 0.995
stopLossShort = highestHigh * 1.005

// Exit Conditions
longExitCondition = low < stopLossLong or high > takeProfitLong
shortExitCondition = high > stopLossShort or low < takeProfitShort

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longExitCondition)
    strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)

if (shortExitCondition)
    strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)


Lebih banyak