Strategi Waktu Rata-rata Pergerakan Diferensial Osilator


Tanggal Pembuatan: 2023-12-26 14:40:12 Akhirnya memodifikasi: 2023-12-26 14:40:12
menyalin: 0 Jumlah klik: 654
1
fokus pada
1621
Pengikut

Strategi Waktu Rata-rata Pergerakan Diferensial Osilator

Ringkasan

Strategi ini membentuk oscillator MACD dengan menghitung diferensial EMA garis cepat dan EMA garis lambat, kemudian membentuk garis sinyal dengan menghitung garis rata MACD, sehingga membangun sistem filter ganda. Ketika garis MACD melintasi garis sinyal dari bawah menghasilkan sinyal beli, ketika garis MACD melintasi garis sinyal dari atas ke bawah menghasilkan sinyal jual, memanfaatkan fluktuasi jangka pendek dan menengah harga.

Prinsip Strategi

Indikator utama dari strategi ini adalah oscillator MACD, yang dihitung dari EMA garis cepat ((biasanya disetel pada 12 hari EMA) dikurangi EMA garis lambat ((biasanya disetel pada 26 hari EMA)). EMA garis cepat lebih sensitif dan dapat menangkap fluktuasi harga dalam jangka pendek; EMA garis lambat lebih lambat dalam merespons perubahan harga. Keduanya berkurang untuk membentuk oscillator yang mewakili nilai perubahan harga dalam jangka pendek dan menengah.

Strategi ini mengatur parameter input masing-masing sebagai panjang garis cepat, panjang garis lambat, sumber harga, panjang garis sinyal dan siklus kelancaran. Parameter dapat disesuaikan sesuai dengan pasar yang berbeda untuk mencari kombinasi parameter terbaik.

Analisis Keunggulan

  1. Indikator MACD klasik dan mudah dimengerti, dapat secara efektif menangkap peluang terbalik jangka pendek dan menengah.

  2. Sistem MACD yang dibangun dengan dua EMA memiliki kelancaran yang lebih baik dibandingkan dengan sistem MA tunggal.

  3. Ada banyak parameter yang dapat disesuaikan dan dapat dioptimalkan untuk pasar yang berbeda.

  4. Indikator massa lalu lintas gabungan dapat mengidentifikasi sinyal berkualitas tinggi.

Analisis risiko

  1. Dalam situasi goncangan, indikator MACD akan menghasilkan lebih banyak sinyal yang salah.

  2. Tidak bisa menilai tren, mungkin ada kerugian jika berselisih dengan tren.

  3. Keterbatasan jangka waktu deteksi mungkin mengabaikan situasi ekstrim.

  4. Pengaturan parameter memerlukan lebih banyak data pasar untuk dioptimalkan, atau mungkin overfit segmen pasar tertentu.

Mengontrol risiko dengan menggabungkan indikator penilaian tren, mengatur mekanisme stop loss. Sementara memperluas jangkauan pengukuran ulang dan ruang sampel pasar untuk optimasi parameter.

Arah optimasi

  1. Uji sumber harga yang berbeda, seperti harga penutupan, harga rata-rata, dan harga reset.

  2. Mencari kombinasi parameter terbaik berdasarkan lebih banyak data historis.

  3. Terintegrasi dengan indikator lain untuk menilai kualitas sinyal. Misalnya, sinyal lalu lintas.

  4. Menghindari konflik besar dengan tren, dengan mengkombinasikan penilaian tren dan gelombang.

Meringkaskan

Strategi ini merupakan strategi pilihan waktu klasik dan praktis dengan membangun filter EMA ganda, menangkap fenomena terbalik dari siklus garis pendek dalam harga. Risiko dapat dikontrol melalui pengoptimalan parameter, pemfilteran sinyal, dan alat penghentian kerugian.

Kode Sumber Strategi
/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="MACD Histogram Backtest", shorttitle="MACD")

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

grow = (hist[1] < hist)
fall = (hist[1] > hist) and hist >= 0
stop = (hist[1] > hist)

plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)

//Strategy Testing

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

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

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

//Entry and Close settings
if testPeriod() 
    strategy.entry("grow", true, 10, when = grow, limit = close)
    strategy.close("grow", when = fall)
    strategy.close("grow", when = stop)
    
//if testPeriod() 
//   strategy.entry("fall", false, 1000, when = fall, limit = close)
//    strategy.close("fall", when = grow)