Samsuga SuperTrend Strategi MACD

Penulis:ChaoZhang, Tanggal: 2024-03-11 11:24:20
Tag:

img

Gambaran umum

Strategi ini menggabungkan indikator SuperTrend dan indikator MACD untuk menangkap tren kecil untuk keuntungan. Ini menggunakan indikator SuperTrend untuk menentukan tren pasar saat ini dan indikator MACD sebagai kondisi tambahan untuk masuk dan keluar. Logika strategi jelas dan mudah dipahami dan diimplementasikan.

Prinsip Strategi

  1. Gunakan fungsi ta.supertrend untuk menghitung indikator SuperTrend dengan parameter untuk periode ATR dan faktor multiplier.
  2. Tentukan tren panjang/pendek berdasarkan perubahan arah indikator SuperTrend. Ketika arah berubah dari lebih besar dari 0 menjadi kurang dari atau sama dengan 0, itu dianggap sebagai tren naik; jika tidak, itu dianggap sebagai tren turun.
  3. Gunakan fungsi request.security untuk mendapatkan nilai indikator MACD pada jangka waktu 30 menit, termasuk garis MACD, garis sinyal, dan histogram.
  4. Dalam tren naik, jika histogram MACD lebih besar dari 0, buka posisi panjang dan tutup posisi pendek sebelumnya.
  5. Dalam tren penurunan, jika histogram MACD kurang dari 0, buka posisi pendek dan tutup posisi panjang sebelumnya.

Analisis Keuntungan

  1. Menggabungkan indikator trend dan momentum, yang memungkinkan untuk beradaptasi dengan baik dengan kondisi pasar yang berbeda.
  2. Menggunakan indikator MACD jangka panjang sebagai kondisi tambahan, yang dapat secara efektif menyaring beberapa sinyal palsu.
  3. Logika strategi sederhana dan langsung, mudah dimengerti dan diterapkan, cocok untuk pemula untuk belajar.
  4. Parameter strategi dapat disesuaikan dan dapat dioptimalkan untuk pasar dan instrumen yang berbeda.

Analisis Risiko

  1. Strategi ini dapat menghasilkan sinyal perdagangan yang sering di pasar yang bergolak, yang mengarah pada frekuensi perdagangan yang tinggi dan biaya slippage.
  2. Indikator SuperTrend sensitif terhadap pengaturan parameter, dan nilai parameter yang berbeda dapat menghasilkan hasil yang berbeda.
  3. Indikator MACD mungkin mengalami perbedaan dari harga, yang mengakibatkan sinyal perdagangan yang salah.
  4. Strategi ini tidak memiliki langkah-langkah stop-loss, yang dapat mengeksposnya pada risiko yang lebih besar selama kontinuitas tren yang lemah atau peristiwa tak terduga.

Arah Optimalisasi

  1. Pertimbangkan untuk menambahkan lebih banyak kondisi penyaringan, seperti harga melewati level support/resistance yang penting, perubahan volume perdagangan, dll., untuk meningkatkan keandalan sinyal.
  2. Untuk pasar yang bergolak, pertimbangkan untuk menggunakan indikator MACD jangka waktu yang lebih pendek atau indikator lain yang cocok untuk pasar yang terikat rentang untuk menentukan tren.
  3. Menggabungkan langkah-langkah stop-loss, seperti stop-loss titik tetap, trailing stop-loss, dll, untuk mengontrol risiko maksimum per perdagangan.
  4. Mengoptimalkan parameter untuk pasar dan instrumen yang berbeda untuk menemukan kombinasi parameter yang paling cocok.

Kesimpulan

Dengan menggabungkan indikator SuperTrend dan indikator MACD, strategi ini menangkap tren kecil sambil juga mempertimbangkan kesinambungan tren, menjadikannya strategi yang relatif komprehensif dan seimbang. Kekuatan strategi ini terletak pada logika yang jelas, kemudahan pemahaman dan implementasi, dan penggunaan indikator MACD jangka waktu yang lebih lama sebagai kondisi tambahan untuk secara efektif menyaring sinyal palsu. Namun, strategi ini juga memiliki beberapa risiko, seperti potensi perdagangan yang sering terjadi di pasar yang berbelit-belit, sensitivitas terhadap pengaturan parameter, dan kurangnya langkah-langkah stop-loss. Untuk mengatasi risiko ini, perbaikan dapat dilakukan dengan menambahkan lebih banyak kondisi penyaring, mengoptimalkan parameter, menggabungkan stop-loss, dll. Secara keseluruhan, strategi ini dapat berfungsi sebagai kerangka strategi dasar yang, dengan optimasi dan perbaikan terus-menerus, berpotensi menjadi strategi yang menguntungkan secara konsisten.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Samsuga supertrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


atrPeriod = input.int(7,    "ATR Length", minval = 1)
factor =    input.float(1.0, "Factor",     minval = 0.01, step = 0.01)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

supertrend := barstate.isfirst ? na : supertrend
upTrend =    plot(direction <= 0 ? supertrend : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend =  plot(direction <= 0 ? na : supertrend, "Down Trend", color = color.red,   style = plot.style_linebr)
bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)
longcondition = direction[1] > direction 
shortCondition = direction[1] < direction 

macdp1 = 3
macdp2=10
macdp3=6

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = "30",expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// plot(macdLine,   title = "MACD",   color = #2962FF)
// plot(signalLine, title = "Signal", color = #FF6D00)
// 8, 21, 5
// 8,13,9
// 12,26,9
//  1--> 3, 17, 5
// 3, 10, 16
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
//  /////////----------------METHOD 1-----------------////////////////
// if(longcondition)
//     if(strategy.opentrades>0)
//         strategy.close("Long","Prev Exit", immediately = true)
//     if( histLine[0] > 0.1)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long")

    
// else if(shortCondition and strategy.openprofit<=0.1) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 2-----------------////////////////
// if(longcondition)
//     if(histLine[0] > 0)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long" )
//         strategy.exit("Long", loss = close*0.2)


    
// else if(shortCondition ) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 3-----------------////////////////
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
if(longcondition)
    if(histLine[0] > 0)    
        strategy.close("Short",comment = "E-S", alert_message = "E-S",disable_alert = true)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
else if(shortCondition) 
    if(histLine[0] < 0)    
        strategy.close("Long",comment = "E-L",alert_message = "E-L",disable_alert = true)
        strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")

Lebih banyak