tlab-trading-toolkit
Version:
A trading toolkit for building advanced trading bots on the GDAX platform
62 lines (61 loc) • 2.98 kB
JavaScript
;
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();