@itick/browser-sdk
Version:
Official iTick API SDK for browser. Real-time & historical data for global Stocks, Forex, Crypto, Indices, Futures, Funds, Precious Metals. REST (OHLCV/K-line) + low-latency WebSocket. Promise-based, TypeScript-ready. For quant trading & fintech
219 lines • 10.7 kB
JavaScript
;
/**
* Forex Module
* Provides data access interfaces for forex
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.ForexClient = void 0;
const client_1 = require("../../utils/client");
const utils_1 = require("../../utils");
/**
* Forex SDK Client
* Specialized for forex data access
*/
class ForexClient extends client_1.Client {
constructor(token, options) {
super(token, options);
}
/**
* Get Forex Real-Time Trade Snapshot
* @description Query latest trade real-time market data for forex based on market code and symbol code
* @param params - Query parameters object
* @param params.region - Market code (e.g., GB etc.), see {@link https://docs.itick.org/rest-api/forex/forex-tick Official Documentation} for complete supported list
* @param params.code - Symbol code (e.g., EURUSD, GBPUSD etc.)
* @returns Promise wrapped standard API response, data is real-time market data {@link TickData}
* @example
* ```typescript
* // Get real-time trade market data for EURUSD forex pair
* getTick({ region: 'GB', code: 'EURUSD' }).then(response => {
* console.log('Real-time market:', response.data);
* }).catch(err => {
* console.error('Failed to get market data:', err);
* });
* ```
*/
async getTick(params) {
const { region, code } = params;
return this._get('/forex/tick', { region, code });
}
/**
* Get Forex Latest Quote
* @description Query latest quote real-time market data for forex based on market code and symbol code
* @param params - Query parameters object
* @param params.region - Market code (e.g., GB etc.), see {@link https://docs.itick.org/rest-api/forex/forex-quote Official Documentation} for complete supported list
* @param params.code - Symbol code (e.g., EURUSD, GBPUSD etc.)
* @returns Promise wrapped API response, data is latest quote data {@link QuoteData}
* @example
* ```typescript
* // Get latest quote for EURUSD forex pair
* getQuote({ region: 'GB', code: 'EURUSD' }).then(response => {
* console.log('Latest quote:', response.data);
* }).catch(err => {
* console.error('Failed to get quote:', err);
* });
* ```
*/
async getQuote(params) {
const { region, code } = params;
return this._get('/forex/quote', { region, code });
}
/**
* Get Forex Latest Order Book
* @description Query latest order book data for forex based on market code and symbol code
* @param params - Query parameters object
* @param params.region - Market code (e.g., GB etc.), see {@link https://docs.itick.org/rest-api/forex/forex-depth Official Documentation} for complete supported list
* @param params.code - Symbol code (e.g., EURUSD, GBPUSD etc.)
* @returns Promise wrapped API response, data is latest order book data {@link DepthData}
* @example
* ```typescript
* // Get latest order book for EURUSD forex pair
* getDepth({ region: 'GB', code: 'EURUSD' }).then(response => {
* console.log('Latest order book:', response.data);
* }).catch(err => {
* console.error('Failed to get order book:', err);
* });
* ```
*/
async getDepth(params) {
const { region, code } = params;
return this._get('/forex/depth', { region, code });
}
/**
* Get Forex K-Line Data
* @description Query forex K-line data based on market code, symbol code, K-line period, end time and number of records to return
* @param options - Query parameters object see {@link GetKlineOptions}
* @param options.region - Market code (e.g., GB etc.), see {@link https://docs.itick.org/rest-api/forex/forex-kline Official Documentation} for complete supported list
* @param params.code - Symbol code (e.g., EURUSD, GBPUSD etc.)
* @returns Promise wrapped API response, data is K-line data array {@link KlineData}
* @example
* ```typescript
* // Get 5-minute K-line data for EURUSD forex pair
* getKline({ region: 'GB', code: 'EURUSD', interval: '5m', limit: 100 }).then(response => {
* console.log('K-line data:', response.data);
* }).catch(err => {
* console.error('Failed to get K-line data:', err);
* });
* ```
*/
async getKline(options) {
const { region, code, kType, interval, limit, et } = options;
const params = { region, code, kType: (0, utils_1.convertKlinePeriod)(interval ?? kType), limit };
if (et)
params.et = et;
return this._get('/forex/kline', params);
}
/**
* Get Multiple Forex Latest Trades
* @description Query latest trade real-time market data for multiple forex pairs based on market code and symbol code list
* @param params - Query parameters object
* @param params.region - Market code (e.g., GB etc.), see {@link https://docs.itick.org/rest-api/forex/forex-ticks Official Documentation} for complete supported list
* @param params.codes - Symbol code list (e.g., EURUSD, GBPUSD etc.)
* @returns Promise wrapped API response, data is multiple forex latest trade data object {@link TickDataMap}
* @example
* ```typescript
* // Get latest trade market data for EURUSD and GBPUSD forex pairs
* getTicks({ region: 'GB', codes: ['EURUSD', 'GBPUSD'] }).then(response => {
* console.log('Latest trades:', response.data);
* }).catch(err => {
* console.error('Failed to get trade market data:', err);
* });
* ```
*/
async getTicks(params) {
const { region, codes } = params;
return this._get('/forex/ticks', { region, codes: Array.isArray(codes) ? codes.join(',') : codes });
}
/**
* Get Multiple Forex Latest Quotes
* @description Query latest quote real-time market data for multiple forex pairs based on market code and symbol code list
* @param params - Query parameters object
* @param params.region - Market code (e.g., GB etc.), see {@link https://docs.itick.org/rest-api/forex/forex-quotes Official Documentation} for complete supported list
* @param params.codes - Symbol code list (e.g., EURUSD, GBPUSD etc.)
* @returns Promise wrapped API response, data is multiple forex latest quote data object {@link QuoteDataMap}
* @example
* ```typescript
* // Get latest quotes for EURUSD and GBPUSD forex pairs
* getQuotes({ region: 'GB', codes: ['EURUSD', 'GBPUSD'] }).then(response => {
* console.log('Latest quotes:', response.data);
* }).catch(err => {
* console.error('Failed to get quotes:', err);
* });
* ```
*/
async getQuotes(params) {
const { region, codes } = params;
return this._get('/forex/quotes', { region, codes: Array.isArray(codes) ? codes.join(',') : codes });
}
/**
* Get Multiple Forex Latest Order Books
* @description Query latest order book real-time market data for multiple forex pairs based on market code and symbol code list
* @param params - Query parameters object
* @param params.region - Market code (e.g., GB etc.), see {@link https://docs.itick.org/rest-api/forex/forex-depths Official Documentation} for complete supported list
* @param params.codes - Symbol code list (e.g., EURUSD, GBPUSD etc.)
* @returns Promise wrapped API response, data is multiple forex latest order book data object {@link DepthDataMap}
* @example
* ```typescript
* // Get latest order books for EURUSD and GBPUSD forex pairs
* getDepths({ region: 'GB', codes: ['EURUSD', 'GBPUSD'] }).then(response => {
* console.log('Latest order books:', response.data);
* }).catch(err => {
* console.error('Failed to get order books:', err);
* });
* ```
*/
async getDepths(params) {
const { region, codes } = params;
return this._get('/forex/depths', { region, codes: Array.isArray(codes) ? codes.join(',') : codes });
}
/**
* Get Multiple Forex K-Line Data
* @description Query K-line data for multiple forex pairs based on market code, symbol code list, K-line period, end time and number of records to return
* @param options - Query parameters object see {@link GetKlinesOptions}
* @param options.region - Market code (e.g., GB etc.), see {@link https://docs.itick.org/rest-api/forex/forex-klines Official Documentation} for complete supported list
* @param params.codes - Symbol code list (e.g., EURUSD, GBPUSD etc.)
* @returns Promise wrapped API response, data is multiple forex K-line data object {@link KlineDataMap}
* @example
* ```typescript
* // Get 5-minute K-line data for EURUSD and GBPUSD forex pairs
* getKlines({ region: 'GB', codes: ['EURUSD', 'GBPUSD'], interval: '5m', limit: 100 }).then(response => {
* console.log('K-line data:', response.data);
* }).catch(err => {
* console.error('Failed to get K-line data:', err);
* });
* ```
*/
async getKlines(options) {
const { region, codes, kType, interval, limit, et } = options;
const params = { region, codes: Array.isArray(codes) ? codes.join(',') : codes, kType: (0, utils_1.convertKlinePeriod)(interval ?? kType), limit };
if (et)
params.et = et;
return this._get('/forex/klines', params);
}
/**
* Create WebSocket Connection
* @description Creates a WebSocket connection and returns a SocketClient object for managing connection and subscribing to real-time data. Subscription data can be specified through options parameter.
* Automatically handles connection retry and heartbeat mechanism to ensure connection stability and reliability.
* @param options - Optional options object for creating WebSocket connection {@link CreateSocketOptions}
* @returns SocketClient object for managing WebSocket connection
* @example
* ```typescript
* // Create a WebSocket connection and subscribe to tick and quote data for EURUSD and GBPUSD
* const client = new ForexClient(token);
* const socket = client.createSocket({
* subscribeData: {
* codes: ['EURUSD$GB', 'GBPUSD$GB'],
* types: ['tick','quote']
* }
* });
* socket.onSocketMessage(data => {
* console.log('Received WebSocket message:', data);
* });
* ```
* @see Official Documentation https://docs.itick.org/websocket/forex
*/
createSocket(options) {
return this._createSocket('/forex', options);
}
}
exports.ForexClient = ForexClient;
//# sourceMappingURL=index.js.map