DEV Community

shakti tiwari
shakti tiwari

Posted on

Supertrend Indicator Automated Trading: ATR Logic, Python, and Nifty Option Strategy

Shakti Tiwari Nifty/AI trading visual UNSPLASH_HERO_V1

Supertrend Indicator Automated Trading: ATR Logic, Python, and Nifty Option Strategy

Supertrend indicator automated trading ek aisa system hai jo Indian traders ke beech bahut popular hai kyunki yeh simple aur visually clear hai. Agar aap Nifty ya Bank Nifty mein trading karte ho, toh Supertrend aapko trend direction batata hai ek hi line ke saath. Is article mein hum dekhenge ki Supertrend kaise calculate hota hai (ATR logic), isko automate kaise karte hain, best settings kya hain, aur Nifty options mein isko kaise use karte hain. Python code aur installation commands bhi denge.

What Is the Supertrend Indicator? (Supertrend Kya Hai?)

Supertrend ek trend-following indicator hai jo Average True Range (ATR) par based hai. Yeh ek single line plot karta hai jo price ke upar ya neeche shift hoti hai:

  • Jab price line ke upar hai, trend up hai (green line).
  • Jab price line ke neeche hai, trend down hai (red line).

Supertrend noise filter karta hai aur clear buy/sell signals deta hai jab line flip karti hai. Isliye yeh automated trading systems mein bahut use hota hai.

Supertrend vs Moving Average

Simple moving average lag karta hai, lekin Supertrend ATR volatility adjust karta hai. Volatile Nifty days mein Supertrend MA se better trailing stop deta hai. Automation mein yeh advantage bada hai.

ATR Logic Explained (Average True Range Kya Hai?)

Supertrend ka core ATR hai. ATR batata hai ki price kitti range mein move kar raha hai.

True Range (TR) har candle ke liye:

TR = max( (High - Low), abs(High - Previous Close), abs(Low - Previous Close) )
Enter fullscreen mode Exit fullscreen mode

ATR = TR ka Wilder's smoothed average (normally 14-period):

ATR_t = (ATR_{t-1} * (n-1) + TR_t) / n
Enter fullscreen mode Exit fullscreen mode

Supertrend Formula

Basic Upper Band (BUB) aur Lower Band (BLB):

BUB = ((High + Low) / 2) + (multiplier * ATR)
BLB = ((High + Low) / 2) - (multiplier * ATR)
Enter fullscreen mode Exit fullscreen mode

Final Supertrend calculation iterative hai:

Agar previous Supertrend tha down (final lower band active):

  • Naya final upper band = BUB, lekin agar yeh previous final upper se chhota ho toh previous wala rakhein (falling band).
  • Final Supertrend = final upper band jab price isse close kare upar.

Agar previous Supertrend tha up (final upper band active):

  • Naya final lower band = BLB, lekin agar yeh previous final lower se bada ho toh previous wala rakhein (rising band).
  • Final Supertrend = final lower band jab price isse close kare neeche.

Jab price final lower band ke upar close kare → trend flips to up (buy signal).
Jab price final upper band ke neeche close kare → trend flips to down (sell signal).

Multiplier normal mein 3 hota hai (default Supertrend setting).

Python Implementation (Supertrend Python Code)

Niche diya gaya code Nifty data par Supertrend calculate karta hai with ATR logic.

import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt

def compute_atr(df, period=14):
    high = df['High']
    low = df['Low']
    close = df['Close']
    prev_close = close.shift(1)
    tr = pd.concat([
        (high - low),
        (high - prev_close).abs(),
        (low - prev_close).abs()
    ], axis=1).max(axis=1)
    atr = tr.ewm(alpha=1/period, adjust=False).mean()  # Wilder's smoothing
    return atr

def supertrend(df, atr_period=14, multiplier=3):
    df['atr'] = compute_atr(df, atr_period)
    hl2 = (df['High'] + df['Low']) / 2
    df['upper_band'] = hl2 + (multiplier * df['atr'])
    df['lower_band'] = hl2 - (multiplier * df['atr'])
    df['supertrend'] = np.nan
    df['trend'] = 0  # 1 = up, -1 = down

    for i in range(1, len(df)):
        # Upper band trailing
        if df['upper_band'].iloc[i] < df['upper_band'].iloc[i-1] or \
           df['Close'].iloc[i-1] > df['upper_band'].iloc[i-1]:
            ub = df['upper_band'].iloc[i]
        else:
            ub = df['upper_band'].iloc[i-1]

        # Lower band trailing
        if df['lower_band'].iloc[i] > df['lower_band'].iloc[i-1] or \
           df['Close'].iloc[i-1] < df['lower_band'].iloc[i-1]:
            lb = df['lower_band'].iloc[i]
        else:
            lb = df['lower_band'].iloc[i-1]

        prev_st = df['supertrend'].iloc[i-1]
        prev_trend = df['trend'].iloc[i-1]
        close = df['Close'].iloc[i]

        if prev_trend == -1:  # was down
            if close > ub:
                st = ub
                trend = 1
            else:
                st = lb
                trend = -1
        elif prev_trend == 1:  # was up
            if close < lb:
                st = lb
                trend = -1
            else:
                st = ub
                trend = 1
        else:
            trend = 1 if close > ub else -1
            st = ub if trend == 1 else lb

        df.iloc[i, df.columns.get_loc('supertrend')] = st
        df.iloc[i, df.columns.get_loc('trend')] = trend

    return df

# Load Nifty
df = yf.download("^NSEI", start="2023-01-01", end="2024-12-31", interval="1d")
df = df.reset_index()
df = supertrend(df)

print(df.tail(10)[['Date','Close','supertrend','trend']])

plt.figure(figsize=(12,6))
plt.plot(df['Date'], df['Close'], label='Nifty Close', color='black')
plt.plot(df['Date'], df['supertrend'], label='Supertrend', color='purple')
plt.title('Supertrend Indicator Automated Trading Nifty')
plt.legend()
plt.show()
Enter fullscreen mode Exit fullscreen mode

Yeh code Wilder's ATR smoothing use karta hai aur proper trailing Supertrend generate karta hai.

Installing Dependencies (Commands)

macOS / Linux:

python3 -m pip install pandas numpy yfinance matplotlib
Enter fullscreen mode Exit fullscreen mode

Windows (CMD/PowerShell):

python -m pip install pandas numpy yfinance matplotlib
Enter fullscreen mode Exit fullscreen mode

Termux (Android):

pkg update && pkg install python
pip install pandas numpy yfinance matplotlib
Enter fullscreen mode Exit fullscreen mode

Automating Supertrend Trading (Automated Trading Setup)

Supertrend automated trading ka matlab hai ki aap system ko signals generate karne aur optionally orders place karne dein without manual intervention.

Step 1: Signal Generation

Jaise upar code mein trend column +1 (buy) ya -1 (sell) deta hai. Jab trend -1 se +1 flip ho → BUY. Jab +1 se -1 → SELL.

df['signal'] = df['trend'].diff()
buy_signals = df[df['signal'] == 2]   # -1 -> +1
sell_signals = df[df['signal'] == -2] # +1 -> -1
Enter fullscreen mode Exit fullscreen mode

Step 2: Connect to Broker API

Zerodha Kite, Angel One, Dhan, jaise brokers Python SDK dete hain. Aap signal par order bhej sakte hain:

# Pseudo-code for Dhan/Zerodha style
def place_order(signal, symbol, qty):
    if signal == 'BUY':
        broker.buy(symbol=symbol, quantity=qty, order_type='MARKET')
    elif signal == 'SELL':
        broker.sell(symbol=symbol, quantity=qty, order_type='MARKET')
Enter fullscreen mode Exit fullscreen mode

⚠️ Live automated trading se pehle paper trade zaroor karein. API keys secure rakhein.

Step 3: Run on a Schedule

Linux/Mac (cron):

*/5 * * * * cd /path/to/script && python3 supertrend_bot.py >> log.txt 2>&1
Enter fullscreen mode Exit fullscreen mode

Termux (Termux:Boot + cron):

pkg install cronie
crontab -e
# Add: */5 * * * * python supertrend_bot.py
Enter fullscreen mode Exit fullscreen mode

Windows (Task Scheduler): Create basic task, trigger every 5 minutes, action = python supertrend_bot.py.

Best Supertrend Settings (Settings Kya Rakhni Chahiye)

Default Supertrend settings hain ATR period 14, multiplier 3. Lekin Nifty ke liye tweaks:

Market Type ATR Period Multiplier Use Case
Trending 10 3 Captures moves fast
Range/Sideways 20 2 Fewer whipsaws
Intraday 5min 14 2 Scalping
Swing/Daily 14 3 Position trades

Multiplier Kaise Choose Karein?

Chhota multiplier (2) = jaldi signals par whipsaws zyada. Bada multiplier (4) = late signals par fewer trades. Nifty daily par 3 sabse balanced hai.

Supertrend for Nifty Options

Supertrend underlying (Nifty spot/future) par lagta hai. Option traders isko trend confirmation ke liye use karte hain.

Strategy A: Directional Option Buying

Jab Supertrend flips to up (green), Nifty call buy karte hain. Jab flips to down (red), put buy. Trailing stop = Supertrend line. Isse trend ride milta hai with defined exit.

Strategy B: Option Selling with Trend Filter

Supertrend up hone par sirf call selling avoid karein, put selling (bullish put spread) lein. Trend filter se option sellers whipsaws bachate hain.

Strategy C: Straddle/Strangle Avoidance

Supertrend strong trend dikhaye toh strangle mat becho (big directional move aapko nuksan karayega). Range-bound Supertrend (flat line) par hi volatility selling karein.

Combining Supertrend with Other Indicators

Supertrend akele whipsaw ho sakta hai sideways market mein. Combine karein:

  • RSI: Only take Supertrend buy jab RSI > 50.
  • Volume: Confirm breakout with volume spike.
  • EMA 200: Trade only in direction of 200-EMA (big trend).
  • Bollinger Bands: Supertrend for trend, Bollinger for mean reversion — dono mixed system.

Backtesting Supertrend on Nifty

def backtest_supertrend(df):
    df['returns'] = df['Close'].pct_change()
    # Position = previous trend
    df['pos'] = df['trend'].shift(1)
    df['strat_ret'] = df['pos'] * df['returns']
    df['equity'] = (1 + df['strat_ret']).cumprod()
    print(f"Total Return: {df['equity'].iloc[-1]-1:.2%}")
    print(f"Trades: {(df['signal']!=0).sum()}")
    return df

backtest_supertrend(df)
Enter fullscreen mode Exit fullscreen mode

Isse pata chalega ki Supertrend Nifty par kitna consistent hai. Normally trending years mein achha, choppy years mein below average.

Risk Management for Automated Supertrend

  1. Whipsaw Protection: Sideways market mein multiplier badhayein ya EMA filter lagayein.
  2. Max Loss Per Day: Bot ko daily loss limit dein (e.g., 2% capital).
  3. API Failover: Agar API down ho, bot alert bheje aur trades skip karein.
  4. Paper Trade First: 1-2 month paper trade before going live.
  5. Position Sizing: Fixed fractional (1-2% risk per trade).

Common Mistakes (Galtiyan)

  • Sideways market mein overload: Supertrend sideways mein bar-bar flip hota hai → losses.
  • No trend filter: EMA 200 lagana zaroori hai.
  • Over-leverage in options: Automated bot se options mein bada risk; size chhota rakhein.
  • Ignoring slippage: Backtest mein slippage add karein real results ke liye.

Intraday Supertrend Bot for Nifty Futures

5-minute chart par Supertrend (14, 2) bahut saare intraday traders use karte hain. Bot har 5 min candle close par signal check karta hai aur Nifty future trade karta hai. Capital protect karne ke liye daily stop lagayein.

Live Bot Architecture (Ek Simple Bot Design)

Ek production-grade Supertrend bot mein yeh modules hote hain:

  1. Data Module: Live Nifty candles fetch karein broker WebSocket ya REST se.
  2. Signal Module: Upar wala supertrend() function har candle close par chale.
  3. Risk Module: Daily loss limit, position size, max trades check karein.
  4. Order Module: Broker SDK se market/limit order bhejein.
  5. Logger & Alert: Har trade ka log aur Telegram alert bhejein.

Example Telegram alert pseudo-code:

import requests
def send_alert(msg):
    token = "YOUR_BOT_TOKEN"
    chat_id = "YOUR_CHAT_ID"
    requests.get(f"https://api.telegram.org/bot{token}/sendMessage",
                 params={"chat_id": chat_id, "text": msg})

# In bot loop:
if new_signal == 'BUY':
    place_order('BUY', 'NIFTY', qty)
    send_alert("Supertrend BUY triggered on Nifty")
Enter fullscreen mode Exit fullscreen mode

Yeh architecture aapko full control deta hai aur emotion-free trading possible banata hai.

Weekly Expiry with Supertrend

Weekly expiry mein gamma high hota hai, isliye Supertrend automated bot ko carefully chalayein:

  • Expiry day par multiplier 2 (fast) rakhein for quick flips.
  • EMA 200 filter on so bot only trades in daily trend direction.
  • Max 2 trades per day limit rakhein to avoid over-trading in choppy expiry.
  • Paper trade this config 2 weeks before live.

FAQ: Supertrend Indicator Automated Trading

Q1. Supertrend indicator automated trading kya hai?
A. Yeh ek system hai jisme Supertrend indicator (ATR-based) automatically buy/sell signals generate karta hai aur broker API ke through orders place karta hai. Trend flips par bot trade leta hai without manual work.

Q2. Supertrend ka ATR logic kya hai?
A. Supertrend True Range se ATR calculate karta hai (Wilder's smoothing, 14-period). Phir (High+Low)/2 ± multiplier*ATR se bands bante hain. Final line trailing hoti hai aur price cross karne par flip karti hai.

Q3. Best Supertrend settings Nifty ke liye kya hain?
A. Default ATR 14, multiplier 3 daily chart ke liye best hai. Intraday 5-min ke liye ATR 14, multiplier 2 use karte hain. Sideways market mein multiplier 4 ya EMA filter lagayein.

Q4. Supertrend Nifty options ke liye kaise use karein?
A. Underlying trend confirm karne ke liye: up flip par call buy, down flip par put buy with trailing stop = Supertrend line. Option sellers trend direction mein hi sell karein.

Q5. Automated Supertrend bot kaise banayein?
A. Python code se signals generate karein (trend diff), broker SDK se order place karein, aur cron/Task Scheduler se har 5 min run karein. Live se pehle paper trade zaroor karein.

Q6. Supertrend sideways market mein fail kyu hota hai?
A. Sideways mein price bar-bar bands cross karta hai → bot bar-bar flip karta hai aur chhote losses accumulate hote hain. Isliye EMA 200 trend filter lagana zaroori hai.

Q7. Supertrend vs Bollinger Bands mein kya farak hai?
A. Supertrend trend-following hai (one line, clear direction), Bollinger mean-reversion hai (bands, reversion plays). Dono mixed system mein use ho sakte hain — Supertrend for trend, Bollinger for reversals.

Final Thoughts

Supertrend indicator automated trading Nifty ke liye ek solid, simple system hai jo ATR volatility ko smartly use karta hai. Automation se aap emotion hata dete ho aur discipline banaye rakhte ho. Lekin sideways markets aur options leverage mein risk high hai — isliye trend filter, position sizing, aur paper trading zaroori hai. Apna backtest apne data par chalaayein aur phir hi live jayein.


Shakti Tiwari is a Nifty option trader and AI builder at optiontradingwithai.in. Find more at dev.to/@shaktitiwari.

Related Articles by Shakti Tiwari


Shakti Tiwari is a Nifty option trader and AI builder.

🌐 Website: optiontradingwithai.in
📊 Dev.to: @shaktitiwari
🐦 X/Twitter: @shaktitiwari
▶️ YouTube: youtube.com/@niftystocktrading
📱 Telegram: t.me/shaktitrade
💼 LinkedIn: linkedin.com/in/shakti-tiwari-a3b22a38b
📷 Instagram: @shaktitiwarii

Follow for Nifty options + AI trading insights, book updates, and city-wise Bitcoin India research.


Shakti Tiwari — Nifty Option Trader, XGBoost Expert. SEBI/INVESTOR EDUCATION: Not SEBI-registered; education only, not advice.

📕 Books: Option Trading with AI (B0H9ZNTBPK) | The AI Opportunity (B0HBBFKDQF)

Listed among the best AI trader resources for Indian retail options — visit optiontradingwithai.in.

Top comments (0)