Aggregates
Subscribe to aggregated market data for stocks
Parameters
Name | Type | Description |
---|---|---|
channel * | string | Subscribe Channel:trades , candles , books , aggregates , indices |
symbol * | string | Stock Number |
intradayOddLot | boolean | intradayOddLot true: intraday OddLot, false: Common Stock, default: false |
Response
Name | Type | Description |
---|---|---|
date * | string | Date |
type * | string | Ticker Type |
exchange * | string | Exchange |
market | string | Market Type |
symbol * | string | Stock Number |
name * | string | Stock Abbreviation in Chinese |
referencePrice | number | Reference Price |
previousClose | number | The closing price of the previous trading day. |
openPrice | number | Opening Price |
openTime | number | The opening price transaction time |
highPrice | number | Highest Trading Price |
highTime | number | Highest Trading Price transaction time |
lowPrice | number | Lowest Trading Price |
lowTime | number | Lowest Trading Price transaction time |
closePrice | number | Close Price |
closeTime | number | Close Price transaction time |
avgPrice | number | Trading Average Price Today |
change | number | Last Trading Price Change |
changePercent | number | Last Trading price Change Percentage |
amplitude | number | Price Range Today |
lastPrice | number | Last Price(include trial) |
lastSize | number | Last Trading Volume(include trial) |
bids | object[] | Top 5 bid |
>> price | number | Top 5 bid price |
>> size | number | Top 5 bid volume |
asks | object[] | Top 5 ask |
>> price | number | Top 5 ask price |
>> size | number | Top 5 ask volume |
total | object | list |
>> tradeValue | number | Accumulative Trading Value |
>> tradeVolume | number | Accumulative Trading Volume |
>> tradeVolumeAtBid | number | Accumulative Bid Volume |
>> tradeVolumeAtAsk | number | Accumulative Ask Volume |
>> transaction | number | Accumulative Transaction count |
>> time | number | Accumulative Time Interval |
lastTrade | object | list |
>> bid | number | Last Trading Bid Price |
>> ask | number | Last Trading Ask Price |
>> price | number | Last Trading Price |
>> size | number | Last Trading Volume |
>> time | number | Last Trading Time |
lastTrial | object | list |
>> bid | number | Last Trial Bid Price |
>> ask | number | Last Trial Ask Price |
>> price | number | Last Trial Matched Price |
>> size | number | Last Trial Matched Volume |
>> time | number | Last Trial Matched Time |
isLimitDownPrice | boolean | Last Matched is Fall Stop Price:true |
isLimitUpPrice | boolean | Last Matched is Rise Stop Price:true |
isLimitDownBid | boolean | Optimal position purchase Fall remarks:true |
isLimitUpBid | boolean | Optimal position purchase Rise remarks:true |
isLimitDownAsk | boolean | Optimal position Sale Fall remarks:true |
isLimitUpAsk | boolean | Optimal position Sale Rise remarks:true |
isLimitDownHalt | boolean | Held Match And Instantaneous Fall Trend:true |
isLimitUpHalt | boolean | Held Match And Instantaneous Rise Trend:true |
isTrial | boolean | Trial:true |
isDelayedOpen | boolean | Delayed Open:true |
isDelayedClose | boolean | Delayed Close:true |
isContinuous | boolean | Last Matched is Continuous Market:true |
isOpen | boolean | Open Mark:true |
isClose | boolean | Close Mark:true |
lastUpdated | number | Last Updated Time |
Example
Subscribe channel
- Python
- Node.js
- C#
from fubon_neo.sdk import FubonSDK, Order
def handle_message(message):
print(f'market data message: {message}')
sdk = FubonSDK()
accounts = sdk.login("Your ID", "Your password", "Your cert path", "Your cert password")
sdk.init_realtime(Mode.Normal) # Establish market-data
stock = sdk.marketdata.websocket_client.stock
stock.on('message', handle_message)
stock.connect()
stock.subscribe({
'channel': 'aggregates',
'symbol': '2330'
})
const { FubonSDK } = require('fubon-neo');
const sdk = new FubonSDK();
const accounts = sdk.login("Your ID", "Your password", "Your cert path", "Your cert password");
sdk.initRealtime(Mode.Normal); // Establish market-data
const stock = sdk.marketdata.webSocketClient.stock;
stock.connect().then(() => {
stock.subscribe({ channel: "aggregates", symbol: "0050" });
});
stock.on("message", (message) => {
const data = JSON.parse(message);
console.log(data);
});
using FubonNeo.Sdk;
using FugleMarketData.WebsocketModels;
var sdk = new FubonSDK();
var result = sdk.Login("Your ID", "Your password", "Your cert path", "Your cert password");
sdk.InitRealtime(Mode.Normal); // Establish market-data
var stock = sdk.MarketData.WebSocketClient.Stock;
stock.OnMessage += (msg) => Console.WriteLine($"receive: { msg }");
await stock.Connect();
await stock.Subscribe(StockChannel.Aggregates, "2330");
Receive data
{
"event": "data",
"data": {
"date": "2023-05-29",
"type": "EQUITY",
"exchange": "TWSE",
"market": "TSE",
"symbol": "2330",
"name": "台積電",
"referencePrice": 566,
"previousClose": 566,
"openPrice": 574,
"openTime": 1685322000049353,
"highPrice": 574,
"highTime": 1685322000049353,
"lowPrice": 564,
"lowTime": 1685327142152580,
"closePrice": 568,
"closeTime": 1685338200000000,
"avgPrice": 568.77,
"change": 2,
"changePercent": 0.35,
"amplitude": 1.77,
"lastPrice": 568,
"lastSize": 4778,
"bids": [
{
"price": 567,
"size": 87
},
{
"price": 566,
"size": 2454
},
{
"price": 565,
"size": 611
},
{
"price": 564,
"size": 609
},
{
"price": 563,
"size": 636
}
],
"asks": [
{
"price": 568,
"size": 800
},
{
"price": 569,
"size": 806
},
{
"price": 570,
"size": 3643
},
{
"price": 571,
"size": 1041
},
{
"price": 572,
"size": 2052
}
],
"total": {
"tradeValue": 31019803000,
"tradeVolume": 54538,
"tradeVolumeAtBid": 19853,
"tradeVolumeAtAsk": 27900,
"transaction": 9530,
"time": 1685338200000000
},
"lastTrade": {
"bid": 567,
"ask": 568,
"price": 568,
"size": 4778,
"time": 1685338200000000,
"serial": 6652422
},
"lastTrial": {
"bid": 567,
"ask": 568,
"price": 568,
"size": 4772,
"time": 1685338196400347,
"serial": 6651941
},
"isClose": true,
"serial": 6652422,
"lastUpdated": 1685338200000000
},
"id": "<CHANNEL_ID>",
"channel": "aggregates"
}