Tools · Setup guide
The free charting stack & position-size calculator
A ₹0/month fixed-cost charting stack for Indian markets — real-time charts, screening, alerts, and a position-size calculator. NRI-corrected: Dhan does not offer NRI accounts, so this stack is built on Zerodha Kite instead, at the same ₹0/month fixed cost.
The NRI correction
Dhan does not offer NRI accounts — its own Terms state the service is "only available to residents in India… not available to foreign residents including NRIs", and its FAQ confirms NRIs cannot open accounts. The generic free stack in Lesson 08 is built on Dhan; for Bahrain-based NRIs, the equivalent stack below uses Zerodha Kite, which does onboard NRIs. Same ₹0/month fixed cost, same TradingView charts.
The stack (₹0/month fixed cost)
| Piece | What it does | Cost |
|---|---|---|
| Zerodha Kite (web + app) | Real-time NSE/BSE charts (TradingView + ChartIQ), trade-from-charts, GTT orders | ₹500 account opening; ₹500 + GST/yr AMC; brokerage only per trade (below) |
| TradingView free account | Pine Editor, paper trading, screeners, multi-timeframe practice | ₹0 (NSE data 15-min delayed standalone — practice only) |
| Screener.in free | Fundamental screening | ₹0 |
| NSE/BSE official sites | Option chain, announcements, FII/DII, deals | ₹0 |
| Pine script below | ATR position-size calculator (arithmetic, not an edge) | ₹0 |
Brokerage (Zerodha NRI, verified on Zerodha support 30 Oct 2026): equity delivery non-PIS 0.5% capped at ₹50/order; PIS 0.5% capped at ₹200/order; F&O ₹50/order. DP charges apply when shares are sold. Delivery is ₹0 only for resident accounts — NRI accounts pay the rates above.
Step 0 — Prerequisites (before signup)
- PAN card (mandatory).
- NRE and/or NRO bank account in India. The non-PIS NRO route is the simplest in 2026: no PIS letter from the bank required, lowest brokerage cap, and intraday/F&O reported allowed via NRO non-PIS. Confirm F&O eligibility for your exact account type with Zerodha during signup — sources conflict on whether a CP code is still needed in some setups.
- Passport + visa/work permit (Bahrain); overseas address proof + Indian address proof; FATCA declaration (tax residency countries).
- FEMA status: >182 days outside India in the preceding financial year + employment abroad = typically NRI. If you spent most of the year in India, you may be FEMA-resident — different rules. When in doubt, a CA/FEMA consult before funding.
Step 1 — Open the Zerodha NRI account
As described in Zerodha's NRI onboarding guide (support pages, updated 30 Oct 2026): start at Zerodha's NRI signup page, verify email, and choose NRO or NRE. Enter PAN details as per the Income Tax database and pay the ₹500 fee. Fill in personal details (including PEP status), link the NRE/NRO bank account, upload address proofs (notarised overseas proof if your KRA record isn't verified), and complete the FATCA declaration. Complete webcam IPV (in-person verification). If KRA-verified: e-sign online — fully digital. If not: print, sign, and courier the documents. Activation within ~48 working hours after verification. Verify all charges on Zerodha's charges page at signup.
Step 2 — Kite chart layout (do this once, reuse forever)
Kite web → open any chart → switch chart type to TradingView.
Pane 1 — Daily (decides WHETHER and WHICH DIRECTION): candlesticks, 50 EMA + 200 EMA, 2–3 support/resistance zones drawn by hand (zones, not single lines), volume bars.
Pane 2 — 1-hour (swing) or 15-minute (intraday) (decides WHEN): VWAP (intraday only — it resets daily), 20 EMA, volume bars, and your entry trigger only (e.g. breakout retest) — no indicator soup.
Save it: Kite lets you save the indicator set as a template and the whole arrangement as a layout (up to 10 layouts on the app). Every symbol you open inherits the same view. Consistency is what makes multi-timeframe analysis fast.
Rule from the research: never trade against the daily trend on the 15-minute chart without writing down why in the journal. The journal entry is the discipline mechanism.
Optional third pane — Weekly: check once for the structural trend; it overrides both lower timeframes on conflict.
Step 3 — TradingView free account (practice + Pine)
- Create a free account at tradingview.com.
- Open a chart → Pine Editor (bottom panel) → paste the script below → "Add to chart". It shows ATR stop lines and a table: ATR value, stop distance, risk amount, and position size in shares. It is arithmetic — it sizes risk, it does not predict direction.
- Use paper trading on TradingView to practise mechanics and rule-following. Simulated fills, no slippage, no psychology — it proves you can follow rules, not that a strategy works.
- Remember: standalone free TradingView NSE data is 15-minute delayed since ~Sept 2026. Live decisions happen in Kite, not here.
Step 4 — Screener.in (find candidates before charting)
Free account. Two starter screens (examples, not recommendations):
- Quality filter: ROCE > 15%, debt/equity < 0.5, 5-year sales + profit growth positive. Purpose: shrink the universe to businesses that earn more than their cost of capital.
- Earnings-quality filter: operating cash flow ≥ profit after tax over 3–5 years, receivables growing slower than sales. Purpose: catch profit that never arrives as cash (Lesson 07).
Screener data is end-of-day and statement-based — for investing decisions, useless for intraday timing.
Step 5 — Alerts and exits (no paid tiers needed)
- Price alerts at daily zone boundaries (in Kite/TradingView) — they fire server-side with the app closed.
- GTT orders in Kite for entry + stop-loss + target in one order (OCO). This is the compliant free alternative to webhook automation: webhook-to-order automation counts as algo trading under SEBI's retail algo framework (mandatory since Apr 2026 — registered IP, Algo ID, audit trail). Do not wire TradingView webhooks to order placement without registering.
- Daily loss limit: decide it before the week starts, in rupees. When hit, stop. Write it in the journal.
Step 6 — Morning routine (15 minutes, before the open)
Market open is 09:15 IST = 06:45 Bahrain time, Mon–Fri, no lunch break.
- NSE announcements for your watchlist names (results, splits, deals).
- FII/DII flows + overnight global cues (US close, crude, USD–INR).
- NSE option chain: where the big open interest sits (support/resistance context, not a signal by itself).
- Your watchlist: which names are at daily zones today? Only those get intraday attention.
- Write the plan for the day: names, zones, trigger, size (from the ATR calculator), max loss. No plan = no trades.
Step 7 — Mobile
- Kite app: full trading + charts + GTT, up to 10 saved layouts.
- TradingView app: alerts + Pine practice on the go; don't day-trade from a phone screen as your primary setup — the layout discipline above needs a real screen.
Verify before relying on
- F&O eligibility for NRO non-PIS accounts (confirm with Zerodha).
- Dhan NRI status if you ever become resident again (currently: no NRI accounts, "coming soon", no timeline).
- All charges on Zerodha's charges page at signup.
- Kite Connect API pricing if you ever automate (reported ₹2,000/month in one track — UNVERIFIED).
Pine Script v6 — ATR position-size calculator
Copy the full script into TradingView's Pine Editor (free plan OK). What it does: arithmetic only. It computes how many shares/units you can buy so that a stop-loss placed ATRs away from entry risks exactly your chosen % of account size. It does NOT predict direction and is NOT an edge. Size = (accountSize × risk%) ÷ (ATR × multiplier). For futures/options: divide the share quantity by the lot size yourself — this script computes units, not lots. Verify on paper trading first.
//@version=6
// Position Size Calculator (ATR) — for TradingView Pine Editor (free plan OK).
// WHAT IT DOES: arithmetic only. It computes how many shares/units you can buy
// so that a stop-loss placed ATRs away from entry risks exactly your chosen
// % of account size. It does NOT predict direction and is NOT an edge.
// HOW TO USE: add to chart, set account size + risk %, read the table.
// size = (accountSize * risk%) / (ATR * multiplier)
// For futures/options: divide the share quantity by the lot size yourself —
// this script computes units, not lots. Verify on paper trading first.
// ---- Inputs ----
accountSize = input.float(100000, "Account size (₹)", minval=1.0)
riskPct = input.float(1.0, "Risk per trade (%)", minval=0.1, maxval=10.0, step=0.25)
atrLen = input.int(14, "ATR length", minval=1)
atrMult = input.float(2.0, "Stop distance = ATR ×", minval=0.5, step=0.25)
// ---- Calculations ----
atrVal = ta.atr(atrLen)
stopDist = atrVal * atrMult
riskAmt = accountSize * riskPct / 100.0
qty = stopDist > 0 ? math.floor(riskAmt / stopDist) : na
longStop = close - stopDist
shortStop = close + stopDist
// ---- Plots: stop lines for long/short from current price ----
plot(longStop, "Long stop", color=color.new(color.red, 0), linewidth=1)
plot(shortStop, "Short stop", color=color.new(color.red, 0), linewidth=1)
// ---- Table (updates on the last bar) ----
var table t = table.new(position.top_right, 2, 5, border_width=1)
if barstate.islast
table.cell(t, 0, 0, "ATR (" + str.tostring(atrLen) + ")", text_color=color.white, bgcolor=color.new(color.blue, 0))
table.cell(t, 1, 0, str.tostring(atrVal, "#.##"), text_color=color.white, bgcolor=color.new(color.blue, 0))
table.cell(t, 0, 1, "Stop distance", text_color=color.black, bgcolor=color.new(color.gray, 80))
table.cell(t, 1, 1, str.tostring(stopDist, "#.##"), text_color=color.black, bgcolor=color.new(color.gray, 80))
table.cell(t, 0, 2, "Risk amount (₹)", text_color=color.black, bgcolor=color.new(color.gray, 90))
table.cell(t, 1, 2, str.tostring(riskAmt, "#"), text_color=color.black, bgcolor=color.new(color.gray, 90))
table.cell(t, 0, 3, "Position size (units)", text_color=color.white, bgcolor=color.new(color.teal, 0))
table.cell(t, 1, 3, str.tostring(qty, "#"), text_color=color.white, bgcolor=color.new(color.teal, 0))
table.cell(t, 0, 4, "Risk %", text_color=color.black, bgcolor=color.new(color.yellow, 80))
table.cell(t, 1, 4, str.tostring(riskPct, "#.##") + "%", text_color=color.black, bgcolor=color.new(color.yellow, 80))
Screener and indicator notes
- Screener.in (Lesson 08): the default fundamental workstation — query language, 10+ years of financials, concall notes. Premium ₹4,999/year (verified). No buy/sell signals.
- TradingView screener: 500+ fundamental + technical fields; best when you already live in TradingView.
- Chartink: popular free technical screener in India (price/volume scans, candlestick patterns); paid tiers UNVERIFIED.
- ATR is the most defensible indicator use in the library: not a signal — a volatility unit. Its sizing use is arithmetic: stops as multiples of ATR (1.5–2×) so stops respect the stock's normal noise. See the evidence scorecard in Lesson 06.
- VWAP has a real institutional mechanism (execution algos anchor to it); use as an intraday bias filter and dynamic support/resistance, not as a standalone signal.
- RSI/MACD: effects are market- and parameter-specific; no robust post-cost standalone edge. Use for trend definition and confirmation, never as the sole entry reason.
Sources
- TradingView pricing page (official, crawled 30 Oct 2026)
- TradingView data coverage (NSE delayed/real-time, BSE add-on)
- Dhan + TradingView (official)
- Screener.in review, free vs premium (secondary, Jan 2026)
- TradingView Pine Script strategies docs
- Lesson 08: charting tools & workflow (full comparisons, pricing verified 30–31 Oct 2026) — read it here
- Zerodha support: NRI charges (updated 30 Oct 2026) and NRI account opening — support.zerodha.com
- Dhan Terms & Conditions / KYC FAQ (NRI exclusion); Chittorgarh FAQ "Can NRI use Dhan?"