Strategi penyeimbangan intraday long-short yang dinamis yang menggabungkan moving average dan supertrend

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

img

Tinjauan Strategi

Strategi Pengimbangan Pendek-Lenjang Intraday Dinamis Menggabungkan Moving Average dan Supertrend adalah strategi perdagangan kuantitatif yang ditulis dalam Pine ScriptTM 5. Strategi ini menggunakan indikator MACD dan indikator Supertrend untuk menangkap peluang tren di pasar, sambil mengendalikan risiko melalui switching pendek panjang dinamis dan stop-loss / take-profit.

Prinsip Strategi

Inti dari strategi ini adalah menggabungkan indikator MACD dan indikator Supertrend untuk menentukan arah tren pasar.

  1. Gunakan indikator Supertrend untuk menentukan arah tren saat ini. Ketika indikator Supertrend berubah, itu menunjukkan pembalikan tren.
  2. Gunakan histogram indikator MACD untuk menilai perubahan momentum. Ketika histogram MACD berubah dari negatif menjadi positif, itu menunjukkan peningkatan momentum naik; ketika histogram MACD berubah dari positif menjadi negatif, itu menunjukkan peningkatan momentum turun.
  3. Buka posisi panjang ketika indikator Supertrend dan indikator MACD memberikan sinyal panjang; buka posisi pendek ketika indikator Supertrend dan indikator MACD memberikan sinyal pendek.
  4. Tutup semua posisi pada waktu yang ditetapkan (seperti pukul 15:15) pada setiap hari perdagangan untuk menghindari risiko overnight.
  5. Buka kembali posisi pada hari perdagangan baru (seperti pukul 9:30) sesuai dengan indikasi indikator Supertrend dan indikator MACD.

Melalui switch long-short yang dinamis, strategi dapat beradaptasi dengan perubahan pasar dan menangkap peluang tren. Pada saat yang sama, desain posisi penutupan pada waktu yang ditetapkan juga membantu mengendalikan risiko.

Keuntungan Strategi

  1. Pelacakan tren: Dengan menggabungkan indikator Supertrend dan indikator MACD, strategi dapat secara efektif menangkap peluang tren di pasar.
  2. Pergeseran panjang-pendek dinamis: Strategi secara dinamis menyesuaikan arah posisi sesuai dengan perubahan indikator, beradaptasi dengan perubahan pasar.
  3. Pengendalian risiko: Melalui penutupan posisi waktu tetap dan beralih panjang-pendek yang dinamis, strategi dapat mengendalikan risiko dengan relatif baik.
  4. Fleksibilitas parameter: Parameter strategi (seperti periode ATR, faktor, dll.) dapat disesuaikan sesuai dengan karakteristik pasar dan preferensi pribadi, memberikan fleksibilitas tertentu.

Risiko Strategi

  1. Risiko kegagalan indikator: Dalam beberapa lingkungan pasar, indikator MACD dan indikator Supertrend dapat memberikan sinyal palsu, yang mengarah pada kegagalan strategi.
  2. Risiko optimasi parameter: Kinerja strategi tergantung pada pilihan parameter, dan parameter yang tidak tepat dapat menyebabkan kinerja strategi yang buruk.
  3. Risiko stop loss: Strategi tidak memiliki logika stop loss yang eksplisit, yang dapat menyebabkan kerugian yang signifikan dalam lingkungan pasar yang ekstrim.
  4. Risiko overnight: Meskipun strategi menutup posisi intraday, ia masih dapat menghadapi risiko gap overnight ketika membuka posisi overnight.

Arahan Optimasi

  1. Tambahkan logika stop-loss: Tambahkan logika stop-loss eksplisit ke strategi, seperti stop-loss persentase tetap atau ATR stop-loss, untuk lebih mengendalikan risiko.
  2. Optimasi parameter: Optimalkan parameter kunci strategi, seperti periode ATR, faktor, parameter MACD, dll, untuk meningkatkan ketahanan dan profitabilitas strategi.
  3. Penyaringan sinyal: Tambahkan lebih banyak kondisi penyaringan sinyal, seperti price breakout, volume perdagangan, dll, untuk meningkatkan keandalan sinyal.
  4. Pengujian multi-pasar: Uji strategi di pasar dan instrumen yang berbeda untuk mengevaluasi penerapannya dan stabilitasnya.

Ringkasan

Strategi Balancing Panjang Pendek Dinamis Intraday Combining Moving Average and Supertrend adalah strategi perdagangan yang didasarkan pada pelacakan tren dan penilaian momentum. Dengan menggabungkan indikator Supertrend dan indikator MACD dan menyesuaikan arah posisi secara dinamis, strategi dapat beradaptasi dengan perubahan pasar dan menangkap peluang tren. Pada saat yang sama, desain posisi penutupan pada waktu yang tetap juga membantu mengendalikan risiko semalam.

Namun, strategi ini juga memiliki beberapa risiko dan kekurangan, seperti risiko kegagalan indikator, risiko pengoptimalan parameter, risiko stop-loss, dll. Untuk lebih meningkatkan strategi, seseorang dapat mempertimbangkan menambahkan logika stop-loss, mengoptimalkan parameter, menambahkan lebih banyak kondisi penyaringan sinyal, dan pengujian di beberapa pasar.

Secara keseluruhan, Strategi Balancing Pendek Dinamis Intraday yang menggabungkan Moving Average dan Supertrend menyediakan cara berpikir untuk pelacakan tren dan pengendalian risiko. Dalam penerapan praktis, pedagang harus membuat penyesuaian dan optimalisasi yang sesuai untuk strategi berdasarkan preferensi risiko dan karakteristik pasar mereka sendiri, dan menggunakannya dengan hati-hati. Strategi perdagangan kuantitatif dapat memberikan ide perdagangan, tetapi pasar selalu berubah, dan tidak ada strategi yang dapat menjamin keuntungan. Investor harus memahami prinsip dan risiko strategi, mengendalikan posisi dengan wajar, secara ketat menghentikan kerugian, dan selalu tetap waspada untuk bertahan di pasar dalam 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 banyak