Candlestick WebSocket
Streams 1-minute candles for a symbol when trades happen on it. Pushes are delivered roughly once per minute, at the close of each candle.
| Event name | FETCH_CANDLESTICK_CS_PRO |
| Connection | See Connection for handshake and namespace details. |
Subscribe
- Python
- Java
- Go
- Node.js
import socketio
sio = socketio.Client()
BASE_URL = "wss://ws.coinswitch.co/"
NAMESPACE = "/coinswitchx"
pair = "BTC,INR"
sio.connect(
url=BASE_URL,
namespaces=[NAMESPACE],
transports="websocket",
socketio_path="/pro/realtime-rates-socket/spot",
wait=True,
wait_timeout=3600,
)
sio.emit(
"FETCH_CANDLESTICK_CS_PRO",
{"event": "subscribe", "pair": pair},
namespace=NAMESPACE,
)
@sio.on("FETCH_CANDLESTICK_CS_PRO", namespace=NAMESPACE)
def on_candle(data):
print("Candle:", data)
sio.wait()
import okhttp3.*;
import org.json.JSONObject;
String exchange = "coinswitchx";
String coinPair = "BTC,INR";
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("wss://ws.coinswitch.co/pro/realtime-rates-socket/spot/?EIO=4&transport=websocket")
.build();
JSONObject subscribe = new JSONObject()
.put("event", "subscribe")
.put("pair", coinPair);
String namespaceFrame = "40/" + exchange + ",";
String subscribeFrame = "42/" + exchange + ",[\"FETCH_CANDLESTICK_CS_PRO\"," + subscribe + "]";
WebSocket ws = client.newWebSocket(request, new WebSocketListener() { /* ... */ });
ws.send(namespaceFrame);
ws.send(subscribeFrame);
import (
"log"
socketio "github.com/zishang520/socket.io-client-go/v2/client"
)
// socket.io-client-go is the most actively maintained Go client for
// Socket.IO v4 servers. Add it with:
// go get github.com/zishang520/socket.io-client-go/v2
opts := socketio.DefaultOptions()
opts.SetTransports([]string{"websocket"})
opts.SetPath("/pro/realtime-rates-socket/spot")
sock := socketio.Connect("wss://ws.coinswitch.co/coinswitchx", opts)
defer sock.Close()
sock.On("connect", func(args ...any) {
sock.Emit("FETCH_CANDLESTICK_CS_PRO", map[string]any{
"event": "subscribe",
"pair": "BTC,INR",
})
})
sock.On("FETCH_CANDLESTICK_CS_PRO", func(args ...any) {
log.Println("update:", args)
})
select {} // block forever
// npm install socket.io-client@^4
const { io } = require('socket.io-client');
const sock = io('wss://ws.coinswitch.co/coinswitchx', {
path: '/pro/realtime-rates-socket/spot',
transports: ['websocket'],
});
sock.on('connect', () => {
sock.emit('FETCH_CANDLESTICK_CS_PRO', { event: 'subscribe', pair: 'BTC,INR' });
});
sock.on('FETCH_CANDLESTICK_CS_PRO', (data) => {
console.log('update:', data);
});
Update payload
{
"o": "19.000000000000",
"h": "19.000000000000",
"l": "19.000000000000",
"c": "19.000000000000",
"volume": "470.300000000000",
"end_time": "1699423980000",
"symbol": "BAT,INR",
"interval": "1"
}
| Field | Type | Description |
|---|---|---|
o | string | Open price. |
h | string | High price. |
l | string | Low price. |
c | string | Close price. |
volume | string | Trade volume in base asset over the candle period. |
symbol | string | Symbol in BASE,QUOTE form. |
interval | string | Candle duration in minutes. WebSocket only emits "1". |
end_time | string | Candle close (Unix milliseconds). |
For arbitrary intervals or historical ranges, use REST Candles.