BankNifty_Bearish_Intraday
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © makarandpatil

// This strategy is for Bank Nifty instrument and for intraday purpose only
// It checks for various indicators and gives a sell signal when all conditions are met
// Bank Nifty when in momentum gives 100-200 points in spot in 5-15 min which is how long the trade duration should be
// Issues - The custom script as per TradingView Pinescripting has an issue of repaint
// More information on repainting issue in this link - https://www.tradingview.com/pine-script-docs/en/v5/concepts/Repainting.html
// Use the script alert only to get notified, however check all the parameters individually before taking the trade
// Also, please perform a backtesting and deep backtesting of this strategy to see if the strategy gave correct buy signals in the past
// The script is made for testing purposes only and is in beta mode. Please use at own risk.


//@version=5
strategy("BankNifty_Bearish_Intraday", overlay=true, margin_long=100, margin_short=100)

// Variables
StochLength = input(14, title="Stochastic Length")
smoothK = input(3, title="%K Smoothing")
smoothD = input(3, title="%D Smoothing")

//INDICATOR CALCULATIONS

// 1. MACD
[macdLine, signalLine, histLine] = ta.macd(close[0],12,26,9)
macd5 = request.security(syminfo.tickerid, "5", macdLine)
macd15 = request.security(syminfo.tickerid,"15",macdLine)
macd60 = request.security(syminfo.tickerid,"60",macdLine)

// 2. RSI Calculation
xRSI = ta.rsi(close, 14)

// 3. ADX calculation
[diplus, diminus, adx] = ta.dmi(14,14)

// 4. Stochastic Calculation
k = ta.sma(ta.stoch(close, high, low, StochLength), smoothK)
d = ta.sma(k, smoothD)

// 5. Bollinger Band calculation
[middle, upper, lower] = ta.bb(close, 20, 2)

//CONDITIONS

// 1. Conditions for MACD
macd5Downtick = macd5[0] < macd5[1]
macd15Downtick = macd15[0] < macd15[1]
macd60Downtick = macd60[0] <= macd60[1]

// 2. Condition for xRSI
RSIWeak = xRSI < 40

// 3. Condition for ADX
ADXUngali = adx >= 12

// 4. Condition for Stochastic
StochNCO = k < d

// 5. Condition for Bollinger Band
BBCD = lower < lower [1]

//Evaluate the short condition
shortCondition = macd5[0] < 0 and macd5Downtick and macd15Downtick and macd60Downtick and RSIWeak and ADXUngali and StochNCO and BBCD
// shortCondition = macd5Downtick and macd15Downtick and RSIWeak and ADXUngali and StochNCO
if (shortCondition)
    strategy.entry("Short", strategy.short, alert_message = "BankNifty_Sell_Momentum")

longCondition = close > ta.ema(close,5)
if (longCondition)
    strategy.entry("ShortSquareoff", strategy.long, alert_message = "BankNifty_Closed_Above_5EMA")
