Strategi penyeimbangan jangka pendek intraday dinamik yang menggabungkan purata bergerak dan supertrend

Penulis:ChaoZhang, Tarikh: 2024-03-11 11:33:47
Tag:

img

Ringkasan Strategi

Strategi Keseimbangan Pendek-Lenjang Dinamik Intraday yang menggabungkan Purata Bergerak dan Supertrend adalah strategi perdagangan kuantitatif yang ditulis dalam Pine Script TM 5. Strategi ini menggunakan penunjuk MACD dan penunjuk Supertrend untuk menangkap peluang trend di pasaran, sambil mengawal risiko melalui pertukaran pendek panjang dinamik dan stop-loss / take-profit.

Prinsip Strategi

Inti strategi ini adalah menggabungkan penunjuk MACD dan penunjuk Supertrend untuk menentukan arah trend pasaran.

  1. Gunakan penunjuk Supertrend untuk menentukan arah trend semasa. Apabila penunjuk Supertrend berubah, ia menunjukkan pembalikan trend.
  2. Gunakan histogram penunjuk MACD untuk menilai perubahan momentum. Apabila histogram MACD berubah dari negatif kepada positif, ia menunjukkan peningkatan momentum menaik; apabila histogram MACD berubah dari positif kepada negatif, ia menunjukkan peningkatan momentum menurun.
  3. Buka kedudukan panjang apabila kedua-dua penunjuk Supertrend dan penunjuk MACD memberikan isyarat panjang; buka kedudukan pendek apabila kedua-dua penunjuk Supertrend dan penunjuk MACD memberikan isyarat pendek.
  4. Tutup semua kedudukan pada masa yang ditetapkan (seperti 15:15) pada setiap hari perdagangan untuk mengelakkan risiko semalam.
  5. Buka semula kedudukan pada hari dagangan baru (seperti 9:30) mengikut petunjuk penunjuk Supertrend dan penunjuk MACD.

Melalui pertukaran panjang-pendek yang dinamik, strategi dapat menyesuaikan diri dengan perubahan di pasaran dan menangkap peluang trend. Pada masa yang sama, reka bentuk kedudukan penutupan pada masa yang tetap juga membantu mengawal risiko.

Kelebihan Strategi

  1. Pengesanan trend: Dengan menggabungkan penunjuk Supertrend dan penunjuk MACD, strategi dapat menangkap peluang trend di pasaran dengan berkesan.
  2. Pemindahan panjang-pendek dinamik: Strategi secara dinamik menyesuaikan arah kedudukan mengikut perubahan dalam penunjuk, menyesuaikan diri dengan perubahan pasaran.
  3. Kawalan risiko: Melalui penutupan kedudukan masa tetap dan pertukaran pendek panjang dinamik, strategi dapat mengawal risiko dengan agak baik.
  4. Fleksibiliti parameter: Parameter strategi (seperti tempoh ATR, faktor, dll.) boleh disesuaikan mengikut ciri pasaran dan pilihan peribadi, memberikan fleksibiliti tertentu.

Risiko Strategi

  1. Risiko kegagalan penunjuk: Dalam beberapa persekitaran pasaran, penunjuk MACD dan penunjuk Supertrend boleh memberikan isyarat palsu, yang membawa kepada kegagalan strategi.
  2. Risiko pengoptimuman parameter: Prestasi strategi bergantung kepada pilihan parameter, dan parameter yang tidak sesuai boleh menyebabkan prestasi strategi yang buruk.
  3. Risiko stop-loss: Strategi tidak mempunyai logik stop-loss yang jelas, yang boleh membawa kepada kerugian yang ketara dalam persekitaran pasaran yang melampau.
  4. Risiko overnight: Walaupun strategi menutup kedudukan intraday, ia masih boleh menghadapi risiko jurang overnight apabila membuka kedudukan overnight.

Arahan pengoptimuman

  1. Tambah logik stop-loss: Tambah logik stop-loss yang jelas kepada strategi, seperti stop-loss peratusan tetap atau ATR stop-loss, untuk mengawal risiko lebih lanjut.
  2. Pengoptimuman parameter: Mengoptimumkan parameter utama strategi, seperti tempoh ATR, faktor, parameter MACD, dan lain-lain, untuk meningkatkan ketahanan dan keuntungan strategi.
  3. Penapisan isyarat: Tambah lebih banyak keadaan penapisan isyarat, seperti penembusan harga, jumlah dagangan, dll., untuk meningkatkan kebolehpercayaan isyarat.
  4. Ujian pelbagai pasaran: Uji strategi di pasaran dan instrumen yang berbeza untuk menilai penerapannya dan kestabihannya.

Ringkasan

Strategi Keseimbangan Pendek Dinamis Intraday Menggabungkan Purata Bergerak dan Supertrend adalah strategi perdagangan berdasarkan penjejakan trend dan penghakiman momentum. Dengan menggabungkan penunjuk Supertrend dan penunjuk MACD dan menyesuaikan arah kedudukan secara dinamik, strategi dapat menyesuaikan diri dengan perubahan di pasaran dan menangkap peluang trend.

Walau bagaimanapun, strategi ini juga mempunyai beberapa risiko dan kekurangan, seperti risiko kegagalan penunjuk, risiko pengoptimuman parameter, risiko stop-loss, dll. Untuk meningkatkan lagi strategi, seseorang boleh mempertimbangkan menambah logik stop-loss, mengoptimumkan parameter, menambah lebih banyak keadaan penapisan isyarat, dan ujian di pelbagai pasaran.

Secara keseluruhannya, Strategi Keseimbangan Panjang Dinamis Intraday yang menggabungkan Purata Bergerak dan Supertrend menyediakan cara berfikir untuk mengesan trend dan kawalan risiko. Dalam aplikasi praktikal, peniaga harus membuat penyesuaian dan pengoptimuman yang sesuai kepada strategi berdasarkan pilihan risiko dan ciri pasaran mereka sendiri, dan menggunakannya dengan berhati-hati. Strategi perdagangan kuantitatif boleh memberikan idea perdagangan, tetapi pasaran sentiasa berubah, dan tidak ada strategi yang dapat menjamin keuntungan. Pelabur mesti memahami prinsip dan risiko strategi, mengawal kedudukan dengan munasabah, menghentikan kerugian dengan ketat, dan sentiasa berjaga-jaga untuk bertahan di pasaran untuk jangka panjang.


/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © smj31071995

//@version=5
strategy("EQ - INTRA - Samsuga supertrend prod", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick = false)


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

[supertrend, direction] =request.security(symbol = syminfo.tickerid, timeframe = st_tf,expression =  ta.supertrend(factor, atrPeriod),lookahead=barmerge.lookahead_on)

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 = 2
macdp2=8
macdp3=4

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = macd_tf,expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
timezone_input = input("Asia/Kolkata", title="Timezone")
// log.info(timezone_input)
if(hour==15 and minute==15)
    strategy.close_all(comment = "DAY EXIT",alert_message = "X-D")
else if(hour==9 and minute==30)
    if(longcondition or histLine[1]>0)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "DL",alert_message = "L")
    else if(shortCondition or histLine[1]<0) 
        strategy.entry(id= "Short", direction=strategy.short,  comment = "DS",alert_message = "S")
else
    if(longcondition)
        strategy.close("Short",comment = "X-S", alert_message = "X-S")
        if(histLine[1]>0)    
            strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
    else if(shortCondition) 
        strategy.close("Long",comment = "X-L",alert_message = "X-L")
        if(histLine[1]<0)    
            strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")


// 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-----------------////////////////



Lebih lanjut