Strategi Crossover Rata-rata Bergerak Cepat dan Lambat

Penulis:ChaoZhang, Tanggal: 2024-02-27 16:06:30
Tag:

img

Gambaran umum

Strategi crossover rata-rata bergerak cepat dan lambat adalah strategi sederhana berbasis rata-rata bergerak. Ini menggunakan dua rata-rata bergerak, satu cepat dan satu lambat. Ketika rata-rata bergerak cepat melintasi di atas rata-rata bergerak lambat dari bawah, itu akan panjang, menunjukkan bahwa harga mungkin naik. Ketika rata-rata bergerak cepat melintasi di bawah rata-rata bergerak lambat dari atas, itu keluar dari posisinya, menunjukkan bahwa harga mungkin turun. Ini dapat berfungsi sebagai indikator untuk memprediksi tindakan harga di masa depan.

Prinsip-prinsip

Strategi ini menggunakan dua rata-rata bergerak, satu cepat dan satu lambat. Secara khusus, panjang default adalah 25 periode untuk rata-rata bergerak cepat dan 62 periode untuk rata-rata bergerak lambat. Strategi memungkinkan pemilihan berbagai jenis rata-rata bergerak, termasuk SMA, EMA, WMA, RMA dan VWMA.

Ketika rata-rata bergerak cepat melintasi di atas rata-rata bergerak lambat dari bawah, itu menandakan bahwa harga jangka pendek telah mulai menembus harga jangka panjang, yang merupakan sinyal salib emas khas, yang menunjukkan bahwa harga mungkin memasuki tren naik. Strategi berjalan panjang pada titik ini. Ketika rata-rata bergerak cepat melintasi di bawah rata-rata bergerak lambat dari atas, itu menandakan bahwa harga jangka pendek telah mulai memecah harga jangka panjang, yang merupakan sinyal salib kematian, yang menunjukkan bahwa harga mungkin memasuki tren menurun. Strategi keluar dari posisinya pada titik ini.

Dengan menggunakan persilangan rata-rata bergerak cepat dan lambat untuk menentukan tren dan arah harga, dan mengambil posisi panjang atau dekat yang sesuai, keuntungan dapat direalisasikan.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Idenya sederhana dan mudah dipahami dan diterapkan
  2. Pengaturan parameter yang fleksibel, dengan periode dan jenis rata-rata bergerak yang dapat disesuaikan
  3. Indikator yang dapat diandalkan, akurat dalam menentukan tren harga menggunakan crossover rata-rata bergerak
  4. Otomasi direalisasikan, mengurangi pengaruh faktor psikologis tanpa penilaian manual
  5. Terapan untuk beberapa produk, dapat digunakan secara luas untuk indeks, forex, cryptocurrency dll
  6. Mudah dioptimalkan, parameter dapat disesuaikan untuk menemukan konfigurasi yang lebih baik
  7. Ekspansibilitas yang kuat, dapat dikombinasikan dengan indikator atau strategi lain

Singkatnya, dengan crossover rata-rata bergerak cepat dan lambat sebagai sinyal perdagangan inti, strategi ini memiliki kemampuan yang kuat dalam menilai tren harga di masa depan.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko potensial:

  1. Sinyal silang dapat memberikan sinyal palsu, dengan harga hanya memiliki koreksi jangka pendek daripada pembalikan tren jangka panjang
  2. Pemilihan panjang rata-rata bergerak pendek dan panjang yang tidak tepat dapat menyebabkan perdagangan yang terlalu sering atau kehilangan peluang yang baik
  3. Sinyal crossover mungkin tidak signifikan selama fluktuasi harga yang keras
  4. Biaya perdagangan yang tinggi dapat mengikis keuntungan jika sinyal silang memicu perdagangan yang terlalu sering
  5. Ekstensibilitas yang kuat juga memperkenalkan risiko optimasi yang berlebihan

Untuk mengendalikan dan mengurangi risiko ini, metode berikut dapat diadopsi:

  1. Menggunakan indikator lain untuk menyaring sinyal dan menghindari sinyal palsu misalnya indikator divergensi harga-volume
  2. Sesuaikan parameter rata-rata bergerak untuk menemukan kombinasi optimal dan mengurangi kesalahan perdagangan
  3. Menyimpan strategi sementara selama perubahan pasar yang keras
  4. Relaksasi rentang stop loss dengan tepat untuk mengurangi kerugian yang tidak perlu
  5. Melakukan pengujian ketahanan pada beberapa produk untuk mengevaluasi risiko dan mencegah terlalu banyak optimasi

Arahan Optimasi

Arah utama untuk mengoptimalkan strategi meliputi:

  1. Pemilihan periode untuk rata-rata bergerak cepat dan lambat: parameter default mungkin tidak optimal, periode yang berbeda dapat diuji untuk menemukan konfigurasi terbaik

  2. Pemilihan jenis rata-rata bergerak: beberapa jenis disediakan dan dapat menguji mana yang paling cocok untuk produk tertentu

  3. Kombinasi dengan indikator atau strategi lain: dapat mencoba kombinasi dengan indikator volatilitas, indikator volume-harga atau strategi trend berikut untuk meningkatkan kinerja

  4. Optimasi adaptif parameter: memungkinkan periode rata-rata bergerak untuk menyesuaikan secara otomatis berdasarkan volatilitas pasar dan likuiditas untuk meningkatkan stabilitas

  5. Bantuan model AI: gunakan algoritma pembelajaran mesin untuk menganalisis sejumlah besar data dan secara otomatis mencari aturan perdagangan yang optimal

Melalui metode optimasi ini, peningkatan lebih lanjut dalam profitabilitas dan stabilitas strategi dapat diharapkan.

Ringkasan

Singkatnya, strategi crossover rata-rata bergerak cepat dan lambat adalah strategi yang sangat praktis mengikuti tren. Ini menangkap pola perubahan harga di berbagai kerangka waktu, menggunakan crossover rata-rata bergerak cepat dari rata-rata bergerak lambat untuk menentukan tren dan arah harga masa depan yang mungkin. Ide strategi sederhana dan jelas, mudah dipahami dan diimplementasikan, menawarkan parameter yang dapat disesuaikan yang fleksibel, dan juga memiliki keandalan yang tinggi, tingkat otomatisasi, penerapan luas dan ekstensibilitas yang kuat. Tentu saja risiko sinyal palsu ada, membutuhkan kombinasi dengan indikator lain untuk mencapai efek maksimum. Dengan pengujian dan optimalisasi terus-menerus, strategi ini berpotensi untuk mencapai keuntungan stabil yang layak dalam perdagangan langsung.


/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//Author @divonn1994

initial_balance = 100
strategy(title='Fast v Slow Moving Averages Strategy', shorttitle = 'Fast v Slow', overlay=true, pyramiding=0, default_qty_value=100, default_qty_type=strategy.percent_of_equity, precision=7, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent, initial_capital=initial_balance)

//Input for number of bars for moving average, Switch to choose moving average type, Display Options and Time Frame of trading----------------------------------------------------------------

fastBars = input.int(25, "Fast moving average length", minval=1)
slowBars = input.int(62, "Slow moving average length", minval=1)
strategy = input.string("EMA", "MA type", options = ["EMA", "VWMA", "SMA", "RMA", "WMA"])

redOn = input.string("On", "Red Background Color On/Off", options = ["On", "Off"], group='Display')
greenOn = input.string("On", "Green Background Color On/Off", options = ["On", "Off"], group='Display')
maOn = input.string("On", "Moving Average Plot On/Off", options = ["On", "Off"], group='Display')

startMonth = input.int(title='Start Month 1-12 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=12, group='Beginning of Strategy')
startDate = input.int(title='Start Date 1-31 (set any start time to 0 for furthest date)', defval=1, minval=0, maxval=31, group='Beginning of Strategy')
startYear = input.int(title='Start Year 2000-2100 (set any start time to 0 for furthest date)', defval=2011, minval=2000, maxval=2100, group='Beginning of Strategy')

endMonth = input.int(title='End Month 1-12 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=12, group='End of Strategy')
endDate = input.int(title='End Date 1-31 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=31, group='End of Strategy')
endYear = input.int(title='End Year 2000-2100 (set any end time to 0 for today\'s date)', defval=0, minval=0, maxval=2100, group='End of Strategy')

//Strategy Calculations-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

inDateRange = true

maMomentum = switch strategy
    "EMA" => (ta.ema(close, fastBars) >= ta.ema(close, slowBars)) ? 1 : -1
    "SMA" => (ta.sma(close, fastBars) >= ta.sma(close, slowBars)) ? 1 : -1
    "RMA" => (ta.rma(close, fastBars) >= ta.rma(close, slowBars)) ? 1 : -1
    "WMA" => (ta.wma(close, fastBars) >= ta.wma(close, slowBars)) ? 1 : -1
    "VWMA" => (ta.vwma(close, fastBars) >= ta.vwma(close, slowBars)) ? 1 : -1
    =>
        runtime.error("No matching MA type found.")
        float(na)

fastMA = switch strategy
    "EMA" => ta.ema(close, fastBars)
    "SMA" => ta.sma(close, fastBars)
    "RMA" => ta.rma(close, fastBars)
    "WMA" => ta.wma(close, fastBars)
    "VWMA" => ta.vwma(close, fastBars)
    =>
        runtime.error("No matching MA type found.")
        float(na)
        
slowMA = switch strategy
    "EMA" => ta.ema(close, slowBars)
    "SMA" => ta.sma(close, slowBars)
    "RMA" => ta.rma(close, slowBars)
    "WMA" => ta.wma(close, slowBars)
    "VWMA" => ta.vwma(close, slowBars)
    =>
        runtime.error("No matching MA type found.")
        float(na)

//Enter or Exit Positions--------------------------------------------------------------------------------------------------------------------------------------------------------------------

if ta.crossover(maMomentum, 0)
    if inDateRange
        strategy.entry('long', strategy.long, comment='long')
if ta.crossunder(maMomentum, 0)
    if inDateRange
        strategy.close('long')

//Plot Strategy Behavior---------------------------------------------------------------------------------------------------------------------------------------------------------------------

plot(series = maOn == "On" ? fastMA : na, title = "Fast Moving Average", color = color.new(color.white,0), linewidth=2, offset=1)
plot(series = maOn == "On" ? slowMA : na, title = "Slow Moving Average", color = color.new(color.purple,0), linewidth=3, offset=1)
bgcolor(color = inDateRange and (greenOn == "On") and maMomentum > 0 ? color.new(color.green,75) : inDateRange and (redOn == "On") and maMomentum <= 0 ? color.new(color.red,75) : na, offset=1)

Lebih banyak