From 0fe36c9b10b651eaf987eeb23d9bf4fa97ce810a Mon Sep 17 00:00:00 2001 From: ololokiras Date: Wed, 4 Apr 2018 22:35:27 +0800 Subject: [PATCH 1/6] remove old tests --- test/market.spec.js | 149 -------------------------------------------- 1 file changed, 149 deletions(-) diff --git a/test/market.spec.js b/test/market.spec.js index d007a7f..d1e0feb 100644 --- a/test/market.spec.js +++ b/test/market.spec.js @@ -1,156 +1,7 @@ /* eslint-env jest */ -import { Apis } from 'bitsharesjs-ws'; -import Market from '../src/services/api/market.js'; import * as utils from '../src/utils'; -const btsId = '1.3.0'; -const eosId = '1.3.1999'; -const createLimitOrderFee = 92; -const bts = { - id: '1.3.0', - symbol: 'BTS', - precision: 5, - options: { - market_fee_percent: 0, - core_exchange_rate: { - base: { - amount: 1, - asset_id: '1.3.0' - }, - quote: { - amount: 1, - asset_id: '1.3.0' - } - } - } -}; - -const eos = { - id: '1.3.1999', - symbol: 'OPEN.EOS', - precision: 6, - options: { - market_fee_percent: 10, - core_exchange_rate: { - base: { - amount: 2, - asset_id: '1.3.0' - }, - quote: { - amount: 1, - asset_id: '1.3.1999' - } - }, - extensions: [] - } -}; - -const order1 = { - id: '1', - expiration: '2020-01-01T00:00:00', - seller: 'seller', - for_sale: 200, - sell_price: { - base: { amount: 400, asset_id: btsId }, - quote: { amount: 200, asset_id: eosId } - }, - deferred_fee: createLimitOrderFee -}; - -const order2 = { - id: '2', - expiration: '2020-01-01T00:00:00', - seller: 'seller', - for_sale: 500, - sell_price: { - base: { amount: 900, asset_id: '1.3.0' }, - quote: { amount: 500, asset_id: '1.3.1999' } - }, - deferred_fee: createLimitOrderFee -}; - - describe('market service', () => { - const market = Market; - test('subscribes to market', async done => { - await market.subscribeToMarket(btsId, eosId); - expect(market.getLimitOrders(btsId, eosId)) - .toEqual([]); - Apis.addOrder(order1); - expect(market.getLimitOrders(btsId, eosId)) - .toEqual([order1]); - const initialAmount = order1.for_sale; - Apis.fillOrder(order1.id, 10); - const [order] = market.getLimitOrders(btsId, eosId); - expect(order.for_sale).toEqual(initialAmount - 10); - order1.for_sale = initialAmount; - Apis.deleteOrder(order1.id); - expect(market.getLimitOrders(btsId, eosId)) - .toEqual([]); - done(); - }); - test('calculates fees', () => { - expect(market.getExchangeFees(eos, bts)).toEqual({ - marketFeePercent: 0, - transactionFee: createLimitOrderFee / 2 - }); - expect(market.getExchangeFees(bts, eos)).toEqual({ - marketFeePercent: 0.001, - transactionFee: createLimitOrderFee - }); - }); - test('gets orders for exchange', () => { - Apis.addOrder(order2); - Apis.addOrder(order1); - expect(market.getExchangeOrders(eos, bts, 50)).toEqual([{ - amount: 50 - market.getExchangeFees(eos, bts).transactionFee, - order: order1 - }]); - }); - test('calculates distributions to fit updates', () => { - const balances = { - bts: 250, - usd: 250, - cny: 250, - eos: 250 - }; - const update = { - bts: 0.5, - usd: 0, - cny: 0.5, - eos: 0 - }; - expect(utils.calcPortfolioDistributionChange(balances, update)).toEqual({ - sell: { - usd: 1, - eos: 1 - }, - buy: { - bts: 0.5, - cny: 0.5 - } - }); - // TODO: consider floats comparing - expect(utils.calcPortfolioDistributionChange({ - '1.3.0': 0, - '1.3.113': 400, - '1.3.121': 100, - '1.3.1999': 500 - }, { - '1.3.0': 0.15, - '1.3.113': 0.45, - '1.3.121': 0.1, - '1.3.1999': 0.3 - })).toEqual({ - sell: { - '1.3.1999': 0.4 - }, - buy: { - '1.3.0': 0.75, - '1.3.113': 0.24999999999999992 - } - }); - }); test('samples distribution to specified accuracy', () => { expect(utils.distributionSampling( { From 3319d3684efb8448ccb264c54aa17a3ba113e558 Mon Sep 17 00:00:00 2001 From: ololokiras Date: Fri, 6 Apr 2018 01:50:12 +0800 Subject: [PATCH 2/6] add test subscribe to market --- src/services/api/__mocks__/market.js | 235 +++++++++++++++++++++++++++ src/services/api/market.js | 19 ++- test/market.spec.js | 196 ++++++++++++++++++++++ 3 files changed, 449 insertions(+), 1 deletion(-) create mode 100644 src/services/api/__mocks__/market.js diff --git a/src/services/api/__mocks__/market.js b/src/services/api/__mocks__/market.js new file mode 100644 index 0000000..145edc4 --- /dev/null +++ b/src/services/api/__mocks__/market.js @@ -0,0 +1,235 @@ +const orderBuy1 = { + deferred_fee: 578, + expiration: '2019-04-05T15:34:23', + for_sale: 14734920, + id: '1.7.62250477', + sell_price: { + base: { + amount: 14734920, + asset_id: '1.3.0' + }, + quote: { + amount: 55769, + asset_id: '1.3.850' + } + }, + seller: '1.2.132834' +}; + +const orderBuy2 = { + deferred_fee: 578, + expiration: '2023-04-05T15:32:43', + for_sale: 50607694, + id: '1.7.62250393', + sell_price: { + base: { + amount: 50607694, + asset_id: '1.3.0' + }, + quote: { + amount: 191664, + asset_id: '1.3.850' + } + }, + seller: '1.2.493448' +}; + +const orderBuy3 = { + deferred_fee: 578, + expiration: '2023-04-04T15:34:31', + for_sale: 52802994, + id: '1.7.62250482', + sell_price: { + base: { + amount: 52802994, + asset_id: '1.3.0' + }, + quote: { + amount: 200000, + asset_id: '1.3.850' + } + }, + seller: '1.2.126225' +}; + +const orderBuy4 = { + deferred_fee: 578, + expiration: '2019-04-05T14:16:21', + for_sale: 1552408, + id: '1.7.62243769', + sell_price: { + base: { + amount: 1552408, + asset_id: '1.3.0' + }, + quote: { + amount: 5880, + asset_id: '1.3.850' + } + }, + seller: '1.2.376918' +}; + +const orderBuy5 = { + deferred_fee: 578, + expiration: '2023-04-05T14:07:21', + for_sale: 10000000, + id: '1.7.62243039', + sell_price: { + base: { + amount: 10000000, + asset_id: '1.3.0' + }, + quote: { + amount: 37915, + asset_id: '1.3.850' + } + }, + seller: '1.2.429491' +}; + + +const orderSell1 = { + deferred_fee: 578, + expiration: '2023-04-05T15:38:50', + for_sale: 3602966, + id: '1.7.62250730', + sell_price: { + base: { + amount: 4000000, + asset_id: '1.3.850' + }, + quote: { + amount: 1066400000, + asset_id: '1.3.0' + } + }, + seller: '1.2.354664' +}; + +const orderSell2 = { + deferred_fee: 0, + expiration: '2023-04-05T14:48:21', + for_sale: 18308, + id: '1.7.62246651', + sell_price: { + base: { + amount: 49903, + asset_id: '1.3.850' + }, + quote: { + amount: 13319110, + asset_id: '1.3.0' + } + }, + seller: '1.2.502341' +}; + +const orderSell3 = { + deferred_fee: 0, + expiration: '2018-04-20T18:46:31', + for_sale: 136333, + id: '1.7.62240965', + sell_price: { + base: { + amount: 234500, + asset_id: '1.3.850' + }, + quote: { + amount: 62879843, + asset_id: '1.3.0' + } + }, + seller: '1.2.1310' +}; + +const orderSell4 = { + deferred_fee: 578, + expiration: '2019-04-05T12:46:40', + for_sale: 139561, + id: '1.7.62236557', + sell_price: { + base: { + amount: 139561, + asset_id: '1.3.850' + }, + quote: { + amount: 38435099, + asset_id: '1.3.0' + } + }, + seller: '1.2.549541' +}; + +const orderSell5 = { + deferred_fee: 578, + expiration: '2018-04-12T06:56:56', + for_sale: 181540, + id: '1.7.62204518', + sell_price: { + base: { + amount: 181540, + asset_id: '1.3.850' + }, + quote: { + amount: 50000000, + asset_id: '1.3.0' + } + }, + seller: '1.2.770077' +}; + +const ordersArray = [orderBuy1, orderSell5, orderSell4, orderBuy2, orderSell3, orderBuy3, orderSell2, orderSell1, orderBuy4, orderBuy5]; + +const loadLimitOrders = async (baseId, quoteId, limit = 500) => { + const orders = ordersArray; + const buyOrders = []; + const sellOrders = []; + orders.forEach((order) => { + if (order.sell_price.base.asset_id === baseId) { + buyOrders.push(order); + } else { + sellOrders.push(order); + } + }); + return new Promise((resolve) => { + resolve({ buyOrders, sellOrders }); + }); +}; + +class Market { + constructor(base) { + this.base = base; + this.markets = {}; + this.fee = 578; + } + + setDefaultObjects(assetId) { + if (!this.markets[assetId]) { + this.markets[assetId] = { + orders: { + buy: [], sell: [] + }, + callback: () => {} + }; + } + } + + async subscribeToMarket(assetId, callback) { + if (assetId === this.base) return; + const { buyOrders, sellOrders } = await loadLimitOrders(this.base, assetId); + this.setDefaultObjects(assetId); + // console.log('setting default: ' + assetId + ' : ', this.markets[assetId]); + this.markets[assetId].orders.buy = buyOrders; + console.log('buyOrders', buyOrders); + this.markets[assetId].orders.sell = sellOrders; + console.log('sellOrders', sellOrders); + this.markets[assetId].callback = callback; + callback(); + } +} + +const markets = {}; +markets['1.3.0'] = new Market('1.3.0'); + +export default markets; diff --git a/src/services/api/market.js b/src/services/api/market.js index cfe007a..e25d684 100644 --- a/src/services/api/market.js +++ b/src/services/api/market.js @@ -1,8 +1,10 @@ import { Apis } from 'bitsharesjs-ws'; +import { getComissions } from './parameters'; import * as utils from '../../utils'; import listener from './chain-listener'; import Subscriptions from './subscriptions'; import config from '../../../config'; +import assetsActions from './assets'; const findOrder = (orderId) => { @@ -166,14 +168,29 @@ class Market { } } + async setMarketFees(commisions) { + console.log(commisions); + const { fetch } = assetsActions; + const [baseAsset] = await fetch([this.base]); + const cer = baseAsset.options.core_exchange_rate; + const multiplier = cer.quote.amount / cer.base.amount; + commisions.fees.map(x => x * multiplier); + this.commisions = commisions; + } + async subscribeToMarket(assetId, callback) { - if (assetId === this.base) return; + if (assetId === this.base) { + const commisions = await getComissions(); + await this.setMarketFees(commisions); + return; + } const { buyOrders, sellOrders } = await loadLimitOrders(this.base, assetId); this.setDefaultObjects(assetId); // console.log('setting default: ' + assetId + ' : ', this.markets[assetId]); this.markets[assetId].orders.buy = buyOrders; this.markets[assetId].orders.sell = sellOrders; this.markets[assetId].callback = callback; + callback(); } diff --git a/test/market.spec.js b/test/market.spec.js index d1e0feb..dc1fb4f 100644 --- a/test/market.spec.js +++ b/test/market.spec.js @@ -1,5 +1,192 @@ /* eslint-env jest */ import * as utils from '../src/utils'; +import markets from '../src/services/api/market.js'; + +jest.mock('../src/services/api/market.js'); + +const orderBuy1 = { + deferred_fee: 578, + expiration: '2019-04-05T15:34:23', + for_sale: 14734920, + id: '1.7.62250477', + sell_price: { + base: { + amount: 14734920, + asset_id: '1.3.0' + }, + quote: { + amount: 55769, + asset_id: '1.3.850' + } + }, + seller: '1.2.132834' +}; + +const orderBuy2 = { + deferred_fee: 578, + expiration: '2023-04-05T15:32:43', + for_sale: 50607694, + id: '1.7.62250393', + sell_price: { + base: { + amount: 50607694, + asset_id: '1.3.0' + }, + quote: { + amount: 191664, + asset_id: '1.3.850' + } + }, + seller: '1.2.493448' +}; + +const orderBuy3 = { + deferred_fee: 578, + expiration: '2023-04-04T15:34:31', + for_sale: 52802994, + id: '1.7.62250482', + sell_price: { + base: { + amount: 52802994, + asset_id: '1.3.0' + }, + quote: { + amount: 200000, + asset_id: '1.3.850' + } + }, + seller: '1.2.126225' +}; + +const orderBuy4 = { + deferred_fee: 578, + expiration: '2019-04-05T14:16:21', + for_sale: 1552408, + id: '1.7.62243769', + sell_price: { + base: { + amount: 1552408, + asset_id: '1.3.0' + }, + quote: { + amount: 5880, + asset_id: '1.3.850' + } + }, + seller: '1.2.376918' +}; + +const orderBuy5 = { + deferred_fee: 578, + expiration: '2023-04-05T14:07:21', + for_sale: 10000000, + id: '1.7.62243039', + sell_price: { + base: { + amount: 10000000, + asset_id: '1.3.0' + }, + quote: { + amount: 37915, + asset_id: '1.3.850' + } + }, + seller: '1.2.429491' +}; + +const buyOrders = [orderBuy1, orderBuy2, orderBuy3, orderBuy4, orderBuy5]; + +const orderSell1 = { + deferred_fee: 578, + expiration: '2023-04-05T15:38:50', + for_sale: 3602966, + id: '1.7.62250730', + sell_price: { + base: { + amount: 4000000, + asset_id: '1.3.850' + }, + quote: { + amount: 1066400000, + asset_id: '1.3.0' + } + }, + seller: '1.2.354664' +}; + +const orderSell2 = { + deferred_fee: 0, + expiration: '2023-04-05T14:48:21', + for_sale: 18308, + id: '1.7.62246651', + sell_price: { + base: { + amount: 49903, + asset_id: '1.3.850' + }, + quote: { + amount: 13319110, + asset_id: '1.3.0' + } + }, + seller: '1.2.502341' +}; + +const orderSell3 = { + deferred_fee: 0, + expiration: '2018-04-20T18:46:31', + for_sale: 136333, + id: '1.7.62240965', + sell_price: { + base: { + amount: 234500, + asset_id: '1.3.850' + }, + quote: { + amount: 62879843, + asset_id: '1.3.0' + } + }, + seller: '1.2.1310' +}; + +const orderSell4 = { + deferred_fee: 578, + expiration: '2019-04-05T12:46:40', + for_sale: 139561, + id: '1.7.62236557', + sell_price: { + base: { + amount: 139561, + asset_id: '1.3.850' + }, + quote: { + amount: 38435099, + asset_id: '1.3.0' + } + }, + seller: '1.2.549541' +}; + +const orderSell5 = { + deferred_fee: 578, + expiration: '2018-04-12T06:56:56', + for_sale: 181540, + id: '1.7.62204518', + sell_price: { + base: { + amount: 181540, + asset_id: '1.3.850' + }, + quote: { + amount: 50000000, + asset_id: '1.3.0' + } + }, + seller: '1.2.770077' +}; + +const sellOrders = [orderSell5, orderSell4, orderSell3, orderSell2, orderSell1]; describe('market service', () => { test('samples distribution to specified accuracy', () => { @@ -26,4 +213,13 @@ describe('market service', () => { '1.3.1999': 0 }); }); + const market = markets['1.3.0']; + it('subscribe to market', async done => { + function callback() { + expect(market.markets['1.3.850'].orders.buy).toEqual(buyOrders); + expect(market.markets['1.3.850'].orders.sell).toEqual(sellOrders); + } + await market.subscribeToMarket('1.3.850', callback); + done(); + }); }); From 683c987c248503d8707c5fa3ab16ed1c578e45e9 Mon Sep 17 00:00:00 2001 From: ololokiras Date: Fri, 6 Apr 2018 02:04:07 +0800 Subject: [PATCH 3/6] add sub/unsub to exchange rate --- src/modules/market.js | 1 + src/services/api/__mocks__/market.js | 64 ++++++++++++++++++++++++++++ test/market.spec.js | 9 +++- 3 files changed, 73 insertions(+), 1 deletion(-) diff --git a/src/modules/market.js b/src/modules/market.js index 34b8419..e99f863 100644 --- a/src/modules/market.js +++ b/src/modules/market.js @@ -35,6 +35,7 @@ const actions = { Promise.all(assetsIds.map(assetId => { const { balance } = balances[assetId]; + console.log('assetId balance', assetId, balance); return BtsMarket.subscribeToExchangeRate(assetId, balance, (id, amount) => { if (!amount) return; const rate = amount / balance; diff --git a/src/services/api/__mocks__/market.js b/src/services/api/__mocks__/market.js index 145edc4..ebe192f 100644 --- a/src/services/api/__mocks__/market.js +++ b/src/services/api/__mocks__/market.js @@ -197,6 +197,20 @@ const loadLimitOrders = async (baseId, quoteId, limit = 500) => { }); }; +const calcOrderRate = (order) => { + const { + sell_price: { + quote: { + amount: quoteAmount + }, + base: { + amount: baseAmount + } + } + } = order; + return baseAmount / quoteAmount; +}; + class Market { constructor(base) { this.base = base; @@ -227,6 +241,56 @@ class Market { this.markets[assetId].callback = callback; callback(); } + + calcExchangeRate(assetId, weWantTo, amount) { + let totalPay = amount; + let totalReceive = 0; + + const requiredType = (weWantTo === 'sell') ? 'buy' : 'sell'; + // console.log('cakc exchange rate for ' + assetId + ': ', this.markets[assetId]); + const orders = [...this.markets[assetId].orders[requiredType]].sort((a, b) => + calcOrderRate(b) - calcOrderRate(a)); + for (let i = 0; i < orders.length; i += 1) { + const { for_sale: saleAmount, sell_price: price } = orders[i]; + const orderPrice = price.base.amount / price.quote.amount; + const weCanPayHere = saleAmount / orderPrice; + + if (totalPay > weCanPayHere) { + totalReceive += saleAmount; + totalPay -= weCanPayHere; + } else { + totalReceive += totalPay * orderPrice; + break; + } + } + return Math.floor(totalReceive); + } + + async subscribeToExchangeRate(assetId, amount, callback) { + let canReceiveInBasePrev = 0; + const wrappedCallback = () => { + const canReceiveInBase = this.calcExchangeRate(assetId, 'sell', amount); + if (canReceiveInBase !== canReceiveInBasePrev && canReceiveInBase > 0) { + canReceiveInBasePrev = canReceiveInBase; + callback(assetId, canReceiveInBase); + } + }; + await this.subscribeToMarket(assetId, wrappedCallback); + } + + isSubscribed(assetId) { + return (this.markets[assetId] !== undefined); + } + + unsubscribeFromExchangeRate(assetId) { + this.unsubscribeFromMarket(assetId); + } + + unsubscribeFromMarket(assetId) { + if (this.isSubscribed(assetId)) { + delete this.markets[assetId]; + } + } } const markets = {}; diff --git a/test/market.spec.js b/test/market.spec.js index dc1fb4f..1c66f92 100644 --- a/test/market.spec.js +++ b/test/market.spec.js @@ -219,7 +219,14 @@ describe('market service', () => { expect(market.markets['1.3.850'].orders.buy).toEqual(buyOrders); expect(market.markets['1.3.850'].orders.sell).toEqual(sellOrders); } - await market.subscribeToMarket('1.3.850', callback); + await market.subscribeToExchangeRate('1.3.850', 1758, callback); done(); }); + test('unsubscribe from exchangeRate', () => { + market.unsubscribeFromExchangeRate('1.3.850'); + expect(market.markets['1.3.850']).toBe(undefined); + }); }); + + +// assetId balance 1.3.850 1758 \ No newline at end of file From 0123568c0e8cc9f9b5d6855c770c9cc31999612a Mon Sep 17 00:00:00 2001 From: ololokiras Date: Fri, 6 Apr 2018 18:05:21 +0800 Subject: [PATCH 4/6] add generate orders test --- src/modules/market.js | 1 - src/services/api/__mocks__/market.js | 128 +++++++++++++++++++++++ src/services/api/market.js | 8 +- test/market.spec.js | 145 ++++++++++++++++++++++++++- 4 files changed, 275 insertions(+), 7 deletions(-) diff --git a/src/modules/market.js b/src/modules/market.js index e99f863..34b8419 100644 --- a/src/modules/market.js +++ b/src/modules/market.js @@ -35,7 +35,6 @@ const actions = { Promise.all(assetsIds.map(assetId => { const { balance } = balances[assetId]; - console.log('assetId balance', assetId, balance); return BtsMarket.subscribeToExchangeRate(assetId, balance, (id, amount) => { if (!amount) return; const rate = amount / balance; diff --git a/src/services/api/__mocks__/market.js b/src/services/api/__mocks__/market.js index ebe192f..3dce4e6 100644 --- a/src/services/api/__mocks__/market.js +++ b/src/services/api/__mocks__/market.js @@ -181,6 +181,8 @@ const orderSell5 = { const ordersArray = [orderBuy1, orderSell5, orderSell4, orderBuy2, orderSell3, orderBuy3, orderSell2, orderSell1, orderBuy4, orderBuy5]; + + const loadLimitOrders = async (baseId, quoteId, limit = 500) => { const orders = ordersArray; const buyOrders = []; @@ -211,6 +213,59 @@ const calcOrderRate = (order) => { return baseAmount / quoteAmount; }; +const distributionFromBalances = (balances) => { + const total = Object.keys(balances).reduce((res, key) => res + balances[key], 0); + return Object.keys(balances).reduce( + (res, key) => Object.assign(res, { [key]: balances[key] / total }), + {} + ); +}; + +const getValuesToUpdate = (balances, baseBalances, update) => { + const totalBase = Object.keys(baseBalances).reduce((res, key) => res + baseBalances[key], 0); + const distribution = distributionFromBalances(baseBalances); + + const result = { + sell: {}, + buy: {} + }; + + Object.keys(update).forEach((assetId) => { + if (assetId === '1.3.0') return; + const futureShare = update[assetId]; + const currentShare = distribution[assetId]; + + console.log('CALC VALUES:', assetId); + console.log(futureShare); + console.log(currentShare); + + + if (futureShare === 0) { + result.sell[assetId] = balances[assetId]; + } else if (futureShare > currentShare) { + const futureBase = Math.floor(totalBase * futureShare); + const currentBase = Math.floor(totalBase * currentShare); + result.buy[assetId] = futureBase - currentBase; + } else { + const fullAmmountInCurrent = Math.floor(balances[assetId] / currentShare); + const amountInFuture = Math.floor(fullAmmountInCurrent * futureShare); + const otherPortfolioAmount = fullAmmountInCurrent - balances[assetId]; + const amountToSell = fullAmmountInCurrent - otherPortfolioAmount - amountInFuture; + result.sell[assetId] = amountToSell; + } + }); + return result; +}; + +const createOrder = ({ sell, receive, userId, fillOrKill = false }) => { + return { + seller: userId, + amount_to_sell: sell, + min_to_receive: receive, + fill_or_kill: fillOrKill + }; +}; + class Market { constructor(base) { this.base = base; @@ -218,6 +273,10 @@ class Market { this.fee = 578; } + getFee() { + return this.fee; + } + setDefaultObjects(assetId) { if (!this.markets[assetId]) { this.markets[assetId] = { @@ -291,6 +350,75 @@ class Market { delete this.markets[assetId]; } } + + + generateOrders({ update, balances, baseBalances, userId }) { + console.log('GENERATE ORDERS'); + console.log('update', update); + console.log('balances', balances); + console.log('baseBalances', baseBalances); + const calculated = getValuesToUpdate(balances, baseBalances, update); + const sellOrders = []; + const buyOrders = []; + + Object.keys(calculated.sell).forEach((assetId) => { + const toSell = calculated.sell[assetId]; + // if (!toSell) return; + let toReceive = this.calcExchangeRate(assetId, 'sell', toSell); + const fee = this.getFee(assetId); + if (toReceive > fee) { + toReceive -= fee; + const orderObject = { + sell: { + asset_id: assetId, + amount: toSell + }, + receive: { + asset_id: this.base, + amount: toReceive + }, + userId, + fillOrKill: true + }; + const order = createOrder(orderObject); + + sellOrders.push(order); + } + }); + + // console.log('sell orders: ', sellOrders); + + + Object.keys(calculated.buy).forEach((assetId) => { + let toSellBase = calculated.buy[assetId]; + const fee = this.getFee(assetId); + if (toSellBase > fee) { + toSellBase -= fee; + const toReceive = this.calcExchangeRate(assetId, 'buy', toSellBase); + if (!toReceive) return; + const orderObject = { + sell: { + asset_id: this.base, + amount: toSellBase + }, + receive: { + asset_id: assetId, + amount: toReceive + }, + userId + }; + const order = createOrder(orderObject); + buyOrders.push(order); + } + }); + + console.log('buy orders: ', buyOrders); + console.log('sell orders', sellOrders); + return { + sellOrders, + buyOrders + }; + } } const markets = {}; diff --git a/src/services/api/market.js b/src/services/api/market.js index e25d684..5e3ab60 100644 --- a/src/services/api/market.js +++ b/src/services/api/market.js @@ -169,7 +169,6 @@ class Market { } async setMarketFees(commisions) { - console.log(commisions); const { fetch } = assetsActions; const [baseAsset] = await fetch([this.base]); const cer = baseAsset.options.core_exchange_rate; @@ -245,6 +244,10 @@ class Market { } generateOrders({ update, balances, baseBalances, userId }) { + console.log('GENERATE ORDERS'); + console.log('update', update); + console.log('balances', balances); + console.log('baseBalances', baseBalances); const calculated = utils.getValuesToUpdate(balances, baseBalances, update); const sellOrders = []; const buyOrders = []; @@ -274,7 +277,7 @@ class Market { } }); - console.log('sell orders: ', sellOrders); + // console.log('sell orders: ', sellOrders); Object.keys(calculated.buy).forEach((assetId) => { @@ -301,6 +304,7 @@ class Market { }); console.log('buy orders: ', buyOrders); + console.log('sell orders', sellOrders); return { sellOrders, buyOrders diff --git a/test/market.spec.js b/test/market.spec.js index 1c66f92..76ae31e 100644 --- a/test/market.spec.js +++ b/test/market.spec.js @@ -94,7 +94,7 @@ const orderBuy5 = { seller: '1.2.429491' }; -const buyOrders = [orderBuy1, orderBuy2, orderBuy3, orderBuy4, orderBuy5]; +const buyOrdersSubscribe = [orderBuy1, orderBuy2, orderBuy3, orderBuy4, orderBuy5]; const orderSell1 = { deferred_fee: 578, @@ -186,7 +186,126 @@ const orderSell5 = { seller: '1.2.770077' }; -const sellOrders = [orderSell5, orderSell4, orderSell3, orderSell2, orderSell1]; +const sellOrdersSubscribe = [orderSell5, orderSell4, orderSell3, orderSell2, orderSell1]; + +// const update = { +// '1.3.0': 0.04, +// '1.3.121': 0, +// '1.3.850': 0.1, +// '1.3.858': 0.05, +// '1.3.859': 0.1, +// '1.3.861': 0.6, +// '1.3.973': 0.04, +// '1.3.1999': 0.04, +// '1.3.2418': 0.03, +// '1.3.3588': 0 +// }; + +// const balances = { +// '1.3.0': 17247, +// '1.3.113': 0, +// '1.3.121': 14874, +// '1.3.850': 0, +// '1.3.858': 108536, +// '1.3.859': 0, +// '1.3.861': 0, +// '1.3.943': 0, +// '1.3.973': 124, +// '1.3.1042': 0, +// '1.3.1093': 0, +// '1.3.1362': 0, +// '1.3.1578': 0, +// '1.3.1893': 0, +// '1.3.1999': 98640, +// '1.3.2001': 0, +// '1.3.2379': 0, +// '1.3.2418': 340035311, +// '1.3.2786': 0, +// '1.3.2935': 0, +// '1.3.3128': 0, +// '1.3.3219': 0, +// '1.3.3365': 0, +// '1.3.3368': 0, +// '1.3.3376': 0, +// '1.3.3382': 1, +// '1.3.3547': 0, +// '1.3.3587': 1, +// '1.3.3588': 1, +// '1.3.3591': 0, +// '1.3.3602': 0, +// '1.3.3609': 0, +// '1.3.3612': 1, +// '1.3.3664': 0, +// '1.3.3666': 0, +// }; + +// const baseBalances = { +// '1.3.0': 17247, +// '1.3.113': 0, +// '1.3.121': 1170747, +// '1.3.850': 0, +// '1.3.858': 217179.99999999997, +// '1.3.859': 0, +// '1.3.861': 0, +// '1.3.943': 0, +// '1.3.973': 144833, +// '1.3.1042': 0, +// '1.3.1093': 0, +// '1.3.1362': 0, +// '1.3.1578': 0, +// '1.3.189': 0, +// '1.3.1999': 407857, +// '1.3.2001': 0, +// '1.3.2379': 0, +// '1.3.2418': 173336, +// '1.3.2786': 0, +// '1.3.2935': 0, +// '1.3.3128': 0, +// '1.3.3219': 0, +// '1.3.3365': 0, +// '1.3.3368': 0, +// '1.3.3376': 0, +// '1.3.3382': 301, +// '1.3.3547': 0, +// '1.3.3587': 411, +// '1.3.3588': 690, +// '1.3.3591': 0, +// '1.3.3602': 0, +// '1.3.3609': 0, +// '1.3.3612': 325, +// '1.3.3664': 0, +// '1.3.3666': 0 +// }; + +const update = { + '1.3.0': 0.04, + '1.3.850': 0.1, +}; + +const balances = { + '1.3.0': 17247, + '1.3.850': 0, +}; + +const baseBalances = { + '1.3.0': 17247, + '1.3.850': 0, +}; + +const buyOrdersGenerated = [{ + seller: '1.2.512210', + amount_to_sell: { + asset_id: '1.3.0', + amount: 1146 + }, + min_to_receive: { + asset_id: '1.3.850', + amount: 4 + }, + fill_or_kill: false +}]; + +const sellOrdersGenerated = []; describe('market service', () => { test('samples distribution to specified accuracy', () => { @@ -214,18 +333,36 @@ describe('market service', () => { }); }); const market = markets['1.3.0']; + it('subscribe to market', async done => { function callback() { - expect(market.markets['1.3.850'].orders.buy).toEqual(buyOrders); - expect(market.markets['1.3.850'].orders.sell).toEqual(sellOrders); + expect(market.markets['1.3.850'].orders.buy).toEqual(buyOrdersSubscribe); + expect(market.markets['1.3.850'].orders.sell).toEqual(sellOrdersSubscribe); } await market.subscribeToExchangeRate('1.3.850', 1758, callback); done(); }); + + test('generate orders', () => { + market.subscribeToExchangeRate('1.3.0'); + const userId = '1.2.512210'; + const objForGenerateOrders = { + update, + balances, + baseBalances, + userId + }; + const { buyOrders, sellOrders } = market.generateOrders(objForGenerateOrders); + expect(buyOrders).toEqual(buyOrdersGenerated); + expect(sellOrders).toEqual(sellOrdersGenerated); + }); + test('unsubscribe from exchangeRate', () => { market.unsubscribeFromExchangeRate('1.3.850'); expect(market.markets['1.3.850']).toBe(undefined); }); + + }); From 3b607a82f5cdeb3d0cd0ea3f0321a9f41e07cdde Mon Sep 17 00:00:00 2001 From: ololokiras Date: Mon, 9 Apr 2018 14:18:25 +0800 Subject: [PATCH 5/6] add CNY to market tests --- src/services/api/__mocks__/market.js | 181 ++++++++++++++- src/services/api/market.js | 3 + test/market.spec.js | 328 ++++++++++++++++++--------- 3 files changed, 398 insertions(+), 114 deletions(-) diff --git a/src/services/api/__mocks__/market.js b/src/services/api/__mocks__/market.js index 3dce4e6..8b3a94c 100644 --- a/src/services/api/__mocks__/market.js +++ b/src/services/api/__mocks__/market.js @@ -179,12 +179,189 @@ const orderSell5 = { seller: '1.2.770077' }; -const ordersArray = [orderBuy1, orderSell5, orderSell4, orderBuy2, orderSell3, orderBuy3, orderSell2, orderSell1, orderBuy4, orderBuy5]; +const buyCNYOrder1 = { + deferred_fee: 578, + expiration: '2018-04-16T04:51:23', + for_sale: 9900243, + id: '1.7.62559913', + sell_price: { + base: { + amount: 9900243, + asset_id: '1.3.0' + }, + quote: { + amount: 835364, + asset_id: '1.3.113' + } + }, + seller: '1.2.602724' +}; +const buyCNYOrder2 = { + deferred_fee: 578, + expiration: '2019-04-09T04:51:15', + for_sale: 1385078692, + id: '1.7.62559882', + sell_price: { + base: { + amount: 1385078692, + asset_id: '1.3.0' + }, + quote: { + amount: 116873184, + asset_id: '1.3.113' + } + }, + seller: '1.2.613598' +}; +const buyCNYOrder3 = { + deferred_fee: 578, + expiration: '2019-04-09T04:51:34', + for_sale: 99997110, + id: '1.7.62559926', + sell_price: { + base: { + amount: 99997110, + asset_id: '1.3.0' + }, + quote: { + amount: 8437813, + asset_id: '1.3.113' + } + }, + seller: '1.2.455122' +}; +const buyCNYOrder4 = { + deferred_fee: 578, + expiration: '2019-04-09T04:52:00', + for_sale: 262908748, + id: '1.7.62559979', + sell_price: { + base: { + amount: 262908748, + asset_id: '1.3.0' + }, + quote: { + amount: 22184484, + asset_id: '1.3.113' + } + }, + seller: '1.2.473486' +}; +const buyCNYOrder5 = { + deferred_fee: 578, + expiration: '2019-04-09T04:51:29', + for_sale: 695497517, + id: '1.7.62559918', + sell_price: { + base: { + amount: 695497517, + asset_id: '1.3.0' + }, + quote: { + amount: 58691909, + asset_id: '1.3.113' + } + }, + seller: '1.2.469235' +}; +const sellCNYOrder1 = { + deferred_fee: 578, + expiration: '2023-04-09T04:54:51', + for_sale: 34274045, + id: '1.7.62560294', + sell_price: { + base: { + amount: 34274045, + asset_id: '1.3.113' + }, + quote: { + amount: 408998146, + asset_id: '1.3.0' + } + }, + seller: '1.2.129515' +}; + +const sellCNYOrder2 = { + deferred_fee: 578, + expiration: '2019-04-09T04:52:25', + for_sale: 655700, + id: '1.7.62560027', + sell_price: { + base: { + amount: 655700, + asset_id: '1.3.113' + }, + quote: { + amount: 7850560, + asset_id: '1.3.0' + } + }, + seller: '1.2.860552' +}; +const sellCNYOrder3 = { + deferred_fee: 578, + expiration: '2019-04-09T04:47:03', + for_sale: 199999609, + id: '1.7.62559463', + sell_price: { + base: { + amount: 199999609, + asset_id: '1.3.113' + }, + quote: { + amount: 2394660000, + asset_id: '1.3.0' + } + }, + seller: '1.2.613598' +}; + +const sellCNYOrder4 = { + deferred_fee: 578, + expiration: '2019-04-09T04:41:36', + for_sale: 50000, + id: '1.7.62558919', + sell_price: { + base: { + amount: 50000, + asset_id: '1.3.113' + }, + quote: { + amount: 598717, + asset_id: '1.3.0' + } + }, + seller: '1.2.851645' +}; + +const sellCNYOrder5 = { + deferred_fee: 578, + expiration: '2019-04-09T04:41:36', + for_sale: 500000, + id: '1.7.62558924', + sell_price: { + base: { + amount: 500000, + asset_id: '1.3.113' + }, + quote: { + amount: 5987179, + asset_id: '1.3.0' + } + }, + seller: '1.2.824732' +}; + +const ordersArray = { + '1.3.850': [orderBuy1, orderSell5, orderSell4, orderBuy2, orderSell3, orderBuy3, orderSell2, orderSell1, orderBuy4, orderBuy5], + '1.3.113': [buyCNYOrder1, buyCNYOrder2, sellCNYOrder1, buyCNYOrder3, sellCNYOrder2, sellCNYOrder3, sellCNYOrder4, buyCNYOrder4, sellCNYOrder5, buyCNYOrder5] +}; const loadLimitOrders = async (baseId, quoteId, limit = 500) => { - const orders = ordersArray; + const orders = ordersArray[quoteId]; const buyOrders = []; const sellOrders = []; orders.forEach((order) => { diff --git a/src/services/api/market.js b/src/services/api/market.js index 5e3ab60..f894038 100644 --- a/src/services/api/market.js +++ b/src/services/api/market.js @@ -187,7 +187,9 @@ class Market { this.setDefaultObjects(assetId); // console.log('setting default: ' + assetId + ' : ', this.markets[assetId]); this.markets[assetId].orders.buy = buyOrders; + console.log('buy orders', buyOrders); this.markets[assetId].orders.sell = sellOrders; + console.log(sellOrders); this.markets[assetId].callback = callback; callback(); @@ -208,6 +210,7 @@ class Market { } async subscribeToExchangeRate(assetId, amount, callback) { + console.log('asset_id amount', assetId, amount); let canReceiveInBasePrev = 0; const wrappedCallback = () => { const canReceiveInBase = this.calcExchangeRate(assetId, 'sell', amount); diff --git a/test/market.spec.js b/test/market.spec.js index 76ae31e..0381749 100644 --- a/test/market.spec.js +++ b/test/market.spec.js @@ -21,7 +21,6 @@ const orderBuy1 = { }, seller: '1.2.132834' }; - const orderBuy2 = { deferred_fee: 578, expiration: '2023-04-05T15:32:43', @@ -39,7 +38,6 @@ const orderBuy2 = { }, seller: '1.2.493448' }; - const orderBuy3 = { deferred_fee: 578, expiration: '2023-04-04T15:34:31', @@ -57,7 +55,6 @@ const orderBuy3 = { }, seller: '1.2.126225' }; - const orderBuy4 = { deferred_fee: 578, expiration: '2019-04-05T14:16:21', @@ -75,7 +72,6 @@ const orderBuy4 = { }, seller: '1.2.376918' }; - const orderBuy5 = { deferred_fee: 578, expiration: '2023-04-05T14:07:21', @@ -93,7 +89,6 @@ const orderBuy5 = { }, seller: '1.2.429491' }; - const buyOrdersSubscribe = [orderBuy1, orderBuy2, orderBuy3, orderBuy4, orderBuy5]; const orderSell1 = { @@ -113,7 +108,6 @@ const orderSell1 = { }, seller: '1.2.354664' }; - const orderSell2 = { deferred_fee: 0, expiration: '2023-04-05T14:48:21', @@ -131,7 +125,6 @@ const orderSell2 = { }, seller: '1.2.502341' }; - const orderSell3 = { deferred_fee: 0, expiration: '2018-04-20T18:46:31', @@ -149,7 +142,6 @@ const orderSell3 = { }, seller: '1.2.1310' }; - const orderSell4 = { deferred_fee: 578, expiration: '2019-04-05T12:46:40', @@ -167,7 +159,6 @@ const orderSell4 = { }, seller: '1.2.549541' }; - const orderSell5 = { deferred_fee: 578, expiration: '2018-04-12T06:56:56', @@ -185,127 +176,231 @@ const orderSell5 = { }, seller: '1.2.770077' }; - const sellOrdersSubscribe = [orderSell5, orderSell4, orderSell3, orderSell2, orderSell1]; -// const update = { -// '1.3.0': 0.04, -// '1.3.121': 0, -// '1.3.850': 0.1, -// '1.3.858': 0.05, -// '1.3.859': 0.1, -// '1.3.861': 0.6, -// '1.3.973': 0.04, -// '1.3.1999': 0.04, -// '1.3.2418': 0.03, -// '1.3.3588': 0 -// }; - -// const balances = { -// '1.3.0': 17247, -// '1.3.113': 0, -// '1.3.121': 14874, -// '1.3.850': 0, -// '1.3.858': 108536, -// '1.3.859': 0, -// '1.3.861': 0, -// '1.3.943': 0, -// '1.3.973': 124, -// '1.3.1042': 0, -// '1.3.1093': 0, -// '1.3.1362': 0, -// '1.3.1578': 0, -// '1.3.1893': 0, -// '1.3.1999': 98640, -// '1.3.2001': 0, -// '1.3.2379': 0, -// '1.3.2418': 340035311, -// '1.3.2786': 0, -// '1.3.2935': 0, -// '1.3.3128': 0, -// '1.3.3219': 0, -// '1.3.3365': 0, -// '1.3.3368': 0, -// '1.3.3376': 0, -// '1.3.3382': 1, -// '1.3.3547': 0, -// '1.3.3587': 1, -// '1.3.3588': 1, -// '1.3.3591': 0, -// '1.3.3602': 0, -// '1.3.3609': 0, -// '1.3.3612': 1, -// '1.3.3664': 0, -// '1.3.3666': 0, -// }; - -// const baseBalances = { -// '1.3.0': 17247, -// '1.3.113': 0, -// '1.3.121': 1170747, -// '1.3.850': 0, -// '1.3.858': 217179.99999999997, -// '1.3.859': 0, -// '1.3.861': 0, -// '1.3.943': 0, -// '1.3.973': 144833, -// '1.3.1042': 0, -// '1.3.1093': 0, -// '1.3.1362': 0, -// '1.3.1578': 0, -// '1.3.189': 0, -// '1.3.1999': 407857, -// '1.3.2001': 0, -// '1.3.2379': 0, -// '1.3.2418': 173336, -// '1.3.2786': 0, -// '1.3.2935': 0, -// '1.3.3128': 0, -// '1.3.3219': 0, -// '1.3.3365': 0, -// '1.3.3368': 0, -// '1.3.3376': 0, -// '1.3.3382': 301, -// '1.3.3547': 0, -// '1.3.3587': 411, -// '1.3.3588': 690, -// '1.3.3591': 0, -// '1.3.3602': 0, -// '1.3.3609': 0, -// '1.3.3612': 325, -// '1.3.3664': 0, -// '1.3.3666': 0 -// }; - const update = { '1.3.0': 0.04, '1.3.850': 0.1, + '1.3.113': 0.414 }; - const balances = { '1.3.0': 17247, '1.3.850': 0, + '1.3.113': 100 }; - const baseBalances = { '1.3.0': 17247, '1.3.850': 0, + '1.3.113': 420 +}; +const buyOrdersGenerated = [ + { + seller: '1.2.512210', + amount_to_sell: { + asset_id: '1.3.0', + amount: 1188 + }, + min_to_receive: { + asset_id: '1.3.850', + amount: 4 + }, + fill_or_kill: false + }, + { + seller: '1.2.512210', + amount_to_sell: { + asset_id: '1.3.0', + amount: 6316 + }, + min_to_receive: { + asset_id: '1.3.113', + amount: 529 + }, + fill_or_kill: false + } +]; + +const sellOrdersGenerated = []; + +const buyCNYOrder1 = { + deferred_fee: 578, + expiration: '2018-04-16T04:51:23', + for_sale: 9900243, + id: '1.7.62559913', + sell_price: { + base: { + amount: 9900243, + asset_id: '1.3.0' + }, + quote: { + amount: 835364, + asset_id: '1.3.113' + } + }, + seller: '1.2.602724' +}; +const buyCNYOrder2 = { + deferred_fee: 578, + expiration: '2019-04-09T04:51:15', + for_sale: 1385078692, + id: '1.7.62559882', + sell_price: { + base: { + amount: 1385078692, + asset_id: '1.3.0' + }, + quote: { + amount: 116873184, + asset_id: '1.3.113' + } + }, + seller: '1.2.613598' +}; +const buyCNYOrder3 = { + deferred_fee: 578, + expiration: '2019-04-09T04:51:34', + for_sale: 99997110, + id: '1.7.62559926', + sell_price: { + base: { + amount: 99997110, + asset_id: '1.3.0' + }, + quote: { + amount: 8437813, + asset_id: '1.3.113' + } + }, + seller: '1.2.455122' +}; +const buyCNYOrder4 = { + deferred_fee: 578, + expiration: '2019-04-09T04:52:00', + for_sale: 262908748, + id: '1.7.62559979', + sell_price: { + base: { + amount: 262908748, + asset_id: '1.3.0' + }, + quote: { + amount: 22184484, + asset_id: '1.3.113' + } + }, + seller: '1.2.473486' +}; +const buyCNYOrder5 = { + deferred_fee: 578, + expiration: '2019-04-09T04:51:29', + for_sale: 695497517, + id: '1.7.62559918', + sell_price: { + base: { + amount: 695497517, + asset_id: '1.3.0' + }, + quote: { + amount: 58691909, + asset_id: '1.3.113' + } + }, + seller: '1.2.469235' }; -const buyOrdersGenerated = [{ - seller: '1.2.512210', - amount_to_sell: { - asset_id: '1.3.0', - amount: 1146 +const buyCNYOrders = [buyCNYOrder1, buyCNYOrder2, buyCNYOrder3, buyCNYOrder4, buyCNYOrder5]; + +const sellCNYOrder1 = { + deferred_fee: 578, + expiration: '2023-04-09T04:54:51', + for_sale: 34274045, + id: '1.7.62560294', + sell_price: { + base: { + amount: 34274045, + asset_id: '1.3.113' + }, + quote: { + amount: 408998146, + asset_id: '1.3.0' + } }, - min_to_receive: { - asset_id: '1.3.850', - amount: 4 + seller: '1.2.129515' +}; + +const sellCNYOrder2 = { + deferred_fee: 578, + expiration: '2019-04-09T04:52:25', + for_sale: 655700, + id: '1.7.62560027', + sell_price: { + base: { + amount: 655700, + asset_id: '1.3.113' + }, + quote: { + amount: 7850560, + asset_id: '1.3.0' + } }, - fill_or_kill: false -}]; + seller: '1.2.860552' +}; -const sellOrdersGenerated = []; +const sellCNYOrder3 = { + deferred_fee: 578, + expiration: '2019-04-09T04:47:03', + for_sale: 199999609, + id: '1.7.62559463', + sell_price: { + base: { + amount: 199999609, + asset_id: '1.3.113' + }, + quote: { + amount: 2394660000, + asset_id: '1.3.0' + } + }, + seller: '1.2.613598' +}; + +const sellCNYOrder4 = { + deferred_fee: 578, + expiration: '2019-04-09T04:41:36', + for_sale: 50000, + id: '1.7.62558919', + sell_price: { + base: { + amount: 50000, + asset_id: '1.3.113' + }, + quote: { + amount: 598717, + asset_id: '1.3.0' + } + }, + seller: '1.2.851645' +}; + +const sellCNYOrder5 = { + deferred_fee: 578, + expiration: '2019-04-09T04:41:36', + for_sale: 500000, + id: '1.7.62558924', + sell_price: { + base: { + amount: 500000, + asset_id: '1.3.113' + }, + quote: { + amount: 5987179, + asset_id: '1.3.0' + } + }, + seller: '1.2.824732' +}; + +const sellCNYOrders = [sellCNYOrder1, sellCNYOrder2, sellCNYOrder3, sellCNYOrder4, sellCNYOrder5]; describe('market service', () => { test('samples distribution to specified accuracy', () => { @@ -343,6 +438,15 @@ describe('market service', () => { done(); }); + it('subscribe to CNY market', async done => { + function callback() { + expect(market.markets['1.3.113'].orders.buy).toEqual(buyCNYOrders); + expect(market.markets['1.3.113'].orders.sell).toEqual(sellCNYOrders); + } + await market.subscribeToExchangeRate('1.3.113', 1758, callback); + done(); + }); + test('generate orders', () => { market.subscribeToExchangeRate('1.3.0'); const userId = '1.2.512210'; From 83712c5265b944443bd95820504dc7407bb0c7e8 Mon Sep 17 00:00:00 2001 From: ololokiras Date: Mon, 9 Apr 2018 14:38:05 +0800 Subject: [PATCH 6/6] linted --- src/services/api/__mocks__/market.js | 9 ++++++--- temp.js | 3 ++- test/market.spec.js | 5 ----- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/services/api/__mocks__/market.js b/src/services/api/__mocks__/market.js index 8b3a94c..aebf072 100644 --- a/src/services/api/__mocks__/market.js +++ b/src/services/api/__mocks__/market.js @@ -356,11 +356,14 @@ const sellCNYOrder5 = { }; const ordersArray = { - '1.3.850': [orderBuy1, orderSell5, orderSell4, orderBuy2, orderSell3, orderBuy3, orderSell2, orderSell1, orderBuy4, orderBuy5], - '1.3.113': [buyCNYOrder1, buyCNYOrder2, sellCNYOrder1, buyCNYOrder3, sellCNYOrder2, sellCNYOrder3, sellCNYOrder4, buyCNYOrder4, sellCNYOrder5, buyCNYOrder5] + '1.3.850': [ + orderBuy1, orderSell5, orderSell4, orderBuy2, orderSell3, orderBuy3, orderSell2, orderSell1, + orderBuy4, orderBuy5], + '1.3.113': [buyCNYOrder1, buyCNYOrder2, sellCNYOrder1, buyCNYOrder3, sellCNYOrder2, + sellCNYOrder3, sellCNYOrder4, buyCNYOrder4, sellCNYOrder5, buyCNYOrder5] }; -const loadLimitOrders = async (baseId, quoteId, limit = 500) => { +const loadLimitOrders = async (baseId, quoteId) => { const orders = ordersArray[quoteId]; const buyOrders = []; const sellOrders = []; diff --git a/temp.js b/temp.js index ab9fc73..938aea6 100644 --- a/temp.js +++ b/temp.js @@ -1,3 +1,4 @@ import * as utils from './src/utils'; + const data = JSON.parse('{"1.3.0":0.041752022378637677,"1.3.113":0.01602069672965233,"1.3.121":0.01344197025218538,"1.3.850":0,"1.3.858":0.001780940442008715,"1.3.859":0.0018353858660724721,"1.3.861":0.6757403812150591,"1.3.943":0.017905748174603265,"1.3.973":0,"1.3.1042":0.0036329810811487014,"1.3.1093":0,"1.3.1362":0.011182597181160986,"1.3.1578":0.003648291522757851,"1.3.1893":0,"1.3.1999":0.2060768263022931,"1.3.2001":0.0016778003451197595,"1.3.2379":5.227955671417011e-7,"1.3.2935":0.0005413174672347214,"1.3.3128":0.0000011202762153036453,"1.3.3368":0,"1.3.3547":0.004761397970283553}'); -console.log(utils.distributionSampling(data, 2)) +console.log(utils.distributionSampling(data, 2)); diff --git a/test/market.spec.js b/test/market.spec.js index 0381749..1df3f61 100644 --- a/test/market.spec.js +++ b/test/market.spec.js @@ -465,9 +465,4 @@ describe('market service', () => { market.unsubscribeFromExchangeRate('1.3.850'); expect(market.markets['1.3.850']).toBe(undefined); }); - - }); - - -// assetId balance 1.3.850 1758 \ No newline at end of file