Strategi Kawalan Risiko Berdasarkan Super Trend dan MACD


Tarikh penciptaan: 2024-03-11 11:24:20 Akhirnya diubah suai: 2024-03-11 11:24:20
Salin: 0 Bilangan klik: 699
1
fokus pada
1617
Pengikut

Strategi Kawalan Risiko Berdasarkan Super Trend dan MACD

Gambaran keseluruhan

Strategi ini menggabungkan indikator supertrend dan MACD untuk mendapatkan keuntungan dengan menangkap trend kecil. Strategi ini menggunakan indikator supertrend untuk menilai trend pasaran semasa, sambil menggunakan indikator MACD sebagai syarat tambahan untuk masuk dan keluar.

Prinsip Strategi

  1. Fungsi ta.supertrend digunakan untuk mengira indikator supertrend dengan parameter ATR dan faktor pengganda.
  2. Trend multirole dinilai berdasarkan perubahan arah dalam indikator trend super, apabila arah berubah dari lebih besar daripada 0 menjadi kurang daripada sama dengan 0, ia dianggap sebagai trend naik; sebaliknya, ia dianggap sebagai trend menurun.
  3. Menggunakan fungsi request.security untuk mendapatkan nilai penunjuk MACD dalam kitaran 30 minit, termasuk garis MACD, garis isyarat dan carta tiang.
  4. Dalam trend ke atas, jika MACD lebih besar daripada 0, anda boleh membuka lebih banyak kedudukan dan menghapuskan kedudukan kosong sebelumnya.
  5. Dalam trend turun, jika MACD kurang daripada 0, anda boleh membuka kedudukan kosong dan juga melonggarkan kedudukan yang lebih tinggi.

Analisis kelebihan

  1. Gabungan trend tracking dan indikator momentum membolehkan anda menyesuaikan diri dengan keadaan pasaran yang berbeza.
  2. Menggunakan indikator MACD yang lebih lama sebagai syarat tambahan, ia dapat menyaring beberapa isyarat palsu dengan berkesan.
  3. Strategi logiknya mudah difahami, mudah difahami dan dilaksanakan, sesuai untuk pelajar pemula.
  4. Parameter strategi boleh disesuaikan dan boleh dioptimumkan mengikut pasaran dan varieti yang berbeza.

Analisis risiko

  1. Strategi: Lebih banyak isyarat dagangan mungkin berlaku dalam pasaran yang bergolak, yang menyebabkan lebih banyak dagangan dan kos slippage yang tinggi.
  2. Indeks Super Trend lebih sensitif terhadap parameter, dan parameter yang berbeza mungkin memberikan hasil yang berbeza.
  3. Indeks MACD mungkin berlaku dalam keadaan yang tidak selaras dengan harga, menyebabkan isyarat perdagangan yang salah.
  4. Strategi kekurangan langkah-langkah untuk menghentikan kerugian, yang mungkin membawa risiko yang lebih besar jika keadaan tidak stabil atau berlaku secara tiba-tiba.

Arah pengoptimuman

  1. Untuk meningkatkan kebolehpercayaan isyarat, lebih banyak syarat penapis boleh dipertimbangkan, seperti harga menembusi sokongan atau rintangan penting, perubahan jumlah perdagangan, dan sebagainya.
  2. Untuk pasaran goyah, anda boleh mempertimbangkan untuk menggunakan indikator MACD yang lebih pendek atau indikator lain yang sesuai untuk pasaran goyah untuk menilai trend.
  3. Langkah-langkah hentikan kerugian, seperti hentikan titik tetap, hentikan bergerak, dan lain-lain boleh ditambah untuk mengawal risiko maksimum dalam satu perdagangan.
  4. Anda boleh mengoptimumkan parameter untuk pasaran dan varieti yang berbeza untuk mencari kombinasi parameter yang paling sesuai.

ringkaskan

Strategi ini adalah strategi yang lebih komprehensif dan seimbang dengan menggabungkan indikator supertrend dan indikator MACD, yang juga mempertimbangkan kesinambungan trend sambil menangkap trend kecil. Kelebihan strategi ini adalah jelas logiknya, mudah difahami dan dilaksanakan, dan dengan menggunakan indikator MACD yang lebih lama sebagai syarat tambahan, beberapa isyarat palsu dapat disaring dengan berkesan. Tetapi strategi ini juga mempunyai beberapa risiko, seperti kemungkinan perdagangan yang kerap dalam pasaran yang bergolak, lebih sensitif terhadap parameter, dan kurangnya langkah-langkah berhenti.

Kod 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")