Strategi Perdagangan berasaskan SMA untuk BankNifty Futures

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

img

Ringkasan

Strategi ini adalah strategi dagangan berasaskan SMA untuk niaga hadapan BankNifty. Idea utama strategi ini adalah menggunakan SMA sebagai penunjuk trend, pergi lama apabila harga melintasi di atas SMA dan pergi pendek apabila harga melintasi di bawah SMA. Pada masa yang sama, strategi ini juga menetapkan syarat berhenti rugi dan mengambil keuntungan untuk mengawal risiko dan mengunci keuntungan.

Prinsip Strategi

Inti strategi ini adalah menggunakan SMA sebagai penunjuk trend. Secara khusus, strategi ini mula-mula mengira SMA tempoh tertentu (peguamannya adalah 200), dan kemudian menentukan arah trend berdasarkan kedudukan relatif harga dan SMA. Apabila harga melintasi di atas SMA, ia dianggap bahawa trend menaik telah terbentuk, dan kedudukan panjang diambil; apabila harga melintasi di bawah SMA, ia dianggap bahawa trend menurun telah terbentuk, dan kedudukan pendek diambil. Di samping itu, strategi ini juga menetapkan syarat stop-loss dan take-profit untuk mengawal risiko dan mengunci keuntungan. Syarat-syarat stop-loss termasuk: harga memecahkan SMA dengan julat tertentu (ditentukan oleh parameter Stop Loss Buffer), harga memecahkan julat tertentu (ditentukan oleh parameter Stop Loss), dan harga memasuki jangka masa 15:00.

Kelebihan Strategi

  1. Sederhana dan mudah difahami: Strategi ini berdasarkan kepada petunjuk teknikal klasik SMA, dengan prinsip yang mudah difahami dan dilaksanakan.
  2. Kemudahan penyesuaian yang tinggi: Strategi boleh disesuaikan dengan persekitaran pasaran dan jenis perdagangan yang berbeza dengan menyesuaikan parameter.
  3. Kawalan risiko: Strategi menetapkan beberapa syarat berhenti rugi, yang dapat mengawal kerugian berpotensi dengan berkesan. Pada masa yang sama, menetapkan syarat mengambil keuntungan juga membantu mengunci keuntungan tepat pada masanya.
  4. Pengesanan trend: SMA adalah penunjuk yang ketinggalan, tetapi tepat kerana ini ia dapat mengesahkan pembentukan trend. Strategi ini menggunakan ciri SMA ini dan dapat menangkap dengan berkesan trend jangka menengah dan panjang pasaran.

Risiko Strategi

  1. Sensitiviti parameter: Prestasi strategi ini sebahagian besarnya bergantung pada pilihan parameter, dan tetapan parameter yang berbeza boleh membawa kepada hasil yang sangat berbeza.
  2. Pasaran berayun: Di pasaran berayun, harga sering melintasi di atas dan di bawah SMA, yang boleh membawa kepada perdagangan strategi yang kerap, dengan itu meningkatkan kos dan risiko transaksi.
  3. Pembalikan trend: Apabila trend pasaran berbalik, strategi boleh bertindak balas dengan kelewatan, yang membawa kepada potensi kerugian.
  4. Volatiliti intraday: Strategi ini boleh mencetuskan isyarat dagangan pada bila-bila masa semasa sesi dagangan, dan volatiliti intraday niaga hadapan BankNifty mungkin agak besar, yang boleh membawa kepada pergeseran yang lebih besar dan potensi kerugian.

Arahan Pengoptimuman Strategi

  1. Pengoptimuman parameter: Tetapan parameter yang paling sesuai untuk persekitaran pasaran semasa boleh dijumpai dengan backtesting dan mengoptimumkan kombinasi parameter yang berbeza.
  2. Menggabungkan dengan penunjuk lain: Pertimbangkan untuk menggabungkan SMA dengan penunjuk teknikal lain (seperti RSI, MACD, dan lain-lain) untuk meningkatkan kebolehpercayaan dan ketepatan strategi.
  3. Stop-loss dinamik: Pertimbangkan untuk menggunakan strategi stop-loss dinamik (seperti trailing stop-loss) untuk mengawal risiko dengan lebih baik.
  4. Mengehadkan masa dagangan: Pertimbangkan untuk mengehadkan masa dagangan kepada tempoh dengan turun naik yang lebih rendah (seperti sebelum dan selepas pembukaan dan penutupan) untuk mengurangkan kesan turun naik intraday.

Ringkasan

Strategi ini adalah strategi dagangan yang mudah berdasarkan SMA, sesuai untuk niaga hadapan BankNifty. Kelebihannya terletak pada prinsipnya yang mudah, kemampuan beradaptasi yang kuat, dan langkah-langkah kawalan risiko. Walau bagaimanapun, dalam aplikasi praktikal, perhatian masih perlu dibayar kepada risiko berpotensi seperti pengoptimuman parameter, pasaran berayun, pembalikan trend, dan turun naik 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 lanjut