Back to Ccxt

Fetch Ohlcv Many Exchanges Continuosly

wiki/examples/ts/fetch-ohlcv-many-exchanges-continuosly.md

4.5.521.3 KB
Original Source
javascript
import ccxt from '../../js/ccxt.js';

// AUTO-TRANSPILE //

// fetch and handle constinuosly
async function fetchOHLCVContinuously (exchange, symbol) {
   while (true) {
       try {
           const ohlcv = await exchange.fetchOHLCV (symbol);
           const ohlcvLength = ohlcv.length;
           console.log ('Fetched ', exchange.id, ' - ', symbol, ' candles. last candle: ', ohlcv[ohlcvLength - 1]);
       } catch (e) {
           console.log (e);
           break;
       }
   }
}

// start exchanges and fetch OHLCV loop
async function startExchange (exchangeName, symbols) {
   const ex = new ccxt[exchangeName] ({});
   const promises = [];
   for (let i = 0; i < symbols.length; i++) {
       const symbol = symbols[i];
       promises.push (fetchOHLCVContinuously (ex, symbol));
   }
   await Promise.all (promises);
   await ex.close ();
}

// main function
async function example () {
   const exchanges = [ 'binance', 'okx', 'kraken' ];
   const symbols = [ 'BTC/USDT', 'ETH/USDT' ];
   const promises = [];
   for (let i = 0; i < exchanges.length; i++) {
       const exchangeName = exchanges[i];
       promises.push (startExchange (exchangeName, symbols));
   }
   await Promise.all (promises);
}


await example ();