- Grouped stocks for easily monitoring relevant stocks
- Connect from multiple tabs to monitor different groups of upto 3000 stocks (KiteTicker limit)
- Vertically resizable and scrollable tables to adjust views when needed
- Prices displayed - First Bid and First Ask for options and LTP for equities along with change from previous day's close
- Options displayed
- CE: Only Call options with strikes lesser than the LTP
- PE: Only Put options with strikes greater than the LTP
- A percentage of options close to the LTP on both sides are ignored. See
DIFF_PERCENT
Install dependencies. (npm or yarn is recommended)1
npm install
Setup environment secrets in an env.json
file by copying the example.env.json
file. For further customisation, see configuration.
cd src
cp example.env.json env.json
# Populate env.json secrets
Start the app to login for the first time to get and cache your access token. We need to do that before fetching instrument data and setting up the database, because Kite requires you to be authenticated.
npm run dev
Now you can close the server and setup your DB.
# After stopping the dev server
npm run data:prepare
Start in development mode
npm run dev
Build and start production server.
npm run build
npm start
The default port is 8000
. To change it, update the dev
and start
scripts in package.json
.
Edit src/config.ts
to:
GROUPS
- Update stock dropdown options and relevant groupingEXPIRY_OPTION_LENGTH
- Expiry dropdown optionsDIFF_PERCENT
- Control the range of strikes to ignore (depending on the LTP of the equity instrument).
There are definitely some optimisations that can be made, but were not made because I did not experience any slowdon or lagging so I don't see a good ROI for the effort it will take. But anyway, just jotting them down if I ever feel tackling on any one:
- Custom ticker parser to parse only
instrument_token
, ltp (for equity) and first bid and first ask (for options). Gist here. - On the frontend, granular update of each instrument object instead of the whole array.
Footnotes
-
The app uses this Next.js plugin to maintain a WebSocket Server, which patches some files in
node_modules
. I have tried usingpnpm
but it does not work reliably. See other caveats here. ↩