Strategi Rata-rata Gerak Dinamis Multi-Periode

Penulis:ChaoZhang, Tanggal: 2023-10-27 16:07:16
Tag:

img

Strategi ini secara dinamis memilih jenis rata-rata bergerak yang berbeda di beberapa kerangka waktu untuk menghasilkan sinyal perdagangan.

Logika Strategi

Strategi ini memungkinkan untuk memilih dari SMA, EMA, TEMA, WMA dan HMA moving average, dengan panjang periode yang dapat disesuaikan.

Secara khusus, strategi pertama mendefinisikan periode backtest berdasarkan parameter input. kemudian menghitung lima jenis moving average:

  • SMA Rata-rata Gerak Sederhana
  • EMA Eksponensial Moving Average
  • TEMA Triple Exponential Moving Average
  • Rata-rata bergerak tertimbang WMA
  • HMA Hull Moving Average

Rata-rata bergerak yang sesuai digambarkan berdasarkan pemilihan.

Dengan menggabungkan berbagai jenis rata-rata bergerak, strategi dapat meluruskan data harga dan menyaring kebisingan pasar untuk menghasilkan sinyal perdagangan yang lebih dapat diandalkan.

Keuntungan

  • Menggabungkan beberapa rata-rata bergerak untuk keandalan yang lebih besar
  • Periode yang dapat disesuaikan sesuai dengan kerangka waktu perdagangan yang berbeda
  • Pertukaran rata-rata yang dinamis memungkinkan optimasi yang fleksibel
  • Mudah dan intuitif tren mengikuti cocok untuk pemula

Risiko

  • Kelewatan rata-rata bergerak dapat melewatkan titik balik tren
  • Overfitting dengan parameter tetap, kinerja rendah dalam perdagangan langsung mungkin
  • Sinyal panjang/pendek yang agresif berdampak pada efisiensi penggunaan modal

Risiko dapat dikurangi dengan:

  • Menambahkan indikator lain untuk menentukan entri dengan lebih tepat
  • Optimalisasi perdagangan riil dari parameter untuk rezim pasar yang berbeda
  • Mengoptimalkan ukuran posisi berdasarkan ukuran akun dan manajemen risiko

Peluang Peningkatan

Strategi ini dapat ditingkatkan dalam beberapa aspek:

  1. Tambahkan filter lain untuk sinyal yang lebih stabil

    contohnya indikator volume untuk menghindari penyusutan palsu tanpa konfirmasi volume.

  2. Mengoptimalkan masuk dan keluar logika

    Tetapkan saluran harga dan stop loss untuk mengurangi kerugian yang tidak perlu.

  3. Periode rata-rata bergerak dinamis

    Gunakan periode yang lebih lama dalam tren yang kuat dan periode yang lebih pendek selama konsolidasi.

  4. Meningkatkan pengelolaan uang

    Sesuaikan ukuran posisi berdasarkan penarikan dan pengambilan keuntungan.

Kesimpulan

Strategi ini menggabungkan berbagai rata-rata bergerak di seluruh kerangka waktu untuk menghasilkan tren yang relatif stabil berikut efek. Dengan ruang yang cukup untuk optimasi dalam entri, keluar, parameter dan manajemen uang, itu dapat ditingkatkan untuk kinerja dunia nyata yang lebih baik.


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

//@version=3
strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000)

qty = input(100000000, "Buy quantity")

testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")

testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin)

testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false


ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"])


len1 = input(7, minval=1, title="Period")

s=sma(close,len1)

e=ema(close,len1)


xEMA1 = ema(close, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
t = 3 * xEMA1 - 3 * xEMA2 + xEMA3


f_hma(_src, _length)=>
    _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))

h = f_hma(close, len1)

w = wma(close, len1)

ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na

buy= close>ma
sell= close<ma

alertcondition(buy, title='buy', message='buy')
alertcondition(sell, title='sell', message='sell')

ordersize=floor(strategy.equity/close)

if testPeriod()
    strategy.entry("long",strategy.long,ordersize,when=buy)
    strategy.close("long", when = sell )


    
  









Lebih banyak