bluebot
Version:
A bitcoin trading bot for auto trading at various exchanges
190 lines (188 loc) • 4.85 kB
JavaScript
// All plugins supported by BlueBot.
//
// Required parameters per plugin.
//
// name: Name of the plugin
// slug: name of the plugin mapped to the config key. Expected
// filename to exist in `bluebot/plugins/` (only if path is not
// specified)
// async: upon creating a new plugin instance, does something async
// happen where BlueBot needs to wait for? If set to true, the
// constructor will be passed a callback which it should execute
// as soon as BlueBot can continue.
// modes: a list indicating in what BlueBot modes this plugin is
// allowed to run. Realtime is during a live market watch and
// backtest is during a backtest.
//
// Optional parameters per plugin.
//
// description: text describing the plugin.
// dependencies: a list of external npm modules this plugin requires to
// be installed.
// emits: events emitted by this plugin that other plugins can subscribe to.
// path: fn that returns path of file of the plugin (overwrites `bluebot/plugins/{slug}`)
// when given the configuration object (relative from `bluebot/plugins/`).
var plugins = [
{
name: 'Candle writer',
description: 'Store candles in a database',
slug: 'candleWriter',
async: true,
modes: ['realtime', 'importer'],
path: config => config.adapter + '/writer',
version: 0.1,
},
{
name: 'Trading Advisor',
description: 'Calculate trading advice',
slug: 'tradingAdvisor',
async: true,
modes: ['realtime', 'backtest'],
emits: ['advice'],
path: config => 'tradingAdvisor/tradingAdvisor.js',
},
{
name: 'IRC bot',
description: 'IRC module lets you communicate with BlueBot on IRC.',
slug: 'ircbot',
async: false,
modes: ['realtime'],
dependencies: [{
module: 'irc',
version: '0.5.2'
}]
},
{
name: 'Telegram bot',
description: 'Telegram module lets you communicate with BlueBot on Telegram.',
slug: 'telegrambot',
async: false,
modes: ['realtime'],
dependencies: [{
module: 'node-telegram-bot-api',
version: '0.24.0'
}]
},
{
name: 'XMPP bot',
description: 'XMPP module lets you communicate with BlueBot on Jabber.',
slug: 'xmppbot',
async: false,
silent: false,
modes: ['realtime'],
dependencies: [{
module: 'node-xmpp-client',
version: '3.0.2'
}]
},
{
name: 'Pushover',
description: 'Sends pushover.',
slug: 'pushover',
async: false,
modes: ['realtime'],
dependencies: [{
module: 'pushover-notifications',
version: '0.2.3'
}]
},
{
name: 'Campfire bot',
description: 'Lets you communicate with BlueBot on Campfire.',
slug: 'campfire',
async: false,
modes: ['realtime'],
dependencies: [{
module: 'ranger',
version: '0.2.4'
}]
},
{
name: 'Mailer',
description: 'Sends you an email everytime BlueBot has new advice.',
slug: 'mailer',
async: true,
modes: ['realtime'],
dependencies: [{
module: 'emailjs',
version: '1.0.5'
}, {
module: 'prompt-lite',
version: '0.1.1'
}]
},
{
name: 'Advice logger',
description: '',
slug: 'adviceLogger',
async: false,
silent: true,
modes: ['realtime']
},
{
name: 'Trader',
description: 'Follows the advice and create real orders.',
slug: 'trader',
async: true,
modes: ['realtime'],
emits: ['portfolioUpdate', 'trade'],
path: config => 'trader/trader.js',
},
{
name: 'Paper Trader',
description: 'Paper trader that simulates fake trades.',
slug: 'paperTrader',
async: false,
modes: ['realtime', 'backtest'],
emits: ['portfolioUpdate', 'trade'],
path: config => 'paperTrader/paperTrader.js',
},
{
name: 'Performance Analyzer',
description: 'Analyzes performances of trades',
slug: 'performanceAnalyzer',
async: false,
modes: ['realtime', 'backtest'],
path: config => 'performanceAnalyzer/performanceAnalyzer.js',
},
{
name: 'Redis beacon',
slug: 'redisBeacon',
description: 'Publish events over Redis Pub/Sub',
async: true,
modes: ['realtime'],
dependencies: [{
module: 'redis',
version: '0.10.0'
}]
},
{
name: 'Pushbullet',
description: 'Sends advice to pushbullet.',
slug: 'pushbullet',
async: false,
modes: ['realtime']
},
{
name: 'Twitter',
description: 'Sends trades to twitter.',
slug: 'twitter',
async: false,
modes: ['realtime']
},
{
name: 'Slack',
description: 'Sends trades to slack channel.',
slug: 'slack',
async: false,
modes: ['realtime']
},
{
name: 'IFTTT',
description: 'Sends trades to IFTTTT webhook.',
slug: 'ifttt',
async: false,
modes: ['realtime']
}
];
module.exports = plugins;