Strategi Trading berbasis SMA untuk BankNifty Futures

Penulis:ChaoZhang, Tanggal: 2024-03-28 18:15:32
Tag:

img

Gambaran umum

Strategi ini adalah strategi perdagangan berbasis SMA untuk BankNifty futures. Ide utama dari strategi ini adalah menggunakan SMA sebagai indikator tren, pergi panjang ketika harga melintasi di atas SMA dan pergi pendek ketika harga melintasi di bawah SMA. Pada saat yang sama, strategi ini juga menetapkan kondisi stop-loss dan take-profit untuk mengendalikan risiko dan mengunci keuntungan.

Prinsip Strategi

Inti dari strategi ini adalah menggunakan SMA sebagai indikator tren. Secara khusus, strategi pertama menghitung SMA dari periode tertentu (default adalah 200), dan kemudian menentukan arah tren berdasarkan posisi relatif harga dan SMA. Ketika harga melintasi SMA, dianggap bahwa tren naik telah terbentuk, dan posisi panjang diambil; ketika harga melintasi di bawah SMA, dianggap bahwa tren menurun telah terbentuk, dan posisi pendek diambil. Selain itu, strategi juga menetapkan kondisi stop-loss dan take-profit untuk mengendalikan risiko dan mengunci keuntungan. Kondisi stop-loss meliputi: harga menembus SMA dengan kisaran tertentu (ditentukan oleh parameter Stop Loss Buffer), harga menembus kisaran tertentu (ditentukan oleh parameter Stop Loss), dan waktu memasuki kisaran 15:00.

Keuntungan Strategi

  1. Sederhana dan mudah dimengerti: Strategi ini didasarkan pada indikator teknis klasik SMA, dengan prinsip sederhana yang mudah dimengerti dan diterapkan.
  2. Kemampuan beradaptasi yang tinggi: Strategi dapat disesuaikan dengan lingkungan pasar yang berbeda dan varietas perdagangan dengan menyesuaikan parameter.
  3. Pengendalian risiko: Strategi menetapkan beberapa kondisi stop-loss, yang dapat secara efektif mengendalikan potensi kerugian. Pada saat yang sama, pengaturan kondisi mengambil keuntungan juga membantu mengunci keuntungan tepat waktu.
  4. Pelacakan tren: SMA adalah indikator yang tertinggal, tetapi justru karena ini bahwa ia dapat dengan baik mengkonfirmasi pembentukan tren. strategi ini memanfaatkan fitur ini SMA dan dapat secara efektif menangkap tren jangka menengah dan panjang pasar.

Risiko Strategi

  1. Sensitivitas parameter: Kinerja strategi ini sangat tergantung pada pilihan parameter, dan pengaturan parameter yang berbeda dapat menyebabkan hasil yang sangat berbeda.
  2. Pasar berosilasi: Di pasar berosilasi, harga sering melintasi di atas dan di bawah SMA, yang dapat menyebabkan perdagangan strategi yang sering, sehingga meningkatkan biaya transaksi dan risiko.
  3. Pembalikan tren: Ketika tren pasar berbalik, strategi dapat bereaksi dengan penundaan, yang mengarah pada potensi kerugian.
  4. Volatilitas intraday: Strategi dapat memicu sinyal perdagangan kapan saja selama sesi perdagangan, dan volatilitas intraday BankNifty futures mungkin relatif besar, yang dapat menyebabkan slippage yang lebih besar dan potensi kerugian.

Arah Optimasi Strategi

  1. Optimasi parameter: Pengaturan parameter yang paling cocok untuk lingkungan pasar saat ini dapat ditemukan dengan melakukan backtesting dan mengoptimalkan kombinasi parameter yang berbeda.
  2. Kombinasi dengan indikator lain: Pertimbangkan untuk menggabungkan SMA dengan indikator teknis lainnya (seperti RSI, MACD, dll.) untuk meningkatkan keandalan dan akurasi strategi.
  3. Stop loss dinamis: Pertimbangkan untuk mengadopsi strategi stop loss dinamis (seperti trailing stop loss) untuk mengendalikan risiko dengan lebih baik.
  4. Membatasi waktu perdagangan: Pertimbangkan untuk membatasi waktu perdagangan ke periode dengan volatilitas yang lebih kecil (seperti sebelum dan setelah pembukaan dan penutupan) untuk mengurangi dampak volatilitas intraday.

Ringkasan

Strategi ini adalah strategi perdagangan sederhana berdasarkan SMA, cocok untuk BankNifty futures. Keuntungannya terletak pada prinsip sederhana, kemampuan beradaptasi yang kuat, dan langkah-langkah pengendalian risiko. Namun, dalam aplikasi praktis, perhatian masih perlu diberikan kepada risiko potensial seperti optimasi parameter, pasar osilasi, pembalikan tren, dan volatilitas intraday.


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

//@version=5
strategy("Strategy BankNifty SMA", overlay=true, margin_long=100, margin_short=100)

src = input(close, title="Source")
timeFrame = input.timeframe(defval='5', title = "Select Chart Timeframe")
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
len = input.int(200, minval=1, title="Length", step = 10)
alertPrecision = input.float(0, "Alert Precision", minval = 0, maxval = 50, step=1)
slTimeFrame = input.timeframe(defval='1', title = "Select Stoploss Candle Timeframe")
slBuffer = input.float(0, "Stop Loss Buffer", minval = 0, maxval = 50, step = 1)
targetSlab = input.float(150, "Target Price", minval = 1, maxval = 2000, step = 10)
Stoploss  = input.float(20, "Stop Loss", minval = 1, maxval = 2000, step = 5)
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)

//out = ta.sma(src, len)


ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

tfSource = request.security(syminfo.tickerid, timeFrame, src, barmerge.gaps_on, barmerge.lookahead_off)
mySMA = ma(tfSource, len, typeMA)
plot(mySMA, color=color.rgb(243, 33, 89), title="MA", offset=offset, linewidth = 2)

slClose = request.security(syminfo.tickerid, slTimeFrame, src, barmerge.gaps_on, barmerge.lookahead_off)


highTravel = low > mySMA
lowTravel = high < mySMA

touchabove = (((high[1] + alertPrecision) > mySMA[1]) and (low[1] < mySMA[1])) //and (high[2] < mySMA[2])
touchbelow = (((low[1] - alertPrecision) < mySMA[1]) and (high[1] > mySMA[1])) //and (low[2] > mySMA[2])

crossabove = math.min(open, close) > mySMA
crossbelow = math.max(open, close) < mySMA

upalert = (touchabove or touchbelow) and crossabove
downalert = (touchabove or touchbelow) and crossbelow

h=hour(time('1'),"Asia/Kolkata")
m=minute(time('1'),"Asia/Kolkata")
startTime=h*100+m

if upalert and strategy.position_size == 0 
    strategy.entry("buy", strategy.long, 15)
    
if downalert and strategy.position_size == 0
    strategy.entry("sell", strategy.short, 15)

longexit = (slClose < (mySMA - slBuffer)) or (slClose < (strategy.opentrades.entry_price(strategy.opentrades - 1) - Stoploss)) or (slClose > (strategy.opentrades.entry_price(strategy.opentrades - 1) + targetSlab)) or (hour(time) == 15)
shortexit = (slClose > (mySMA + slBuffer)) or (slClose > (strategy.opentrades.entry_price(strategy.opentrades - 1) + Stoploss)) or (slClose < (strategy.opentrades.entry_price(strategy.opentrades - 1) - targetSlab)) or (hour(time) == 15)

if longexit
    strategy.close("buy")

if shortexit
    strategy.close("sell")


Lebih banyak