Websocket

Position Update Feed

This document details how to get Position Update Feed on the Firstock Websockets.

Overview

The Position‑Update Feed delivers real-time updates on the status of your orders via a persistent WebSocket connection.

Example Usage

Multiple Tabbed Interfaces
Python
Nodejs
Golang
from firstock import Firstock, FirstockWebSocket
import time

def position_book_data(data):
    print(data)

user_id = 'YOUR_USER_ID'

model = FirstockWebSocket(
    position_data=position_book_data
)

conn, err = Firstock.initialize_websockets(user_id, model)
print("Error:", err)

time.sleep(25)

close_err = Firstock.close_websocket(conn)
print("Close Error:", close_err)

const { Firstock, FirstockWebSocket } = require("firstock");

// Define callback method 
function positionBookData(data) {
    console.log(data);
}

const userId = 'YOUR_USER_ID';
const model = new FirstockWebSocket({
    position_data: positionBookData
});

async function main() {
    // Create the Firstock instance
    const firstock = new Firstock();
    
    const [conn, err] = await firstock.initializeWebsockets(userId, model);
    console.log("Error:", err);
    
    await new Promise(resolve => setTimeout(resolve, 25000));
    
    // Close WebSocket connection
    const closeErr = await firstock.closeWebsocket(conn);
    console.log("Close Error:", closeErr);
}

main();


import (
	"github.com/the-firstock/firstock-developer-sdk-golang/Firstock"
)

//Establishing WebSocket Connection
var conn1 *websocket.Conn

func webSocketConnection1(conn *websocket.Conn) {
  if conn != nil {
    conn1 = conn
  }
}

//CallBack method
func positionBookData(data map[string]interface{}) {
  fmt.Println(data)
}

model := Firstock.WebSocketModel{
    PositonData:                 	  positionBookData,
    WebSocketConection:          webSocketConnection1,
  }
err = Firstock.InitializeWebSockets({{userId}}, model)
fmt.Println("Error:", err)
time.Sleep(25 * time.Second)
err = Firstock.CloseWebSocket(conn1)
fmt.Println(err)

Response Structure

Body

On successful connection establishment, position updates will be received.

Note: Use norenordno to identify Order Update Feed and brkname to identify Position Update Feed.

Order Placement API Parameters
Parameter Description
child_ordersList of child order objects
upload_prcUploaded price for the order
totsellamtTotal sell amount
daybuyqtyQuantity bought during the day
daybuyamtAmount spent on buying during the day
sellavgprcAverage selling price
rpnlRealized Profit and Loss
totbuyamtTotal amount spent on buying
daybuyavgprcDay-wise average buy price
netqtyNet quantity
buyavgprcAverage buying price
totbuyavgprcTotal average buying price
opensellqtyOpen sell quantity
openbuyamtOpen buy amount
opensellamtOpen sell amount
totsellavgprcTotal average sell price
uptmUpdate timestamp
openbuyqtyOpen buy quantity
brknameBroker name or code
instnameInstrument name (e.g., EQ for Equity)

Response

{
  "child_orders": [
    {
      "ls": "1",
      "upload_prc": "00",
      "totsellamt": "0.00",
      "exch": "NSE",
      "pp": "2",
      "mult": "1",
      "prcftr": "1.000000",
      "daybuyqty": "1",
      "daybuyamt": "2.67",
      "sellavgprc": "0.00",
      "token": "9931",
      "tsym": "VIKASLIFE-EQ",
      "rpnl": "-0.00",
      "totbuyamt": "2.67",
      "ti": "0.01",
      "daybuyavgprc": "2.67",
      "netqty": "1",
      "buyavgprc": "2.67",
      "totbuyavgprc": "2.67"
    }
  ],
  "buyavgprc": "2.67",
  "sellavgprc": "0.00",
  "totbuyavgprc": "2.67",
  "rpnl": "-0.00",
  "opensellqty": "00",
  "uid": "NP2997",
  "prcftr": "1.000000",
  "daybuyavgprc": "2.67",
  "totsellamt": "0.00",
  "openbuyamt": "0.00",
  "netqty": "1",
  "pp": "2",
  "token": "VIKASLIFE",
  "pcode": "C",
  "brkname": "90047",
  "opensellamt": "0.00",
  "daybuyqty": "01",
  "totsellavgprc": "0.00",
  "totbuyamt": "2.67",
  "uptm": "11003337967278",
  "ti": "5.00",
  "daybuyamt": "2.67",
  "openbuyqty": "00",
  "upload_prc": "00",
  "actid": "NP2997",
  "exch": "EQT",
  "mult": "1",
  "ls": "1",
  "tsym": "VIKASLIFE-EQ",
  "instname": "EQ"
}