This repository has been archived on 2025-10-29. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
gekko/exchange/wrappers/DEBUG_exchange-simulator.js
T
2021-06-06 20:25:14 +02:00

73 lines
1.5 KiB
JavaScript

// Fake exchanges: used to test purposes to develop Gekko (works without internet).
const _ = require('lodash');
const moment = require('moment');
const TREND_DURATION = 1000;
const Trader = function() {
this.name = 'Exchange Simulator';
this.at = moment().subtract(30, 'minutes');
// fake data
this.price = 100;
this.trend = 'up';
this.tid = 0;
}
Trader.prototype.getTrades = function(since, cb) {
const amount = moment().diff(this.at, 'seconds');
const trades = _.range(amount).map(() => {
this.tid++;
if(this.tid % TREND_DURATION === 0) {
if(this.trend === 'up')
this.trend = 'down';
else
this.trend = 'up';
}
if(this.trend === 'up')
this.price += Math.random();
else
this.price -= Math.random();
return {
date: this.at.add(1, 'seconds').unix(),
price: this.price,
amount: Math.random() * 100,
tid: this.tid
}
});
console.log(
`[EXCHANGE SIMULATOR] emitted ${amount} fake trades, up until ${this.at.format('YYYY-MM-DD HH:mm:ss')}.`
);
cb(null, trades);
}
Trader.getCapabilities = function () {
return {
name: 'Exchange Simulator',
slug: 'DEBUG_exchange-simulator',
currencies: ['USD'],
assets: ['BTC', 'BTC'],
maxTradesAge: 60,
maxHistoryFetch: null,
markets: [
{ pair: ['USD', 'BTC'], minimalOrder: { amount: 5, unit: 'currency' } },
],
requires: ['key', 'secret', 'username'],
fetchTimespan: 60,
tid: 'tid',
tradable: false
};
}
module.exports = Trader;