Strategi Pengendalian Risiko Berdasarkan Super Trend dan MACD


Tanggal Pembuatan: 2024-03-11 11:24:20 Akhirnya memodifikasi: 2024-03-11 11:24:20
menyalin: 0 Jumlah klik: 699
1
fokus pada
1617
Pengikut

Strategi Pengendalian Risiko Berdasarkan Super Trend dan MACD

Ringkasan

Strategi ini menggabungkan indikator supertrend dan MACD untuk mendapatkan keuntungan dengan menangkap tren kecil. Strategi ini menggunakan indikator supertrend untuk menilai tren pasar saat ini, sementara menggunakan indikator MACD sebagai kondisi tambahan untuk masuk dan keluar.

Prinsip Strategi

  1. Fungsi ta.supertrend digunakan untuk menghitung indikator supertrend dengan parameter ATR dan faktor perkalian.
  2. Sebuah tren polyvalent dinilai berdasarkan perubahan arah indikator supertrend. Ketika arah berubah dari lebih besar dari 0 menjadi lebih kecil dari 0 maka dianggap sebagai tren naik; sebaliknya, dianggap sebagai tren turun.
  3. Gunakan fungsi request.security untuk mendapatkan nilai indikator MACD dalam periode 30 menit, termasuk garis MACD, garis sinyal, dan grafik pilar.
  4. Dalam tren naik, jika MACD lebih besar dari 0, maka posisi terbuka akan dibuka, sementara posisi kosong sebelumnya akan dihapus.
  5. Dalam tren turun, jika MACD lebih kecil dari 0, maka posisi kosong akan dibuka, sementara posisi lebih tinggi sebelumnya akan dihapus.

Analisis Keunggulan

  1. Kombinasi dari trend tracking dan momentum indicator, dapat lebih baik beradaptasi dengan kondisi pasar yang berbeda.
  2. Dengan menggunakan indikator MACD dengan periode yang lebih lama sebagai kondisi tambahan, beberapa sinyal palsu dapat disaring secara efektif.
  3. Strategi logisnya sederhana, mudah dimengerti dan diterapkan, cocok untuk pemula.
  4. Parameter strategi dapat disesuaikan dan dapat dioptimalkan untuk berbagai pasar dan varietas.

Analisis risiko

  1. Strategi: Lebih banyak sinyal perdagangan dapat muncul di pasar yang bergoyang, yang menyebabkan lebih banyak perdagangan dan biaya titik geser yang tinggi.
  2. Indikator supertrend sangat sensitif terhadap parameter, dan pengaturan parameter yang berbeda dapat menghasilkan hasil yang berbeda.
  3. Indikator MACD mungkin akan bergeser dari harga, yang menyebabkan sinyal perdagangan yang salah.
  4. Strategi ini tidak memiliki langkah-langkah penghentian kerugian, yang dapat menimbulkan risiko yang lebih besar jika terjadi insiden yang tidak stabil atau tidak terduga.

Arah optimasi

  1. Anda dapat mempertimbangkan untuk menambahkan lebih banyak kondisi penyaringan, seperti harga yang menembus titik dukungan atau resistensi penting, perubahan volume perdagangan, dan lain-lain, untuk meningkatkan keandalan sinyal.
  2. Untuk pasar bergoyang, pertimbangkan untuk menggunakan indikator MACD dengan periode yang lebih pendek atau indikator lain yang sesuai untuk pasar bergoyang untuk menilai tren.
  3. Langkah-langkah stop loss, seperti stop loss tetap, stop loss bergerak, dan lain-lain, dapat ditambahkan untuk mengendalikan risiko maksimum dalam satu transaksi.
  4. Ada beberapa cara untuk mengoptimalkan parameter untuk pasar dan varietas yang berbeda, untuk menemukan kombinasi yang paling sesuai.

Meringkaskan

Strategi ini adalah strategi yang lebih komprehensif dan seimbang dengan menggabungkan indikator supertrend dan MACD, yang juga mempertimbangkan kesinambungan tren saat menangkap tren kecil. Keunggulan strategi ini adalah kejelasannya yang logis, mudah dimengerti dan diimplementasikan, dan beberapa sinyal palsu dapat disaring secara efektif dengan menggunakan indikator MACD dengan siklus yang lebih lama sebagai kondisi tambahan. Namun, strategi ini juga memiliki beberapa risiko, seperti kemungkinan perdagangan yang sering terjadi di pasar yang bergolak, pengaturan parameter yang lebih sensitif, dan kurangnya langkah-langkah stop loss.

Kode Sumber Strategi
/*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")