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