Samsuga SuperTrend Strategi MACD

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

img

Ringkasan

Strategi ini menggabungkan penunjuk SuperTrend dan penunjuk MACD untuk menangkap trend kecil untuk keuntungan. Ia menggunakan penunjuk SuperTrend untuk menentukan trend pasaran semasa dan penunjuk MACD sebagai syarat tambahan untuk masuk dan keluar. Logik strategi jelas dan mudah difahami dan dilaksanakan.

Prinsip Strategi

  1. Gunakan fungsi ta.supertrend untuk mengira penunjuk SuperTrend dengan parameter untuk tempoh ATR dan faktor pengganda.
  2. Tentukan trend panjang/pendek berdasarkan perubahan arah penunjuk SuperTrend. Apabila arah berubah dari lebih besar daripada 0 kepada kurang daripada atau sama dengan 0, ia dianggap sebagai trend menaik; sebaliknya, ia dianggap sebagai trend menurun.
  3. Gunakan fungsi request.security untuk mendapatkan nilai penunjuk MACD pada jangka masa 30 minit, termasuk garis MACD, garis isyarat, dan histogram.
  4. Dalam trend menaik, jika histogram MACD lebih besar daripada 0, buka kedudukan panjang dan tutup mana-mana kedudukan pendek sebelumnya.
  5. Dalam trend menurun, jika histogram MACD kurang daripada 0, buka kedudukan pendek dan tutup mana-mana kedudukan panjang sebelumnya.

Analisis Kelebihan

  1. Menggabungkan trend berikut dan petunjuk momentum, yang membolehkannya menyesuaikan diri dengan baik dengan keadaan pasaran yang berbeza.
  2. Menggunakan indikator MACD jangka masa yang lebih lama sebagai keadaan tambahan, yang dapat menapis beberapa isyarat palsu dengan berkesan.
  3. Logik strategi adalah mudah dan lurus, mudah difahami dan dilaksanakan, sesuai untuk pemula untuk belajar.
  4. Parameter strategi boleh diselaraskan dan boleh dioptimumkan untuk pasaran dan instrumen yang berbeza.

Analisis Risiko

  1. Strategi ini boleh menghasilkan isyarat perdagangan yang kerap di pasaran yang bergolak, yang membawa kepada kekerapan perdagangan yang tinggi dan kos seluncur.
  2. Indikator SuperTrend sensitif terhadap tetapan parameter, dan nilai parameter yang berbeza mungkin menghasilkan hasil yang berbeza.
  3. Indikator MACD mungkin mengalami perbezaan dari harga, yang mengakibatkan isyarat perdagangan yang salah.
  4. Strategi ini tidak mempunyai langkah-langkah stop-loss, yang boleh mendedahkan ia kepada risiko yang lebih besar semasa kesinambungan trend yang lemah atau peristiwa yang tidak dijangka.

Arah pengoptimuman

  1. Pertimbangkan untuk menambah lebih banyak keadaan penapisan, seperti harga memecahkan tahap sokongan / rintangan yang penting, perubahan dalam jumlah dagangan, dll., Untuk meningkatkan kebolehpercayaan isyarat.
  2. Untuk pasaran yang bergelombang, pertimbangkan untuk menggunakan penunjuk MACD jangka masa yang lebih pendek atau penunjuk lain yang sesuai untuk pasaran terikat julat untuk menentukan trend.
  3. Menggabungkan langkah-langkah stop-loss, seperti stop-loss titik tetap, trailing stop-loss, dan lain-lain, untuk mengawal risiko maksimum setiap perdagangan.
  4. Mengoptimumkan parameter untuk pasaran dan instrumen yang berbeza untuk mencari kombinasi parameter yang paling sesuai.

Kesimpulan

Dengan menggabungkan penunjuk SuperTrend dan penunjuk MACD, strategi ini menangkap trend kecil sambil juga mempertimbangkan kesinambungan trend, menjadikannya strategi yang agak komprehensif dan seimbang. Kekuatan strategi ini terletak pada logiknya yang jelas, kemudahan pemahaman dan pelaksanaan, dan penggunaan penunjuk MACD jangka masa yang lebih lama sebagai syarat tambahan untuk menapis isyarat palsu dengan berkesan. Walau bagaimanapun, strategi ini juga mempunyai beberapa risiko, seperti potensi perdagangan yang kerap di pasaran yang berbelit-belit, kepekaan terhadap tetapan parameter, dan kekurangan langkah-langkah stop-loss. Untuk menangani risiko ini, penambahbaikan boleh dibuat dengan menambahkan lebih banyak keadaan penapis, mengoptimumkan parameter, menggabungkan stop-loss, dll. Secara keseluruhan, strategi ini boleh berfungsi sebagai kerangka strategi asas yang, dengan pengoptimuman dan peningkatan berterusan, 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 lanjut