UNPKG

tlab-trading-toolkit

Version:

A trading toolkit for building advanced trading bots on the GDAX platform

62 lines (61 loc) 2.98 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const factories_1 = require("./factories"); const RedisBook_1 = require("./lib/RedisBook"); const Logger_1 = require("./utils/Logger"); const _1 = require("."); const logger = Logger_1.ConsoleLoggerFactory({ level: 'debug' }); let PRODUCTS = "BTC/USD,ETH/USD"; console.log("USING PRODUCTS", PRODUCTS); function main() { return __awaiter(this, void 0, void 0, function* () { let EXCHANGE = "GDAX"; console.log('Configuring Exchange ', EXCHANGE); yield _1.Exchanges.ProductMap.configureExchange(EXCHANGE); let processProducts = yield _1.Exchanges.ProductMap.ExchangeMap.get(EXCHANGE).getAvailableProducts(); console.log('Total available products', processProducts.length); let products = processProducts.slice(1, 1); products = PRODUCTS.length > 0 ? PRODUCTS.split(',') : products; // var p = await Exchanges.ProductMap.ExchangeMap.get(EXCHANGE).getExchangeProduct("BTC/USD"); // assert(p, "BTC-USD") // var p = await Exchanges.ProductMap.ExchangeMap.get(EXCHANGE).getGenericProduct("BTC-USD"); // assert(p, "BTC/USD") products.forEach((product) => { const config = { product: product, logger: logger, exchange: EXCHANGE, }; const book = new RedisBook_1.RedisBook(config); book.on('LiveOrderbook.skippedMessage', (details) => { // On GDAX, this event should never be emitted, but we put it here for completeness // console.log('SKIPPED MESSAGE', details); console.log('Reconnecting to feed'); process.exit(10); }); book.on('LiveOrderbook.update', (message) => { console.log('Received level message '); // console.log(message); }); book.on('end', () => { console.log('Orderbook closed'); }); book.on('error', (err) => { console.log('Livebook errored: ', err); }); book.on('data', (data) => { console.log('Received data '); }); factories_1.GDAX.FeedFactory(logger, [product]).then((feed) => { feed.pipe(book); }); }); }); } main();