
यह रणनीति एक सरल चलती औसत (एसएमए) पर आधारित बैंकनिफ्टी फ्यूचर ट्रेडिंग रणनीति है। रणनीति का मुख्य विचार एसएमए का उपयोग एक रुझान संकेतक के रूप में करना है, जब कीमत एसएमए को पार करती है तो अधिक करती है, और जब कीमत एसएमए को पार करती है तो शून्य करती है। साथ ही, यह रणनीति जोखिम को नियंत्रित करने और मुनाफे को लॉक करने के लिए स्टॉप और स्टॉप शर्तों को भी सेट करती है।
इस रणनीति का मूल एसएमए को एक प्रवृत्ति सूचक के रूप में उपयोग करना है। विशेष रूप से, रणनीति पहले एक निर्दिष्ट अवधि के एसएमए की गणना करती है (डिफ़ॉल्ट 200) और फिर एसएमए के सापेक्ष स्थान के आधार पर प्रवृत्ति की दिशा का न्याय करती है। जब कीमत एसएमए से ऊपर जाती है, तो यह माना जाता है कि एक ऊंची प्रवृत्ति बनाई गई है, इस समय अधिक करें; जब कीमत एसएमए से नीचे जाती है, तो यह माना जाता है कि एक गिरावट की प्रवृत्ति बनाई गई है, इस समय खाली करें। इसके अलावा, रणनीति ने जोखिम को नियंत्रित करने और मुनाफे को लॉक करने के लिए स्टॉप-लॉस और स्टॉप-लॉस शर्तें भी निर्धारित की हैं। स्टॉप-लॉस शर्तों में शामिल हैंः कीमत एसएमए की एक निश्चित सीमा को तोड़ती है (स्टॉप लॉस बफर पैरामीटर द्वारा सेट), कीमत एक निश्चित सीमा को तोड़ती है (स्टॉप लॉस पैरामीटर द्वारा सेट), और व्यापार का समय 15:00 तक समाप्त होता है (स्टॉप-लॉस पैरामीटर द्वारा सेट) ।
यह रणनीति एसएमए आधारित सरल ट्रेडिंग रणनीति है जो बैंकनिफ्टी वायदा के लिए लागू है। इसका लाभ यह है कि सिद्धांत सरल है, अनुकूलन योग्य है, और जोखिम नियंत्रण उपाय हैं। लेकिन व्यावहारिक अनुप्रयोगों में, पैरामीटर अनुकूलन, बाजार में उतार-चढ़ाव, प्रवृत्ति उलट और स्टॉक में उतार-चढ़ाव जैसे संभावित जोखिमों पर भी ध्यान देने की आवश्यकता है। भविष्य में पैरामीटर अनुकूलन, अन्य संकेतकों, गतिशील स्टॉपलॉस और ट्रेडिंग समय सीमा के साथ संयोजन में रणनीति में अनुकूलन और सुधार पर विचार किया जा सकता है।
// 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")