Initial commit
This commit is contained in:
127
mocks/helpers.js
Normal file
127
mocks/helpers.js
Normal file
@@ -0,0 +1,127 @@
|
||||
const getRandomArbitrary = (min, max, precision) => {
|
||||
const randomValue = Math.random() * (max - min) + min;
|
||||
|
||||
return precision ? randomValue.toFixed(precision) : randomValue;
|
||||
}
|
||||
|
||||
const getRandomInt = (min, max) => {
|
||||
min = Math.ceil(min);
|
||||
max = Math.floor(max);
|
||||
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
}
|
||||
|
||||
|
||||
const Helpers = {
|
||||
getMarketInfos: (marketName) => {
|
||||
let pairs = marketName.split("/");
|
||||
let baseUnit = pairs[0].toLowerCase();
|
||||
let quoteUnit = pairs[1].toLowerCase();
|
||||
let marketId = `${baseUnit}${quoteUnit}`;
|
||||
|
||||
return {
|
||||
baseUnit,
|
||||
quoteUnit,
|
||||
marketId,
|
||||
}
|
||||
},
|
||||
getTickers: (markets) => {
|
||||
let tickers = {}
|
||||
markets.forEach(name => {
|
||||
let { marketId } = Helpers.getMarketInfos(name);
|
||||
const change = (10 + Math.random() * 10) * (Math.random() > 0.5 ? 1 : -1);
|
||||
const coeffChange = 1 + parseFloat(change / 1000);
|
||||
const open = 0.134 * coeffChange;
|
||||
const last = 0.134 / coeffChange;
|
||||
const price_change_percent = (last - open) / last * 100;
|
||||
const signPrefix = price_change_percent >= 0 ? '+' : '-';
|
||||
|
||||
tickers[marketId] = {
|
||||
"amount": `${15 * coeffChange}`,
|
||||
"low": `${0.001 * coeffChange}`,
|
||||
"high": `${0.145 * coeffChange}`,
|
||||
"last": `${last}`,
|
||||
"open": open,
|
||||
"volume": `${3500 * coeffChange}`,
|
||||
"avg_price": "0.0",
|
||||
"price_change_percent": `${signPrefix}${Math.abs(price_change_percent.toFixed(2))}%`,
|
||||
"at": Date.now() / 1000,
|
||||
}
|
||||
});
|
||||
|
||||
return tickers;
|
||||
},
|
||||
getBalances: () => {
|
||||
const getBalanceValue = (value, precision) => ((Math.random() > 0.5 ? 1 : -1) * Math.random() / 10 + +value).toFixed(precision);
|
||||
const getLockedValue = (value, precision) => (Math.random() / 10 + +value).toFixed(precision);
|
||||
|
||||
return {
|
||||
"bch": [getBalanceValue("10.12", 8), getLockedValue("0.001", 8)],
|
||||
"btc": [getBalanceValue("0.21026373", 8), getLockedValue("0.0001", 8)],
|
||||
"dash": [getBalanceValue("5", 6), getLockedValue("0.0005", 6)],
|
||||
"eth": [getBalanceValue("5", 6), getLockedValue("0.0002", 6)],
|
||||
"usd": [getBalanceValue("1000", 2), getLockedValue("100", 2)]
|
||||
}
|
||||
},
|
||||
getDepth: (sequence) => {
|
||||
const delta = 2 * (1 + Math.cos(2 * Math.PI * Date.now() / 1000 / 3600))
|
||||
const fV = (volume) => String(parseFloat(volume) + delta * 10);
|
||||
|
||||
return {
|
||||
"asks": [
|
||||
["15.0", fV("1.5")],
|
||||
["20.0", fV("80")],
|
||||
["20.5", fV("10.0")],
|
||||
["30.0", fV("1.0")]
|
||||
],
|
||||
"bids": [
|
||||
["10.95", fV("1.5")],
|
||||
["10.90", fV("45")],
|
||||
["10.85", fV("35")],
|
||||
["10.70", fV("10")],
|
||||
],
|
||||
"sequence": sequence,
|
||||
}
|
||||
},
|
||||
getDepthIncrement: (sequence) => {
|
||||
const delta = getRandomArbitrary(1, 100, 2) * (1 + Math.cos(2 * Math.PI * Date.now() / 1000 / 3600))
|
||||
const fV = (volume) => String(parseFloat(volume) + delta);
|
||||
const countOfAsks = getRandomInt(1, 5);
|
||||
const countOfBids = getRandomInt(1, 5);
|
||||
const sideProbability = Math.random();
|
||||
const asks = [];
|
||||
const bids = [];
|
||||
|
||||
for (var i = 0; i < countOfAsks; i++) {
|
||||
asks.push([getRandomArbitrary(15, 20, 1), fV("1.5")]);
|
||||
}
|
||||
|
||||
for (var i = 0; i < countOfBids; i++) {
|
||||
bids.push([getRandomArbitrary(10, 12, 2), fV("1.5")]);
|
||||
}
|
||||
|
||||
if (sideProbability < 0.25) {
|
||||
return {
|
||||
"asks": asks,
|
||||
"sequence": sequence,
|
||||
}
|
||||
}
|
||||
|
||||
if (sideProbability < 0.5) {
|
||||
return {
|
||||
"bids": bids,
|
||||
"sequence": sequence,
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
"bids": asks,
|
||||
"asks": bids,
|
||||
"sequence": sequence,
|
||||
}
|
||||
},
|
||||
getStreamsFromUrl: (url) => url.replace("/", "").split(/[&?]stream=/).filter(stream => stream.length > 0),
|
||||
unique: (list) => list.filter((value, index, self) => self.indexOf(value) === index)
|
||||
}
|
||||
|
||||
module.exports = Helpers;
|
||||
Reference in New Issue
Block a user