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