From f7694d6594a1776196a71015909f39ac5f52ddec Mon Sep 17 00:00:00 2001 From: root Date: Sun, 11 May 2025 16:01:50 +0000 Subject: [PATCH] revert bf08fd7cb47fec1791c96ed685e9ca1ca74817f7 revert multi currency support better logging --- .gitignore | 5 - index.js | 268 ---- logs/log.txt | 0 logs/output.txt | 0 logs/output2.txt | 0 package-lock.json | 1264 ----------------- package.json | 21 - src/LocalStore/ClosedTrades.json | 2255 ------------------------------ src/LocalStore/OpenTrades.json | 105 -- src/LocalStore/Settings.json | 38 - testdata.json | 1452 ------------------- utils.js | 530 ------- 12 files changed, 5938 deletions(-) delete mode 100644 .gitignore delete mode 100644 index.js delete mode 100644 logs/log.txt delete mode 100644 logs/output.txt delete mode 100644 logs/output2.txt delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 src/LocalStore/ClosedTrades.json delete mode 100644 src/LocalStore/OpenTrades.json delete mode 100644 src/LocalStore/Settings.json delete mode 100644 testdata.json delete mode 100644 utils.js diff --git a/.gitignore b/.gitignore deleted file mode 100644 index ee39897..0000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules -.env -npm-debug.log -yarn-error.log -.DS_Store \ No newline at end of file diff --git a/index.js b/index.js deleted file mode 100644 index 063820b..0000000 --- a/index.js +++ /dev/null @@ -1,268 +0,0 @@ - -const { ToadScheduler, SimpleIntervalJob, AsyncTask } = require('toad-scheduler'); - -const { - settings, - transferProfit, - saveProfit, - getAllClosedOrders, - getAllOpenOrders, - getOpenOrder, - monitorOrderComplete, - calculateAdaptiveTargets, - sleep, - placeSellOrder, - placeBuyOrder, - evaluateMarketConditions, - getAvailableUSDBalance, - getHistoricalData, - readJsonFile, - writeJsonFile, - settingsFile, - getCurrencyInfo, - openTradesFile, - closedTradesFile, - setTradingCurrency, - setCurrencyInfo, - manageStaleOrders, - shuffle, - syncSettings -} = require("./utils") - -async function monitorAndPlace(currencyData, usdAllocatedBalance, currency) { - let CURRENCY_INFO = currencyData; - // const settings = readJsonFile(settingsFile); - // console.log(tradingCurrency + 'USD', CURRENCY_INFO) - let openTrades = readJsonFile(openTradesFile); - if (!settings) return {openTrades, removedIds: []}; - - let closedTrades = await getAllClosedOrders(); - // console.log("closedTrades", JSON.stringify(closedTrades, null, 4)) - // return - const pair = currency.tradingCurrency + 'USD'; - let candleQuant = 16; - const marketCondition = await evaluateMarketConditions(pair); - const averageLow = (await getHistoricalData(pair, 15)).slice(-candleQuant).reduce((acc, candle) => acc + parseFloat(candle[3]), 0) / candleQuant; - const availableUSD = usdAllocatedBalance; - let removedIds = []; - if(availableUSD <= 0){ - console.log("Insufficient / error reaching funds") - return {openTrades, removedIds: []} - } - const balance = availableUSD * settings.maximumOrderSize; - let oTrades = await getAllOpenOrders(false); - for(let x = 0; x < Object.keys(oTrades).length; x++){ - let id = Object.keys(oTrades)[x]; - let sellid = null; - let trade = oTrades[id]; - //make sure we are only working with orders for this pair - if(!(trade.descr.pair === pair || trade.descr.pair === currency?.compPair)){ - continue; - } - if(trade.descr.type === 'sell'){ - //find original buying order - sellid = id; - console.log("id ", id); - let buyingOrder = Object.entries(openTrades).find(itemArr => itemArr[1].sellid === id) - if(!buyingOrder){ - console.log("Unable to find local trade") - continue; - } - id = buyingOrder[1].id; - console.log(buyingOrder) - openTrades[id].sellid = sellid; - } - let localTrade = openTrades[id]; - if(!localTrade){ - openTrades[id] = { - ...openTrades[id], - id: id, - userref: trade.userref, - pair: pair, - starttimestamp: new Date().toISOString(), - type: trade.descr.type, - status: trade.status, - ordertype: trade.descr.ordertype, - volume: trade.vol, - } - console.log(typeof trade.descr.price) - if(trade.descr.type === 'sell'){ - openTrades[id].sellprice = Number(trade.descr.price).toFixed(CURRENCY_INFO.pair_decimals); - }else { - openTrades[id].price = Number(trade.descr.price).toFixed(CURRENCY_INFO.pair_decimals); - } - // writeJsonFile(openTradesFile, openTrades); - } - } - let allIds = Object.keys(openTrades); - for(let x = 0; x < allIds.length; x++){ - let id = allIds[x]; - console.log(id); - - let trade = oTrades[id]; - let localTrade = openTrades[id]; - let closedTrade = closedTrades[id]; - // console.log("trade", localTrade) - if(!(localTrade.pair === pair || localTrade.pair === currency?.compPair)){ - continue; - } - - await calculateAdaptiveTargets(pair, settings.profitTargetPercent, settings.stopLossPercentage, riskRewardRatio = 10) - if(localTrade.type === 'buy'){ - if(['pending', 'open', 'closed'].includes(closedTrade?.status) || ['pending', 'open', 'closed'].includes(localTrade.status)){ - if(closedTrade?.status === 'closed' || localTrade.status === 'closed'){ - console.log('Buy order completed:', localTrade); - const sellPrice = parseFloat(localTrade.price) * (1 + settings.profitTargetPercent); - const stopLoss = parseFloat(localTrade.price) * (1 - settings.stopLossPercentage); - const sellOrder = await placeSellOrder(pair, localTrade.volume, sellPrice, stopLoss, localTrade.userref, localTrade.id, localTrade); - if(sellOrder){ - openTrades[localTrade.id] = sellOrder; - console.log('Sell order placed:', sellOrder); - } - // writeJsonFile(openTradesFile, openTrades); - } - }else { - console.log("Buy order expired or cancelled, clearing from local list") - //order expired or cancelled, whipe from list - delete openTrades[id]; - removedIds.push(id) - // writeJsonFile(openTradesFile, openTrades); - } - }else{ - localTrade = openTrades[id]; //originalBuyTrade - trade = oTrades[localTrade.sellid]; //openselltrade - closedTrade = closedTrades[localTrade.sellid]; //potentially closed sell trade - if(['pending', 'open', 'closed'].includes(closedTrade?.status) || ['pending', 'open', 'closed'].includes(trade.status)){ - if(closedTrade?.status === 'closed' || trade.status === 'closed'){ - let sellOrder = {...openTrades[localTrade.id]}; - console.log('Sell order completed:', sellOrder); - delete openTrades[sellOrder.id]; - removedIds.push(sellOrder.id) - // writeJsonFile(openTradesFile, openTrades); - const sellPrice = parseFloat(localTrade.sellprice) - - const closedTrades = readJsonFile(closedTradesFile); - const buyTotal = parseFloat(localTrade.price) * localTrade.volume; - const sellTotal = sellPrice * localTrade.volume; - const transactionFees = (settings.transactionFeePercent) * (buyTotal + sellTotal); - const profit = sellTotal - buyTotal - transactionFees; - console.log('Sell order Profit:', profit); - - if (settings.profitWallet && settings.profitSavePercent) { - const profitSaveAmount = profit * (settings.profitSavePercent); - console.log('Saving Profit:', profitSaveAmount); - await saveProfit(profitSaveAmount, profit); - } - - closedTrades[sellOrder.id] = { - ...sellOrder, - sellPrice, - volume: localTrade.volume, - profit, - timestamp: new Date().toISOString(), - }; - writeJsonFile(closedTradesFile, closedTrades); - //transfer profits and write to closedTrades.json - - } - }else { - //order expired or cancelled, whipe from list - console.log("Sell order expired or cancelled, clearing from local list") - console.log("trade", trade) - console.log("localTrade", localTrade) - console.log("closedTrade", closedTrade) - console.log("closedTrades", JSON.stringify(closedTrades, null, 4)) - - delete openTrades[id]; - removedIds.push(id) - // writeJsonFile(openTradesFile, openTrades); - } - } - } - - oTrades = await getAllOpenOrders(false); - let openTradeIds = Object.keys(oTrades); - let priceRangeExclusion = settings.priceRangeExclusion; - let excludeBasedOnPrevOrder = []; - for(let x = 0; x < openTradeIds.length; x++){ - - let id = openTradeIds[x]; - let trade = oTrades[id]; - if(!(trade.descr.pair === pair || trade.descr.pair === currency?.compPair)){ - continue; - } - let price = parseFloat(trade.descr.price); - let diffPer = Math.abs(price - averageLow) / averageLow; - // console.log(`DIff Percentage ${diffPer} ${price} ${averageLow}`) - if(diffPer < priceRangeExclusion){ - excludeBasedOnPrevOrder.push(id); - } - if(excludeBasedOnPrevOrder.length >= settings.priceRangeExclusionMaxOpen){ - break; - } - } - if(excludeBasedOnPrevOrder.length >= settings.priceRangeExclusionMaxOpen){ - console.log('Excluding based on open orders: ', excludeBasedOnPrevOrder.join(", ")) - - return {openTrades, removedIds} - } - console.log(` Attempting to place buy order for ${balance} USD worth of ${currency.tradingCurrency} at ${averageLow} USD = ${balance / averageLow} ${currency.tradingCurrency}`); - - - if (marketCondition) { - const buyOrder = await placeBuyOrder(pair, balance / averageLow, averageLow); - if (buyOrder) { - console.log('Buy order placed:', buyOrder); - openTrades[buyOrder.id] = {...buyOrder}; - // writeJsonFile(openTradesFile, openTrades); - } - } - - return {openTrades, removedIds} -} - -async function cycleCurrencies(){ - let builtCurriencies = []; - let settings = syncSettings(); - for(let x = 0; x < settings.tradingCurrencies.length; x++){ - let currency = settings.tradingCurrencies[x]; - let CURRENCY_INFO = await getCurrencyInfo(currency.tradingCurrency); - const availableUSD = await getAvailableUSDBalance(currency.allocation) - builtCurriencies.push({CURRENCY_INFO, availableUSD, currency}); - } - shuffle(builtCurriencies); - let trades = readJsonFile(openTradesFile); - for(let x = 0; x < builtCurriencies.length; x++){ - console.log("*********************************************") - console.log("*********************************************") - console.log("***************TRADING***********************") - console.log("*********************************************") - console.log(`*****************${builtCurriencies[x].currency.tradingCurrency}*************************`) - console.log("*********************************************") - console.log("*********************************************") - console.log("*********************************************") - setTradingCurrency(builtCurriencies[x].currency.tradingCurrency); - setCurrencyInfo(builtCurriencies[x].CURRENCY_INFO); - - let {openTrades, removedIds} = await monitorAndPlace(builtCurriencies[x].CURRENCY_INFO, builtCurriencies[x].availableUSD, builtCurriencies[x].currency); - trades = {...trades, ...openTrades}; - for(let i = 0; i < removedIds.length; i++){ - delete trades[removedIds[i]] - } - writeJsonFile(openTradesFile, trades); - } - await manageStaleOrders(); -} -const scheduler = new ToadScheduler(); - -const task = new AsyncTask('monitor and place orders', cycleCurrencies, (err) => { - console.error('Error in scheduled task:', err); -}); - -cycleCurrencies(); - -const job = new SimpleIntervalJob({ [settings.tradingIntervalType]: settings.tradingInterval }, task); -scheduler.addSimpleIntervalJob(job); - -console.log('Trading bot is running.'); - diff --git a/logs/log.txt b/logs/log.txt deleted file mode 100644 index e69de29..0000000 diff --git a/logs/output.txt b/logs/output.txt deleted file mode 100644 index e69de29..0000000 diff --git a/logs/output2.txt b/logs/output2.txt deleted file mode 100644 index e69de29..0000000 diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index ae9633e..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1264 +0,0 @@ -{ - "name": "simpletrader", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", - "requires": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bin-build": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", - "integrity": "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==", - "requires": { - "decompress": "^4.0.0", - "download": "^6.2.2", - "execa": "^0.7.0", - "p-map-series": "^1.0.0", - "tempfile": "^2.0.0" - }, - "dependencies": { - "tempfile": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", - "requires": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } - } - }, - "bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" - }, - "bufferutil": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", - "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", - "optional": true, - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - } - }, - "caw": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", - "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", - "requires": { - "get-proxy": "^2.0.0", - "isurl": "^1.0.0-alpha5", - "tunnel-agent": "^0.6.0", - "url-to-options": "^1.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "crc": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/crc/-/crc-4.3.2.tgz", - "integrity": "sha512-uGDHf4KLLh2zsHa8D8hIQ1H/HtFQhyHrc0uhHBcoKGol/Xnb+MPYfUMw7cvON6ze/GUESTudKayDcJC5HnJv1A==" - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "decompress": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", - "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", - "requires": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "decompress-tar": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", - "requires": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" - } - }, - "decompress-tarbz2": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", - "requires": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" - }, - "dependencies": { - "file-type": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" - } - } - }, - "decompress-targz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", - "requires": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" - } - }, - "decompress-unzip": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", - "requires": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" - }, - "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==" - } - } - }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==" - }, - "download": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", - "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", - "requires": { - "caw": "^2.0.0", - "content-disposition": "^0.5.2", - "decompress": "^4.0.0", - "ext-name": "^5.0.0", - "file-type": "5.2.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^7.0.0", - "make-dir": "^1.0.0", - "p-event": "^1.0.0", - "pify": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - } - } - }, - "duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "requires": { - "get-intrinsic": "^1.2.4" - } - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==" - } - } - }, - "ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "requires": { - "mime-db": "^1.28.0" - } - }, - "ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "requires": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "requires": { - "pend": "~1.2.0" - } - }, - "ffish-es6": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/ffish-es6/-/ffish-es6-0.7.7.tgz", - "integrity": "sha512-XSKZDq8ioM6f4/Qhk2XqxlCpxh6avWHUnvsh/0+QStoMjiKHLrG0+P18WJ1HKlLhLf8KgIxYI0law8WjH/XRtA==" - }, - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==" - }, - "filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==" - }, - "filenamify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", - "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", - "requires": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.0", - "trim-repeated": "^1.0.0" - } - }, - "follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" - }, - "form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "get-proxy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", - "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", - "requires": { - "npm-conf": "^1.1.0" - } - }, - "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", - "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==" - } - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" - }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "requires": { - "function-bind": "^1.1.2" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-invalid-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", - "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==", - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" - }, - "is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" - }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - }, - "is-valid-path": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", - "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==", - "requires": { - "is-invalid-path": "^0.1.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "requires": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - } - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "node-downloader-helper": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-2.1.9.tgz", - "integrity": "sha512-FSvAol2Z8UP191sZtsUZwHIN0eGoGue3uEXGdWIH5228e9KH1YHXT7fN8Oa33UGf+FbqGTQg3sJfrRGzmVCaJA==" - }, - "node-gyp-build": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", - "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", - "optional": true - }, - "node-jq": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-jq/-/node-jq-4.4.0.tgz", - "integrity": "sha512-L9FC47dT/nT0wCLn7K/xNdFd4N0uLsfHBZaAGdQr2ViledRnohnX9dLhVWVtN0iT0pFzjHL7fyJUt3RCW1woYw==", - "requires": { - "bin-build": "^3.0.0", - "is-valid-path": "^0.1.1", - "joi": "^17.4.0", - "node-downloader-helper": "^2.1.6", - "strip-final-newline": "^2.0.0", - "tempfile": "^3.0.0" - } - }, - "node-kraken-api": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/node-kraken-api/-/node-kraken-api-2.2.2.tgz", - "integrity": "sha512-f+BZpgT1gD9705hlsRDDGj9m96Psb0Gxu3Td/P2fs0/gFy58YQONrTPiqfYzOBxvpmYnuAMxCRuRmdmkw04eRw==", - "requires": { - "bufferutil": "^4.0.6", - "crc": "^4.1.0", - "ts-ev": "^0.4.0", - "utf-8-validate": "^5.0.9", - "ws": "^8.5.0" - } - }, - "npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "requires": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "requires": { - "path-key": "^2.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" - }, - "p-event": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", - "integrity": "sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==", - "requires": { - "p-timeout": "^1.1.1" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - }, - "p-map-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", - "integrity": "sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==", - "requires": { - "p-reduce": "^1.0.0" - } - }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==" - }, - "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", - "requires": { - "p-finally": "^1.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "requires": { - "pinkie": "^2.0.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, - "qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "requires": { - "side-channel": "^1.0.6" - } - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "requires": { - "tslib": "^2.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "seek-bzip": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", - "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", - "requires": { - "commander": "^2.8.1" - } - }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - }, - "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", - "requires": { - "sort-keys": "^1.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "strip-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", - "requires": { - "is-natural-number": "^4.0.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - }, - "strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - } - }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==" - }, - "tempfile": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-3.0.0.tgz", - "integrity": "sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw==", - "requires": { - "temp-dir": "^2.0.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==" - }, - "to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" - }, - "toad-scheduler": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/toad-scheduler/-/toad-scheduler-1.6.1.tgz", - "integrity": "sha512-UjNerGmJIp72lt1d6wtGZUdgzgYFM9xVJBeDJzCLOVIHbrf8c6e3iq6rswRV/8/KA8WJLUuH71LYu96yoXgNRQ==" - }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, - "ts-ev": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/ts-ev/-/ts-ev-0.4.0.tgz", - "integrity": "sha512-rLX6QdkC1/jA9sS4y9/DxHABTcOussp33J90h+TxHmya9CWvbGc9uLqdM4c/N4pNRmSdtq9zqhz7sB9KcN1NFQ==" - }, - "ts-kraken": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/ts-kraken/-/ts-kraken-4.0.4.tgz", - "integrity": "sha512-5LtBI5Up2+kPmMvvbvlRvFdlSqCIqw55VyonGq7a2ag/I6ZH6lZCLfX4eF0ZhNNgOJTEixtrpve8pcY9YzjIbg==", - "requires": { - "axios": "^1.1.3", - "chalk": "^4.1.2", - "dotenv": "^16.0.3", - "node-jq": "^4.2.2", - "qs": "^6.11.0", - "rxjs": "^7.8.1", - "ws": "^8.10.0" - } - }, - "tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", - "requires": { - "prepend-http": "^1.0.1" - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==" - }, - "utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "optional": true, - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 4e29ae2..0000000 --- a/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "simpletrader", - "version": "1.0.0", - "description": "A trading bot for Nano cryptocurrency on Kraken Pro.", - "main": "index.js", - "scripts": { - "start": "node index.js" - }, - "dependencies": { - "axios": "^1.3.0", - "dotenv": "^16.0.0", - "ffish-es6": "^0.7.7", - "node-kraken-api": "^2.2.2", - "toad-scheduler": "^1.0.0", - "ts-kraken": "^4.0.4", - "uuid": "^9.0.0", - "ws": "^8.0.0" - }, - "author": "Me", - "license": "ISC" -} diff --git a/src/LocalStore/ClosedTrades.json b/src/LocalStore/ClosedTrades.json deleted file mode 100644 index a0709cd..0000000 --- a/src/LocalStore/ClosedTrades.json +++ /dev/null @@ -1,2255 +0,0 @@ -{ - "OQHZY5-QZD4R-EQHEUT": { - "id": "OQHZY5-QZD4R-EQHEUT", - "userref": 1729732368, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.833711", - "volume": 6.3704991121018635, - "sellid": "OIZFMY-PI5FU-F6ZBYM", - "sellprice": "0.858722", - "stopprice": 0.70865435, - "sellPrice": 0.85872233, - "profit": 0.11620598159761206, - "timestamp": "2024-10-25T00:16:30.593Z" - }, - "O5VWPQ-A4GAW-QGW4N5": { - "id": "O5VWPQ-A4GAW-QGW4N5", - "userref": 1729815391, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.839788", - "volume": 6.376388074364051, - "sellid": "OW5HQZ-NXEO3-FKZ2Y6", - "sellprice": "0.864982", - "stopprice": 0.7138198, - "sellPrice": 0.864982, - "profit": 0.1171656207553945, - "timestamp": "2024-10-29T04:07:27.901Z" - }, - "OSKNGJ-ZH4PU-RQJ5ZD": { - "id": "OSKNGJ-ZH4PU-RQJ5ZD", - "userref": 1729459593, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.854672", - "volume": 5.1, - "sellid": "O7DIGR-7YBML-XLLGQE", - "sellprice": "0.880312", - "stopprice": 0.7264712, - "sellPrice": 0.880312, - "profit": 0.0953703264000001, - "timestamp": "2024-10-29T08:37:27.970Z" - }, - "OXEJ6T-SXISY-JQBXPO": { - "id": "OXEJ6T-SXISY-JQBXPO", - "userref": 1729673046, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.857341", - "volume": 13.796011274387162, - "sellid": "O7LBHB-23QJD-GOVMNW", - "status": "open", - "sellprice": "0.883061", - "stopprice": 0.72873985, - "sellPrice": 0.883061, - "profit": 0.25879098752137336, - "timestamp": "2024-10-29T08:37:28.011Z" - }, - "OFIA4Z-DE63D-7JQCL7": { - "id": "OFIA4Z-DE63D-7JQCL7", - "userref": 1729676646, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.853874", - "volume": 9.288358703977401, - "sellid": "OY67AD-E2YDU-DAERBX", - "status": "open", - "sellprice": "0.879490", - "stopprice": 0.7257929, - "sellPrice": 0.87949, - "profit": 0.17353017017484018, - "timestamp": "2024-10-29T08:37:28.053Z" - }, - "O2PNGW-B5MCX-NNQDJV": { - "id": "O2PNGW-B5MCX-NNQDJV", - "userref": 1730666889, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.766444", - "volume": 8.369642540085707, - "sellid": "OGRVVF-LHPUS-T7Q4HT", - "sellprice": "0.789437", - "stopprice": 0.6514774, - "sellPrice": 0.789437, - "profit": 0.14035451970454668, - "timestamp": "2024-11-05T14:48:15.076Z" - }, - "OU577T-6KUFQ-N2NYLO": { - "id": "OU577T-6KUFQ-N2NYLO", - "userref": 1730176648, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.808040", - "volume": 6.6981229640704445, - "sellid": "OPG4JU-6CQGH-VGHON5", - "sellprice": "0.832281", - "stopprice": 0.686834, - "sellPrice": 0.832281, - "profit": 0.11842091173784372, - "timestamp": "2024-11-06T03:18:17.612Z" - }, - "OLAB42-Q4XAH-WT4VWA": { - "id": "OLAB42-Q4XAH-WT4VWA", - "userref": 1730333249, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.862849", - "volume": 15.821698755845649, - "sellid": "OU7GD7-VVOFE-NDSZCW", - "sellprice": "0.888734", - "stopprice": 0.7334216499999999, - "sellPrice": 0.888734, - "profit": 0.29869259800762465, - "timestamp": "2024-11-07T03:45:59.960Z" - }, - "O7EVL6-63BO4-D5WP5B": { - "id": "O7EVL6-63BO4-D5WP5B", - "userref": 1729469226, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.881333", - "volume": 5.1, - "sellid": "OFAAMA-JA4EV-EFFENE", - "sellprice": "0.907773", - "stopprice": 0.74913305, - "sellPrice": 0.907773, - "profit": 0.0983462375999993, - "timestamp": "2024-11-13T04:50:40.647Z" - }, - "OT3OMU-QIGIB-UW56F3": { - "id": "OT3OMU-QIGIB-UW56F3", - "userref": 1729556028, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.873884", - "volume": 5.1, - "sellid": "O5N3SR-UCXXU-3RULCA", - "sellprice": "0.900101", - "stopprice": 0.7428014, - "sellPrice": 0.900101, - "profit": 0.09751740600000028, - "timestamp": "2024-11-13T04:50:40.648Z" - }, - "OPYXOF-NMHG4-XUHIQH": { - "id": "OPYXOF-NMHG4-XUHIQH", - "userref": 1730938701, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.832529", - "volume": 9.971831067717071, - "sellid": "ORSN2G-RB2D2-XUTBXC", - "sellprice": "0.857505", - "stopprice": 0.7076496499999999, - "sellPrice": 0.857505, - "profit": 0.18164551856050964, - "timestamp": "2024-11-13T11:20:42.442Z" - }, - "OYTZIP-OOPAO-JAILO4": { - "id": "OYTZIP-OOPAO-JAILO4", - "userref": 1731496842, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.840924", - "volume": 25.211891789683442, - "sellid": "OA7GOT-WAAZA-HS326D", - "sellprice": "0.866152", - "stopprice": 0.7147854, - "sellPrice": 0.866152, - "profit": 0.4638911445150748, - "timestamp": "2024-11-14T05:20:44.887Z" - }, - "OZGV6J-AS7TF-QKAB3B": { - "id": "OZGV6J-AS7TF-QKAB3B", - "userref": 1731561645, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.833864", - "volume": 25.63376050181133, - "sellid": "OY573N-KLSNL-YSHTVD", - "sellprice": "0.858880", - "stopprice": 0.7087844, - "sellPrice": 0.85888, - "profit": 0.4676885755657997, - "timestamp": "2024-11-15T07:20:49.167Z" - }, - "OWNZL5-DEVCF-7SI5PM": { - "id": "OWNZL5-DEVCF-7SI5PM", - "userref": 1731883767, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.930410", - "volume": 66.67124630658729, - "sellid": "OGU6S2-GPCLW-YUUYFI", - "status": "open", - "sellprice": "0.939714", - "stopprice": 0.7908485, - "sellPrice": 0.939714, - "profit": 0.12157528432505277, - "timestamp": "2024-11-18T03:55:48.303Z" - }, - "O2FWZY-G3E7Z-QRHISA": { - "id": "O2FWZY-G3E7Z-QRHISA", - "userref": 1731902148, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.934327", - "starttimestamp": "2024-11-18T03:55:49.543Z", - "volume": 21.179040312294802, - "sellid": "OVNGMU-KXJLQ-A2IQ5S", - "sellprice": "0.943670", - "stopprice": 0.79417795, - "startselltimestamp": "2024-11-18T04:55:48.880Z", - "sellPrice": 0.94367, - "profit": 0.038779076960297476, - "timestamp": "2024-11-18T05:30:49.183Z" - }, - "OTLXOO-XFCNA-KFUZ7D": { - "id": "OTLXOO-XFCNA-KFUZ7D", - "userref": 1731902448, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.935389", - "starttimestamp": "2024-11-18T04:00:49.462Z", - "volume": 14.808106842589307, - "sellid": "O7OEV5-DPTRQ-UC5BRI", - "sellprice": "0.944743", - "stopprice": 0.79508065, - "startselltimestamp": "2024-11-18T04:55:49.320Z", - "sellPrice": 0.944743, - "profit": 0.027150249268895824, - "timestamp": "2024-11-18T05:30:49.184Z" - }, - "OJIL7X-YDNUD-T3JPH5": { - "id": "OJIL7X-YDNUD-T3JPH5", - "userref": 1731902748, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.935429", - "starttimestamp": "2024-11-18T04:05:49.390Z", - "volume": 10.365240842867893, - "sellid": "OODGHI-BILDV-BV3ANK", - "sellprice": "0.944783", - "stopprice": 0.7951146499999999, - "startselltimestamp": "2024-11-18T04:55:49.767Z", - "sellPrice": 0.944783, - "profit": 0.01900106198158527, - "timestamp": "2024-11-18T05:30:49.185Z" - }, - "OEPEE4-FTWQG-N3PXYR": { - "id": "OEPEE4-FTWQG-N3PXYR", - "userref": 1731907849, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.939299", - "starttimestamp": "2024-11-18T05:30:50.606Z", - "volume": 21.135436627063235, - "sellid": "OX4FJD-TQSMF-YJD3WL", - "sellprice": "0.948692", - "stopprice": 0.79840415, - "startselltimestamp": "2024-11-18T05:35:50.333Z", - "sellPrice": 0.948692, - "profit": 0.038911099706142704, - "timestamp": "2024-11-18T07:20:51.036Z" - }, - "OO4YJS-NK3VR-2XVR2X": { - "id": "OO4YJS-NK3VR-2XVR2X", - "userref": 1731908151, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.939299", - "starttimestamp": "2024-11-18T05:35:52.752Z", - "volume": 14.778661619984543, - "sellid": "OYEAWZ-57JBU-5TSWRW", - "status": "open", - "sellprice": "0.948692", - "stopprice": 0.79840415, - "startselltimestamp": "2024-11-18T05:40:51.305Z", - "sellPrice": 0.948692, - "profit": 0.02720804807420929, - "timestamp": "2024-11-18T07:20:51.037Z" - }, - "OAQEMD-7RZTD-RUATI5": { - "id": "OAQEMD-7RZTD-RUATI5", - "userref": 1731913851, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.936390", - "starttimestamp": "2024-11-18T07:10:52.445Z", - "volume": 7.259301811198293, - "sellid": "OW54ZC-BS2PE-LMTQX6", - "sellprice": "0.945754", - "stopprice": 0.7959314999999999, - "startselltimestamp": "2024-11-18T08:40:52.645Z", - "sellPrice": 0.945754, - "profit": 0.013323896767516663, - "timestamp": "2024-11-18T08:50:52.631Z" - }, - "OK7S2H-A2WNP-JHDEUH": { - "id": "OK7S2H-A2WNP-JHDEUH", - "userref": 1731914750, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.936472", - "starttimestamp": "2024-11-18T07:25:51.967Z", - "volume": 13.370773090790227, - "sellid": "OLFH6C-JBEZ2-3YBCD6", - "sellprice": "0.945837", - "stopprice": 0.7960012, - "startselltimestamp": "2024-11-18T08:40:53.074Z", - "sellPrice": 0.945837, - "profit": 0.0245455838922429, - "timestamp": "2024-11-18T08:50:52.632Z" - }, - "OJXLAO-XEHM3-QUSWTT": { - "id": "OJXLAO-XEHM3-QUSWTT", - "userref": 1731914451, - "pair": "NANOUSD", - "starttimestamp": "2024-11-18T07:30:50.962Z", - "type": "sell", - "status": "open", - "ordertype": "limit", - "volume": "19.09378221", - "price": "0.936846", - "sellid": "OCXM6D-T2S2I-CBXDIC", - "sellprice": "0.946214", - "stopprice": 0.7963191, - "startselltimestamp": "2024-11-18T08:40:53.522Z", - "sellPrice": 0.946214, - "profit": 0.03505160162982987, - "timestamp": "2024-11-18T08:50:52.632Z" - }, - "ORPZNY-WNL6K-ARG6BR": { - "id": "ORPZNY-WNL6K-ARG6BR", - "userref": 1731919852, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.936718", - "starttimestamp": "2024-11-18T08:50:54.406Z", - "volume": 21.332516223782562, - "sellid": "OIQZNQ-ZDRFM-CQPZYD", - "sellprice": "0.946085", - "stopprice": 0.7962103, - "startselltimestamp": "2024-11-18T08:55:52.736Z", - "sellPrice": 0.946085, - "profit": 0.03916197729342294, - "timestamp": "2024-11-18T10:50:54.204Z" - }, - "OPUBQJ-LBLKW-GSHSGB": { - "id": "OPUBQJ-LBLKW-GSHSGB", - "userref": 1731920153, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.936718", - "starttimestamp": "2024-11-18T08:55:54.118Z", - "volume": 14.916530233073392, - "sellid": "O6IMJ3-EWBIL-MPEC5S", - "sellprice": "0.946085", - "stopprice": 0.7962103, - "startselltimestamp": "2024-11-18T09:10:52.898Z", - "sellPrice": 0.946085, - "profit": 0.027383587203512277, - "timestamp": "2024-11-18T10:50:54.205Z" - }, - "OVFMFB-UPPWJ-CENM3R": { - "id": "OVFMFB-UPPWJ-CENM3R", - "userref": 1731920452, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.936482", - "starttimestamp": "2024-11-18T09:00:53.772Z", - "volume": 10.444199127775365, - "sellid": "OGY4IR-HO5PT-YZO76L", - "sellprice": "0.945847", - "stopprice": 0.7960097, - "startselltimestamp": "2024-11-18T09:10:53.384Z", - "sellPrice": 0.945847, - "profit": 0.01917224923167045, - "timestamp": "2024-11-18T10:50:54.205Z" - }, - "OCER6S-4NLEV-3JSY4G": { - "id": "OCER6S-4NLEV-3JSY4G", - "userref": 1731920752, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.936482", - "starttimestamp": "2024-11-18T09:05:53.787Z", - "volume": 7.3109398099974054, - "sellid": "OOBYHW-3O3ZB-3KLYPC", - "sellprice": "0.945847", - "stopprice": 0.7960097, - "startselltimestamp": "2024-11-18T09:10:53.826Z", - "sellPrice": 0.945847, - "profit": 0.013420575234175322, - "timestamp": "2024-11-18T10:50:54.206Z" - }, - "OJFDWO-C766Z-CNDOM7": { - "id": "OJFDWO-C766Z-CNDOM7", - "userref": 1731922253, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.933874", - "starttimestamp": "2024-11-18T09:30:53.926Z", - "volume": 5.10735840751339, - "sellid": "OWS5AQ-33WLH-E5Y35W", - "sellprice": "0.943213", - "stopprice": 0.7937928999999999, - "startselltimestamp": "2024-11-18T09:35:53.685Z", - "sellPrice": 0.943213, - "profit": 0.009349795883431787, - "timestamp": "2024-11-18T10:50:54.207Z" - }, - "OXTHIV-BVY3W-QJX5C7": { - "id": "OXTHIV-BVY3W-QJX5C7", - "userref": 1731927054, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.931946", - "starttimestamp": "2024-11-18T10:50:55.616Z", - "volume": 21.530120561961187, - "sellid": "O6XW75-FLQTS-CU22WH", - "sellprice": "0.941265", - "stopprice": 0.7921541, - "startselltimestamp": "2024-11-18T13:25:57.271Z", - "sellPrice": 0.941265, - "profit": 0.03931735884494944, - "timestamp": "2024-11-18T13:40:57.181Z" - }, - "ONZM2D-B3BAV-A2L3DT": { - "id": "ONZM2D-B3BAV-A2L3DT", - "userref": 1731927354, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.931946", - "starttimestamp": "2024-11-18T10:55:55.326Z", - "volume": 15.070738628365786, - "sellid": "OHIOH7-GIG5N-QYJHAU", - "sellprice": "0.941265", - "stopprice": 0.7921541, - "startselltimestamp": "2024-11-18T13:25:57.722Z", - "sellPrice": 0.941265, - "profit": 0.02752151977062199, - "timestamp": "2024-11-18T13:40:57.182Z" - }, - "OCVMYC-LDT5L-Z6Y5CA": { - "id": "OCVMYC-LDT5L-Z6Y5CA", - "userref": 1731927654, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.933622", - "starttimestamp": "2024-11-18T11:00:55.670Z", - "volume": 10.530587052290901, - "sellid": "OYR45Q-6YMPN-3KBM35", - "sellprice": "0.942958", - "stopprice": 0.7935787, - "startselltimestamp": "2024-11-18T13:25:58.216Z", - "sellPrice": 0.942958, - "profit": 0.019267604517835463, - "timestamp": "2024-11-18T13:40:57.183Z" - }, - "OU5VRN-E6KXV-PNEATS": { - "id": "OU5VRN-E6KXV-PNEATS", - "userref": 1731931255, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.942606", - "starttimestamp": "2024-11-18T12:00:56.525Z", - "volume": 7.301152877714862, - "sellid": "OOVBNZ-ELSUW-ZSHQJM", - "sellprice": "0.952032", - "stopprice": 0.8012151000000001, - "startselltimestamp": "2024-11-18T13:15:57.026Z", - "sellPrice": 0.952032, - "profit": 0.013488500281627784, - "timestamp": "2024-11-18T14:20:58.632Z" - }, - "OV45ZG-QSJYB-KKVAEB": { - "id": "OV45ZG-QSJYB-KKVAEB", - "userref": 1731931555, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.943297", - "starttimestamp": "2024-11-18T12:05:56.662Z", - "volume": 5.107065482247913, - "sellid": "OMQFWC-FU4DI-XL5WIQ", - "sellprice": "0.952730", - "stopprice": 0.80180245, - "startselltimestamp": "2024-11-18T13:15:57.473Z", - "sellPrice": 0.95273, - "profit": 0.009442412513603449, - "timestamp": "2024-11-18T14:20:58.633Z" - }, - "ODGT4L-F7BSL-5OBSLI": { - "id": "ODGT4L-F7BSL-5OBSLI", - "userref": 1731937257, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.945711", - "starttimestamp": "2024-11-18T13:40:58.538Z", - "volume": 17.56509424349134, - "sellid": "OAM3DO-B3K36-WCCHKO", - "status": "open", - "sellprice": "0.955168", - "stopprice": 0.8038543499999999, - "startselltimestamp": "2024-11-18T13:45:57.391Z", - "sellPrice": 0.955168, - "profit": 0.03255662113880392, - "timestamp": "2024-11-18T14:20:58.634Z" - }, - "O6VCH2-IIJZ2-M6RBUI": { - "id": "O6VCH2-IIJZ2-M6RBUI", - "userref": 1731938157, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.944753", - "starttimestamp": "2024-11-18T13:55:58.153Z", - "volume": 12.28981604015632, - "sellid": "OP7U2T-2ZNGA-P6JTZQ", - "status": "open", - "sellprice": "0.954201", - "stopprice": 0.8030400499999999, - "startselltimestamp": "2024-11-18T14:00:58.050Z", - "sellPrice": 0.954201, - "profit": 0.02276300063252118, - "timestamp": "2024-11-18T14:20:58.635Z" - }, - "OZNWDW-HIFSM-J6AKHS": { - "id": "OZNWDW-HIFSM-J6AKHS", - "userref": 1731938458, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.942285", - "starttimestamp": "2024-11-18T14:00:59.453Z", - "volume": 8.634403473359642, - "sellid": "OLDJAB-JROQN-YSJGCV", - "status": "open", - "sellprice": "0.951708", - "stopprice": 0.80094225, - "startselltimestamp": "2024-11-18T14:05:57.847Z", - "sellPrice": 0.951708, - "profit": 0.015947984978593413, - "timestamp": "2024-11-18T14:20:58.636Z" - }, - "OLEN6L-MBP7N-YTDEFI": { - "id": "OLEN6L-MBP7N-YTDEFI", - "userref": 1731938758, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.941933", - "starttimestamp": "2024-11-18T14:05:59.625Z", - "volume": 6.0587199227267785, - "sellid": "OLJMXH-EWI4U-LD3TWI", - "status": "open", - "sellprice": "0.951352", - "stopprice": 0.80064305, - "startselltimestamp": "2024-11-18T14:10:58.400Z", - "sellPrice": 0.951352, - "profit": 0.011183548756564271, - "timestamp": "2024-11-18T14:20:58.638Z" - }, - "OFS3MY-IARUJ-JCL7HY": { - "id": "OFS3MY-IARUJ-JCL7HY", - "userref": 1731939958, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.942211", - "starttimestamp": "2024-11-18T14:25:59.080Z", - "volume": 15.03709647294701, - "sellid": "OXSYAU-JYOEK-FP47WU", - "sellprice": "0.951633", - "stopprice": 0.80087935, - "startselltimestamp": "2024-11-18T14:50:58.897Z", - "sellPrice": 0.951633, - "profit": 0.02776786323725862, - "timestamp": "2024-11-18T15:20:58.640Z" - }, - "OZPKCQ-2ELEU-6DVUAD": { - "id": "OZPKCQ-2ELEU-6DVUAD", - "userref": 1731939658, - "pair": "NANOUSD", - "starttimestamp": "2024-11-18T14:30:58.017Z", - "type": "sell", - "status": "open", - "ordertype": "limit", - "volume": "21.48204817", - "price": "0.942211", - "sellid": "OHLVIZ-EUIRZ-G6U76I", - "sellprice": "0.951633", - "stopprice": 0.80087935, - "startselltimestamp": "2024-11-18T14:50:59.422Z", - "sellPrice": 0.951633, - "profit": 0.039669265719877056, - "timestamp": "2024-11-18T15:20:58.640Z" - }, - "OD3KAX-2B2O6-PLAA5Q": { - "id": "OD3KAX-2B2O6-PLAA5Q", - "userref": 1731940258, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.942152", - "starttimestamp": "2024-11-18T14:30:59.264Z", - "volume": 10.526624101840484, - "sellid": "OPX2JE-4YFVI-XIW275", - "sellprice": "0.951574", - "stopprice": 0.8008292, - "startselltimestamp": "2024-11-18T14:51:00.163Z", - "sellPrice": 0.951574, - "profit": 0.01944368527201372, - "timestamp": "2024-11-18T15:20:58.641Z" - }, - "OJ2KWT-RESO7-7FQNWF": { - "id": "OJ2KWT-RESO7-7FQNWF", - "userref": 1731945659, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.951429", - "starttimestamp": "2024-11-18T16:01:00.760Z", - "volume": 12.347440154880468, - "sellid": "ORARGL-52UKP-A5W7KI", - "sellprice": "0.960943", - "stopprice": 0.80871465, - "startselltimestamp": "2024-11-18T16:51:00.691Z", - "sellPrice": 0.960943, - "profit": 0.023021950338057123, - "timestamp": "2024-11-18T17:01:00.222Z" - }, - "O2WYYD-PZIHT-HYSTN5": { - "id": "O2WYYD-PZIHT-HYSTN5", - "userref": 1731945959, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.951429", - "starttimestamp": "2024-11-18T16:06:01.066Z", - "volume": 8.643207623213495, - "sellid": "OS42CF-IP6FD-BYC24I", - "sellprice": "0.960943", - "stopprice": 0.80871465, - "startselltimestamp": "2024-11-18T16:51:01.411Z", - "sellPrice": 0.960943, - "profit": 0.016115364331973275, - "timestamp": "2024-11-18T17:01:00.224Z" - }, - "OLCPLJ-XUXFD-DYRCLL": { - "id": "OLCPLJ-XUXFD-DYRCLL", - "userref": 1731946259, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.951429", - "starttimestamp": "2024-11-18T16:11:01.145Z", - "volume": 6.050244996546638, - "sellid": "OKT2J4-72OFN-3NVIO6", - "sellprice": "0.960943", - "stopprice": 0.80871465, - "startselltimestamp": "2024-11-18T16:51:02.029Z", - "sellPrice": 0.960943, - "profit": 0.011280754399001627, - "timestamp": "2024-11-18T17:01:00.224Z" - }, - "OYDBZH-BINYO-3H54DG": { - "id": "OYDBZH-BINYO-3H54DG", - "userref": 1731949260, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.960595", - "starttimestamp": "2024-11-18T17:01:01.523Z", - "volume": 12.269525617898223, - "sellid": "O7PMAQ-A4IVP-PFD5CT", - "sellprice": "0.970201", - "stopprice": 0.8165057499999999, - "startselltimestamp": "2024-11-18T17:21:00.985Z", - "sellPrice": 0.970201, - "profit": 0.023101259145787575, - "timestamp": "2024-11-18T18:31:01.821Z" - }, - "OSJTMY-23BZR-QRGZC4": { - "id": "OSJTMY-23BZR-QRGZC4", - "userref": 1731949560, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.960595", - "starttimestamp": "2024-11-18T17:06:01.650Z", - "volume": 8.58851239203094, - "sellid": "OUW4ZF-H7GEK-X2MJ37", - "sellprice": "0.970201", - "stopprice": 0.8165057499999999, - "startselltimestamp": "2024-11-18T17:21:01.469Z", - "sellPrice": 0.970201, - "profit": 0.016170588547913714, - "timestamp": "2024-11-18T18:31:01.823Z" - }, - "OQODE3-J44R4-IFPSDE": { - "id": "OQODE3-J44R4-IFPSDE", - "userref": 1731949860, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.960595", - "starttimestamp": "2024-11-18T17:11:01.840Z", - "volume": 6.0119600161540845, - "sellid": "OMAP2E-JU47M-SDRID4", - "sellprice": "0.970201", - "stopprice": 0.8165057499999999, - "startselltimestamp": "2024-11-18T17:21:02.182Z", - "sellPrice": 0.970201, - "profit": 0.0113194145097755, - "timestamp": "2024-11-18T18:31:01.823Z" - }, - "OSP4CA-P36B3-PJ4IOF": { - "id": "OSP4CA-P36B3-PJ4IOF", - "userref": 1731941460, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.938381", - "starttimestamp": "2024-11-18T14:51:01.656Z", - "volume": 7.3628337883563155, - "sellid": "OT4IHL-T5KUH-HG5S56", - "sellprice": "0.947765", - "stopprice": 0.79762385, - "startselltimestamp": "2024-11-18T19:26:03.825Z", - "sellPrice": 0.947765, - "profit": 0.013543314275643564, - "timestamp": "2024-11-18T19:46:03.810Z" - }, - "O3S7CO-VLOGJ-UR4FOX": { - "id": "O3S7CO-VLOGJ-UR4FOX", - "userref": 1731941758, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.938381", - "starttimestamp": "2024-11-18T14:55:59.787Z", - "volume": 5.153982771645422, - "sellid": "O2CWDV-BEMGH-LHXR5U", - "sellprice": "0.947765", - "stopprice": 0.79762385, - "startselltimestamp": "2024-11-18T19:26:04.425Z", - "sellPrice": 0.947765, - "profit": 0.009480318373888193, - "timestamp": "2024-11-18T19:46:03.810Z" - }, - "OL3FTE-34SW4-QS4FWB": { - "id": "OL3FTE-34SW4-QS4FWB", - "userref": 1731943258, - "pair": "NANOUSD", - "starttimestamp": "2024-11-18T15:30:58.845Z", - "type": "sell", - "status": "open", - "ordertype": "limit", - "volume": "17.82745535", - "price": "0.941403", - "sellid": "O2VMHW-DDMXX-NH6ZRV", - "sellprice": "0.950817", - "stopprice": 0.80019255, - "startselltimestamp": "2024-11-18T19:26:05.061Z", - "sellPrice": 0.950817, - "profit": 0.03289379441539372, - "timestamp": "2024-11-18T20:31:04.104Z" - }, - "OGCSCS-Y6PKY-GM6KMH": { - "id": "OGCSCS-Y6PKY-GM6KMH", - "userref": 1731959164, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.947876", - "starttimestamp": "2024-11-18T19:46:05.673Z", - "volume": 7.980917223873555, - "sellid": "ODSYAC-P3FNG-MNY3IR", - "sellprice": "0.957355", - "stopprice": 0.8056946, - "startselltimestamp": "2024-11-18T19:51:04.325Z", - "sellPrice": 0.957355, - "profit": 0.014829150751665285, - "timestamp": "2024-11-18T21:16:05.008Z" - }, - "OU35DG-T7IY6-QSLNA3": { - "id": "OU35DG-T7IY6-QSLNA3", - "userref": 1731959464, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.947135", - "starttimestamp": "2024-11-18T19:51:05.775Z", - "volume": 5.584953610918884, - "sellid": "OYE3LR-OJLRE-WI3N2T", - "sellprice": "0.956606", - "stopprice": 0.8050647499999999, - "startselltimestamp": "2024-11-18T19:56:04.329Z", - "sellPrice": 0.956606, - "profit": 0.010365874960195316, - "timestamp": "2024-11-18T21:16:05.009Z" - }, - "OWEIMJ-YRX2J-ECM2N7": { - "id": "OWEIMJ-YRX2J-ECM2N7", - "userref": 1731954662, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.956087", - "starttimestamp": "2024-11-18T18:31:03.244Z", - "volume": 12.367542649983614, - "sellid": "OODTGN-XZPWQ-SRYB4I", - "sellprice": "0.965648", - "stopprice": 0.81267395, - "startselltimestamp": "2024-11-18T19:01:03.695Z", - "sellPrice": 0.965648, - "profit": 0.023177516978626744, - "timestamp": "2024-11-18T21:31:05.291Z" - }, - "OBNL7R-KTEQM-3I4WOH": { - "id": "OBNL7R-KTEQM-3I4WOH", - "userref": 1731954962, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.955231", - "starttimestamp": "2024-11-18T18:36:03.683Z", - "volume": 8.664877619382347, - "sellid": "OOIJLG-LPIZD-SP5GBC", - "sellprice": "0.964783", - "stopprice": 0.81194635, - "startselltimestamp": "2024-11-18T19:01:04.183Z", - "sellPrice": 0.964783, - "profit": 0.016220165670336392, - "timestamp": "2024-11-18T21:31:05.293Z" - }, - "OWQHLW-35PW2-5CJWIY": { - "id": "OWQHLW-35PW2-5CJWIY", - "userref": 1731955262, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.955231", - "starttimestamp": "2024-11-18T18:41:03.689Z", - "volume": 6.065415697028056, - "sellid": "OSBIQH-O7FPF-C33YF6", - "sellprice": "0.964783", - "stopprice": 0.81194635, - "startselltimestamp": "2024-11-18T19:06:04.192Z", - "sellPrice": 0.964783, - "profit": 0.01135411852155685, - "timestamp": "2024-11-18T21:31:05.294Z" - }, - "OEVV2U-F4QHB-KPGNFB": { - "id": "OEVV2U-F4QHB-KPGNFB", - "userref": 1731969066, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.953654", - "starttimestamp": "2024-11-18T22:31:07.598Z", - "volume": 14.213303271367943, - "sellid": "O55NM2-5EMO6-4BXEA2", - "sellprice": "0.963191", - "stopprice": 0.8106059, - "startselltimestamp": "2024-11-18T22:46:06.740Z", - "sellPrice": 0.963191, - "profit": 0.02657347606221616, - "timestamp": "2024-11-18T23:21:07.048Z" - }, - "O4OUUS-2ZNDD-W5WZHP": { - "id": "O4OUUS-2ZNDD-W5WZHP", - "userref": 1731969966, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.952830", - "starttimestamp": "2024-11-18T22:46:08.547Z", - "volume": 16.00003401584149, - "sellid": "ORCHDT-VIVGX-QFZO4A", - "sellprice": "0.962358", - "stopprice": 0.8099055, - "startselltimestamp": "2024-11-18T22:51:07.209Z", - "sellPrice": 0.962358, - "profit": 0.029876031516014007, - "timestamp": "2024-11-18T23:21:07.050Z" - }, - "O24O4U-Q2N6X-JMZICG": { - "id": "O24O4U-Q2N6X-JMZICG", - "userref": 1731970267, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.952953", - "starttimestamp": "2024-11-18T22:51:08.627Z", - "volume": 11.18658591375567, - "sellid": "OT3DF7-GDV3E-WES63Y", - "status": "open", - "sellprice": "0.962483", - "stopprice": 0.81001005, - "startselltimestamp": "2024-11-18T22:56:06.892Z", - "sellPrice": 0.962483, - "profit": 0.020899406252889108, - "timestamp": "2024-11-18T23:21:07.050Z" - }, - "ORFJSX-FUCSJ-YUVWZ4": { - "id": "ORFJSX-FUCSJ-YUVWZ4", - "userref": 1731970567, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.952570", - "starttimestamp": "2024-11-18T22:56:08.816Z", - "volume": 7.822007143363919, - "sellid": "OAWOCQ-WAYPX-5RES2V", - "status": "open", - "sellprice": "0.962096", - "stopprice": 0.8096845, - "startselltimestamp": "2024-11-18T23:01:07.329Z", - "sellPrice": 0.962096, - "profit": 0.01460631553106078, - "timestamp": "2024-11-18T23:21:07.051Z" - }, - "OSZX2G-3WMAI-F2IQVP": { - "id": "OSZX2G-3WMAI-F2IQVP", - "userref": 1731972067, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.952592", - "starttimestamp": "2024-11-18T23:21:08.351Z", - "volume": 20.352369160605928, - "sellid": "OZ3HRB-TIY5H-3ZCMX3", - "status": "open", - "sellprice": "0.962118", - "stopprice": 0.8097032, - "startselltimestamp": "2024-11-18T23:26:07.918Z", - "sellPrice": 0.962118, - "profit": 0.03800112960191748, - "timestamp": "2024-11-19T00:31:08.116Z" - }, - "OOQ27J-PGABP-HERT6V": { - "id": "OOQ27J-PGABP-HERT6V", - "userref": 1731977168, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.953831", - "starttimestamp": "2024-11-19T00:46:09.847Z", - "volume": 20.377070609460432, - "sellid": "OYKN56-TXU7Q-F5PW7Q", - "sellprice": "0.963369", - "stopprice": 0.81075635, - "startselltimestamp": "2024-11-19T04:14:48.174Z", - "sellPrice": 0.963369, - "profit": 0.0380888203832043, - "timestamp": "2024-11-19T12:04:56.213Z" - }, - "OJZUU6-XWNHZ-4NPPIE": { - "id": "OJZUU6-XWNHZ-4NPPIE", - "userref": 1731978284, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.953873", - "starttimestamp": "2024-11-19T01:04:46.099Z", - "volume": 14.263310425227056, - "sellid": "OQFWP3-W3FSN-XFJXOR", - "sellprice": "0.963412", - "stopprice": 0.81079205, - "startselltimestamp": "2024-11-19T04:14:49.048Z", - "sellPrice": 0.963412, - "profit": 0.02667039363171629, - "timestamp": "2024-11-19T12:04:56.214Z" - }, - "ONWV7F-K2VTA-W462ZE": { - "id": "ONWV7F-K2VTA-W462ZE", - "userref": 1731978313, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.953873", - "starttimestamp": "2024-11-19T01:05:14.593Z", - "volume": 9.98431898144449, - "sellid": "OXLPU2-WVR5O-THC6CL", - "sellprice": "0.963412", - "stopprice": 0.81079205, - "startselltimestamp": "2024-11-19T04:14:49.519Z", - "sellPrice": 0.963412, - "profit": 0.01866927869064472, - "timestamp": "2024-11-19T12:04:56.215Z" - }, - "OG7TRV-MHLLH-2AYFDW": { - "id": "OG7TRV-MHLLH-2AYFDW", - "userref": 1731991790, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.953547", - "starttimestamp": "2024-11-19T04:49:51.837Z", - "volume": 6.876270137232132, - "sellid": "OMSIXG-XKY57-CDZD4W", - "sellprice": "0.963082", - "stopprice": 0.81051495, - "startselltimestamp": "2024-11-19T04:59:48.826Z", - "sellPrice": 0.963082, - "profit": 0.012848200731095806, - "timestamp": "2024-11-19T12:04:56.216Z" - }, - "OMEVKN-EJXRV-UI6MN6": { - "id": "OMEVKN-EJXRV-UI6MN6", - "userref": 1732017896, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.960825", - "starttimestamp": "2024-11-19T12:04:57.985Z", - "volume": 20.223938583034602, - "sellid": "OVIWNQ-ZYSO7-WKQL4D", - "sellprice": "0.970433", - "stopprice": 0.81670125, - "startselltimestamp": "2024-11-19T13:54:58.537Z", - "sellPrice": 0.970433, - "profit": 0.03808102918581835, - "timestamp": "2024-11-19T14:54:58.550Z" - }, - "O5GVNU-HCA75-422CDS": { - "id": "O5GVNU-HCA75-422CDS", - "userref": 1732018196, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.960825", - "starttimestamp": "2024-11-19T12:09:57.919Z", - "volume": 14.154505619982652, - "sellid": "O5NKMM-37I6R-BTX2DZ", - "sellprice": "0.970433", - "stopprice": 0.81670125, - "startselltimestamp": "2024-11-19T13:54:59.265Z", - "sellPrice": 0.970433, - "profit": 0.026652481138246198, - "timestamp": "2024-11-19T14:54:58.552Z" - }, - "OLGVVT-SDG5T-JC7CNP": { - "id": "OLGVVT-SDG5T-JC7CNP", - "userref": 1732018496, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.960825", - "starttimestamp": "2024-11-19T12:14:57.878Z", - "volume": 9.908156146724007, - "sellid": "OD2MQ6-EKMW5-E3VLNT", - "sellprice": "0.970433", - "stopprice": 0.81670125, - "startselltimestamp": "2024-11-19T13:54:59.971Z", - "sellPrice": 0.970433, - "profit": 0.018656740963284207, - "timestamp": "2024-11-19T14:54:58.552Z" - }, - "OS4UJK-J7DTO-DC3TSU": { - "id": "OS4UJK-J7DTO-DC3TSU", - "userref": 1732027198, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.959699", - "starttimestamp": "2024-11-19T14:39:59.861Z", - "volume": 6.91058218419361, - "sellid": "OZPPHP-PEAWE-VOHXRB", - "sellprice": "0.969296", - "stopprice": 0.81574415, - "startselltimestamp": "2024-11-19T14:49:59.209Z", - "sellPrice": 0.969296, - "profit": 0.012998943300112892, - "timestamp": "2024-11-19T14:54:58.553Z" - }, - "O6REWL-HJM3Q-BXKCR3": { - "id": "O6REWL-HJM3Q-BXKCR3", - "userref": 1732028399, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.957476", - "starttimestamp": "2024-11-19T15:00:01.273Z", - "volume": 14.240791684418054, - "sellid": "OJUBA6-B7ZCM-Q2FULV", - "sellprice": "0.967051", - "stopprice": 0.8138546, - "startselltimestamp": "2024-11-19T15:09:59.842Z", - "sellPrice": 0.967051, - "profit": 0.02672842798615155, - "timestamp": "2024-11-19T15:59:59.754Z" - }, - "OBN4DJ-IGZ62-Q2Q4MN": { - "id": "OBN4DJ-IGZ62-Q2Q4MN", - "userref": 1732028699, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.955819", - "starttimestamp": "2024-11-19T15:05:00.534Z", - "volume": 8.177926013600718, - "sellid": "OVN4VK-NKUOM-IT6E4L", - "sellprice": "0.965377", - "stopprice": 0.81244615, - "startselltimestamp": "2024-11-19T15:19:59.974Z", - "sellPrice": 0.965377, - "profit": 0.01531902185549422, - "timestamp": "2024-11-19T15:59:59.755Z" - }, - "ORBOSQ-5R57B-J4FYFV": { - "id": "ORBOSQ-5R57B-J4FYFV", - "userref": 1732029000, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.955771", - "starttimestamp": "2024-11-19T15:10:01.704Z", - "volume": 5.488891225828892, - "sellid": "O6EBBS-4BPLN-AOITFS", - "sellprice": "0.965329", - "stopprice": 0.81240535, - "startselltimestamp": "2024-11-19T15:20:00.684Z", - "sellPrice": 0.965329, - "profit": 0.010283986600712502, - "timestamp": "2024-11-19T15:59:59.757Z" - }, - "OCBSKJ-QEMVO-IBVBVB": { - "id": "OCBSKJ-QEMVO-IBVBVB", - "userref": 1732029601, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.954585", - "starttimestamp": "2024-11-19T15:20:02.701Z", - "volume": 5.872183181635356, - "sellid": "O4EZU5-DE7CP-27KUCE", - "sellprice": "0.964131", - "stopprice": 0.81139725, - "startselltimestamp": "2024-11-19T15:24:59.772Z", - "sellPrice": 0.964131, - "profit": 0.010987653349752172, - "timestamp": "2024-11-19T15:59:59.757Z" - }, - "OVDYNO-YQMIN-NWTOIZ": { - "id": "OVDYNO-YQMIN-NWTOIZ", - "userref": 1731961864, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.943097", - "starttimestamp": "2024-11-18T20:31:05.371Z", - "volume": 9.300528106744578, - "sellid": "OVA3AB-6EBNY-FD2QQY", - "sellprice": "0.952528", - "stopprice": 0.8016324499999999, - "startselltimestamp": "2024-11-19T17:45:02.483Z", - "sellPrice": 0.952528, - "profit": 0.017192026205316638, - "timestamp": "2024-11-19T17:50:01.500Z" - }, - "ORAZQJ-KN4ZS-3CEN6J": { - "id": "ORAZQJ-KN4ZS-3CEN6J", - "userref": 1731962164, - "pair": "NANOUSD", - "starttimestamp": "2024-11-18T20:46:04.643Z", - "type": "sell", - "ordertype": "limit", - "volume": "6.51258542", - "price": "0.942761", - "sellid": "OF4Z77-HD6GW-O3H7I4", - "sellprice": "0.952189", - "stopprice": 0.8013468499999999, - "startselltimestamp": "2024-11-19T17:45:03.180Z", - "sellPrice": 0.952189, - "profit": 0.01203656037324325, - "timestamp": "2024-11-19T17:50:01.502Z" - }, - "OCNTTY-Z6BWW-S2GACD": { - "id": "OCNTTY-Z6BWW-S2GACD", - "userref": 1731964565, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.943914", - "starttimestamp": "2024-11-18T21:16:06.405Z", - "volume": 8.669297528081328, - "sellid": "OKXZCC-R2ZXR-AP6ZG7", - "sellprice": "0.953353", - "stopprice": 0.8023269, - "startselltimestamp": "2024-11-19T17:45:03.883Z", - "sellPrice": 0.953353, - "profit": 0.016037610914718572, - "timestamp": "2024-11-19T17:50:01.504Z" - }, - "OVRNWB-NTP7P-YTARBX": { - "id": "OVRNWB-NTP7P-YTARBX", - "userref": 1732031700, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.952519", - "starttimestamp": "2024-11-19T15:55:01.661Z", - "volume": 5.596770478002713, - "sellid": "OKIYUV-JPDIJ-Y43IGR", - "sellprice": "0.962044", - "stopprice": 0.80964115, - "startselltimestamp": "2024-11-19T17:45:04.656Z", - "sellPrice": 0.962044, - "profit": 0.010447760096270874, - "timestamp": "2024-11-19T18:15:01.929Z" - }, - "OVO73I-WGMNZ-VGQPFX": { - "id": "OVO73I-WGMNZ-VGQPFX", - "userref": 1732032300, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.953860", - "starttimestamp": "2024-11-19T16:05:01.878Z", - "volume": 18.84664367040125, - "sellid": "OEO6HB-JYJLC-4EQKF7", - "sellprice": "0.963399", - "stopprice": 0.810781, - "startselltimestamp": "2024-11-19T17:45:05.564Z", - "sellPrice": 0.963399, - "profit": 0.03524254518447842, - "timestamp": "2024-11-19T18:15:01.930Z" - }, - "OOWKZ6-OON43-SHUF24": { - "id": "OOWKZ6-OON43-SHUF24", - "userref": 1732032600, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.953604", - "starttimestamp": "2024-11-19T16:10:01.577Z", - "volume": 13.196194924593136, - "sellid": "OLHTYF-FIGL3-DYEF25", - "sellprice": "0.963140", - "stopprice": 0.8105633999999999, - "startselltimestamp": "2024-11-19T17:45:06.276Z", - "sellPrice": 0.96314, - "profit": 0.024664005022743754, - "timestamp": "2024-11-19T18:15:01.931Z" - }, - "O7QQF4-TM72P-T6NJYH": { - "id": "O7QQF4-TM72P-T6NJYH", - "userref": 1732049405, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.954950", - "starttimestamp": "2024-11-19T20:50:07.316Z", - "volume": 6.654774783638686, - "sellid": "OCAUWX-CKPTB-RIFKGN", - "status": "open", - "sellprice": "0.964499", - "stopprice": 0.8117074999999999, - "startselltimestamp": "2024-11-19T20:55:05.694Z", - "sellPrice": 0.964499, - "profit": 0.012452441194244206, - "timestamp": "2024-11-21T07:52:37.955Z" - }, - "OB4ZHH-EXU5U-5OHFM4": { - "id": "OB4ZHH-EXU5U-5OHFM4", - "userref": 1732040102, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.956291", - "starttimestamp": "2024-11-19T18:15:03.584Z", - "volume": 27.80703331454527, - "sellid": "O7RQ5N-NLGV6-6WF26V", - "sellprice": "0.965854", - "stopprice": 0.81284735, - "startselltimestamp": "2024-11-19T20:25:05.094Z", - "sellPrice": 0.965854, - "profit": 0.052122059385451086, - "timestamp": "2024-11-21T09:52:39.776Z" - }, - "OVQ2D4-QADQV-LYEDA4": { - "id": "OVQ2D4-QADQV-LYEDA4", - "userref": 1732040402, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.956283", - "starttimestamp": "2024-11-19T18:20:03.631Z", - "volume": 19.46343809087932, - "sellid": "O6PVQZ-AEM4E-GAGQCW", - "sellprice": "0.965846", - "stopprice": 0.81284055, - "startselltimestamp": "2024-11-19T20:25:06.834Z", - "sellPrice": 0.965846, - "profit": 0.03648390328634338, - "timestamp": "2024-11-21T09:52:39.778Z" - }, - "OCZUCG-OENYT-5YQCSG": { - "id": "OCZUCG-OENYT-5YQCSG", - "userref": 1732040702, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.956283", - "starttimestamp": "2024-11-19T18:25:03.727Z", - "volume": 13.624406663879315, - "sellid": "OBCIKE-43IWI-3ZUVQE", - "sellprice": "0.965846", - "stopprice": 0.81284055, - "startselltimestamp": "2024-11-19T20:25:07.703Z", - "sellPrice": 0.965846, - "profit": 0.02553873230093391, - "timestamp": "2024-11-21T09:52:39.779Z" - }, - "OCXIE2-GSXRJ-DA5UQV": { - "id": "OCXIE2-GSXRJ-DA5UQV", - "userref": 1732049104, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.955957", - "starttimestamp": "2024-11-19T20:45:06.062Z", - "volume": 9.494631740942644, - "sellid": "OQK3CT-CBBOE-WHIZRY", - "status": "open", - "sellprice": "0.965517", - "stopprice": 0.81256345, - "startselltimestamp": "2024-11-19T20:50:05.472Z", - "sellPrice": 0.965517, - "profit": 0.017793927324226494, - "timestamp": "2024-11-21T09:52:39.780Z" - }, - "OFMUTW-ETTRM-LIP2KJ": { - "id": "OFMUTW-ETTRM-LIP2KJ", - "userref": 1732175558, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.949848", - "starttimestamp": "2024-11-21T07:52:39.436Z", - "volume": 6.726527649013686, - "sellid": "OJA6LQ-FVSOU-HF3ZFD", - "sellprice": "0.959346", - "stopprice": 0.8073708, - "startselltimestamp": "2024-11-21T10:02:40.312Z", - "sellPrice": 0.959346, - "profit": 0.01251957469700854, - "timestamp": "2024-11-21T10:17:39.989Z" - }, - "OTZQUU-GW26B-ZBOCCS": { - "id": "OTZQUU-GW26B-ZBOCCS", - "userref": 1732183361, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.952916", - "starttimestamp": "2024-11-21T10:02:42.488Z", - "volume": 12.720224706408562, - "sellid": "O3FWT7-D4FCF-RYID6Q", - "status": "open", - "sellprice": "0.962445", - "stopprice": 0.8099786, - "startselltimestamp": "2024-11-21T10:07:40.212Z", - "sellPrice": 0.962445, - "profit": 0.023755731971801516, - "timestamp": "2024-11-21T10:17:39.990Z" - }, - "OTFXIM-JZNTG-63HFK3": { - "id": "OTFXIM-JZNTG-63HFK3", - "userref": 1732182760, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.955079", - "starttimestamp": "2024-11-21T09:52:40.961Z", - "volume": 25.983106477823508, - "sellid": "OQ2CPN-ZYIZM-M3ZQJP", - "sellprice": "0.964630", - "stopprice": 0.81181715, - "startselltimestamp": "2024-11-21T10:02:40.732Z", - "sellPrice": 0.96463, - "profit": 0.04864463655594706, - "timestamp": "2024-11-21T10:22:40.220Z" - }, - "OA4U3X-7V2YT-CYEJ5N": { - "id": "OA4U3X-7V2YT-CYEJ5N", - "userref": 1732183060, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.955079", - "starttimestamp": "2024-11-21T09:57:40.976Z", - "volume": 18.18506833357525, - "sellid": "OVYYSZ-G5TNZ-JI5FTU", - "sellprice": "0.964630", - "stopprice": 0.81181715, - "startselltimestamp": "2024-11-21T10:02:41.147Z", - "sellPrice": 0.96463, - "profit": 0.034045430271660154, - "timestamp": "2024-11-21T10:22:40.221Z" - }, - "OJMOT5-CXS2W-4NGKNK": { - "id": "OJMOT5-CXS2W-4NGKNK", - "userref": 1732183660, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.952916", - "starttimestamp": "2024-11-21T10:07:41.527Z", - "volume": 8.90267790104476, - "sellid": "OAZAMJ-XTM6X-N5T45B", - "sellprice": "0.962445", - "stopprice": 0.8099786, - "startselltimestamp": "2024-11-21T10:32:40.828Z", - "sellPrice": 0.962445, - "profit": 0.016626249530164103, - "timestamp": "2024-11-21T10:52:40.716Z" - }, - "OZEBWM-2QZ2F-OQ5QZV": { - "id": "OZEBWM-2QZ2F-OQ5QZV", - "userref": 1732183960, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.952916", - "starttimestamp": "2024-11-21T10:12:41.025Z", - "volume": 6.231873480005992, - "sellid": "O4NVLZ-SJK5D-YBS356", - "sellprice": "0.962445", - "stopprice": 0.8099786, - "startselltimestamp": "2024-11-21T10:32:41.253Z", - "sellPrice": 0.962445, - "profit": 0.011638372708826082, - "timestamp": "2024-11-21T10:52:40.718Z" - }, - "OX3XIY-LWWHA-EIJZPC": { - "id": "OX3XIY-LWWHA-EIJZPC", - "userref": 1732184861, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.953221", - "starttimestamp": "2024-11-21T10:27:42.048Z", - "volume": 20.526107842192882, - "sellid": "ORQEXL-QDIF3-VZLVYU", - "sellprice": "0.962753", - "stopprice": 0.8102378499999999, - "startselltimestamp": "2024-11-21T10:32:41.640Z", - "sellPrice": 0.962753, - "profit": 0.03834490416443312, - "timestamp": "2024-11-21T10:52:40.721Z" - }, - "OEUD7K-LDHJA-SHBM7N": { - "id": "OEUD7K-LDHJA-SHBM7N", - "userref": 1732185161, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.952979", - "starttimestamp": "2024-11-21T10:32:42.821Z", - "volume": 14.345192268400409, - "sellid": "OX2W6L-K7SQK-5NBSOL", - "sellprice": "0.962509", - "stopprice": 0.81003215, - "startselltimestamp": "2024-11-21T10:37:40.707Z", - "sellPrice": 0.962509, - "profit": 0.026797507726600236, - "timestamp": "2024-11-21T10:52:40.724Z" - }, - "O2SRRC-P75E7-XTH3U5": { - "id": "O2SRRC-P75E7-XTH3U5", - "userref": 1732185761, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.952893", - "starttimestamp": "2024-11-21T10:42:42.589Z", - "volume": 7.022238497203522, - "sellid": "O2XB43-YHWPC-IAJP6N", - "sellprice": "0.962422", - "stopprice": 0.80995905, - "startselltimestamp": "2024-11-21T15:12:45.902Z", - "sellPrice": 0.962422, - "profit": 0.013115715730766656, - "timestamp": "2024-11-21T23:02:52.887Z" - }, - "ORBSPO-ZULKI-5P4DMY": { - "id": "ORBSPO-ZULKI-5P4DMY", - "userref": 1732186360, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.953671", - "starttimestamp": "2024-11-21T10:52:41.853Z", - "volume": 23.106280405191836, - "sellid": "OQFHW7-3L4CP-6RG6L3", - "sellprice": "0.963208", - "stopprice": 0.81062035, - "startselltimestamp": "2024-11-21T15:12:46.580Z", - "sellPrice": 0.963208, - "profit": 0.04319682151701948, - "timestamp": "2024-11-22T00:17:53.376Z" - }, - "OHDAW4-NWYEQ-WOAJ7M": { - "id": "OHDAW4-NWYEQ-WOAJ7M", - "userref": 1732230173, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.948931", - "starttimestamp": "2024-11-21T23:02:54.074Z", - "volume": 9.017162208176055, - "sellid": "O37GRV-AVPJH-OHMT7G", - "sellprice": "0.958420", - "stopprice": 0.8065913499999999, - "startselltimestamp": "2024-11-22T00:47:54.716Z", - "sellPrice": 0.95842, - "profit": 0.016768278773675788, - "timestamp": "2024-11-22T03:27:56.994Z" - }, - "OJC6VC-ZRQYM-73DCMB": { - "id": "OJC6VC-ZRQYM-73DCMB", - "userref": 1732230473, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.948931", - "starttimestamp": "2024-11-21T23:07:54.572Z", - "volume": 6.31170185009787, - "sellid": "OIQGIG-OGH3E-2RK4ZR", - "sellprice": "0.958420", - "stopprice": 0.8065913499999999, - "startselltimestamp": "2024-11-22T00:47:55.245Z", - "sellPrice": 0.95842, - "profit": 0.011737215513634769, - "timestamp": "2024-11-22T03:27:56.995Z" - }, - "OSIEFS-OWWWG-SALIEO": { - "id": "OSIEFS-OWWWG-SALIEO", - "userref": 1732246377, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.951145", - "starttimestamp": "2024-11-22T03:32:58.749Z", - "volume": 5.958133247323769, - "sellid": "O2MFMW-RKDZ4-CWAXJJ", - "sellprice": "0.960656", - "stopprice": 0.80847325, - "startselltimestamp": "2024-11-22T03:52:58.534Z", - "sellPrice": 0.960656, - "profit": 0.011104744913828936, - "timestamp": "2024-11-22T04:02:57.790Z" - }, - "OX3WEF-JGPAS-KLSOIN": { - "id": "OX3WEF-JGPAS-KLSOIN", - "userref": 1732235274, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.955580", - "starttimestamp": "2024-11-22T00:27:56.092Z", - "volume": 7.940539993688571, - "sellid": "OEFI5P-OUQES-TKN57O", - "sellprice": "0.965136", - "stopprice": 0.8122429999999999, - "startselltimestamp": "2024-11-22T00:42:54.869Z", - "sellPrice": 0.965136, - "profit": 0.014873711321617286, - "timestamp": "2024-11-22T04:32:58.698Z" - }, - "OE5CPK-6FUW7-PMF6M7": { - "id": "OE5CPK-6FUW7-PMF6M7", - "userref": 1732236175, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.954803", - "starttimestamp": "2024-11-22T00:42:56.096Z", - "volume": 5.556944481000899, - "sellid": "OUP2WQ-WOQ4I-27SKPZ", - "status": "open", - "sellprice": "0.964351", - "stopprice": 0.8115825499999999, - "startselltimestamp": "2024-11-22T00:47:55.813Z", - "sellPrice": 0.964351, - "profit": 0.01039917699063371, - "timestamp": "2024-11-22T04:32:58.700Z" - }, - "OVKXLY-NZCSL-QFGNNA": { - "id": "OVKXLY-NZCSL-QFGNNA", - "userref": 1732234673, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.956856", - "starttimestamp": "2024-11-22T00:17:54.770Z", - "volume": 11.342073869930399, - "sellid": "OYTA27-FALD5-S43OFM", - "sellprice": "0.966425", - "stopprice": 0.8133276, - "startselltimestamp": "2024-11-22T00:27:54.610Z", - "sellPrice": 0.966425, - "profit": 0.02127632416282868, - "timestamp": "2024-11-22T05:48:00.048Z" - }, - "ONPQCI-KKXVF-QWTHP2": { - "id": "ONPQCI-KKXVF-QWTHP2", - "userref": 1732192362, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.965556", - "starttimestamp": "2024-11-21T12:32:44.092Z", - "volume": 15.973133187511516, - "sellid": "O2DDSI-RQLD5-2RWVZB", - "sellprice": "0.975212", - "stopprice": 0.8207226, - "startselltimestamp": "2024-11-21T14:32:44.270Z", - "sellPrice": 0.975212, - "profit": 0.03023599105836819, - "timestamp": "2024-11-22T08:23:02.065Z" - }, - "O5VMJK-5TSH5-7JSWIG": { - "id": "O5VMJK-5TSH5-7JSWIG", - "userref": 1732192963, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.965556", - "starttimestamp": "2024-11-21T12:42:44.501Z", - "volume": 7.826838738958946, - "sellid": "OH7ZYM-7HZXM-3V5YVL", - "sellprice": "0.975212", - "stopprice": 0.8207226, - "startselltimestamp": "2024-11-21T14:32:45.259Z", - "sellPrice": 0.975212, - "profit": 0.014815642200460576, - "timestamp": "2024-11-22T08:23:02.066Z" - }, - "OWOTVA-OOWR7-EPZRIC": { - "id": "OWOTVA-OOWR7-EPZRIC", - "userref": 1732271584, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.979181", - "starttimestamp": "2024-11-22T10:33:05.327Z", - "volume": 6.716707590066154, - "sellid": "O6IVB6-XSYMH-GF34TR", - "sellprice": "0.988973", - "stopprice": 0.83230385, - "startselltimestamp": "2024-11-22T13:48:06.849Z", - "sellPrice": 0.988973, - "profit": 0.012891941081051711, - "timestamp": "2024-11-22T14:03:06.864Z" - }, - "O4Z4ED-F5ZBL-QWPPFK": { - "id": "O4Z4ED-F5ZBL-QWPPFK", - "userref": 1732284187, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.998891", - "starttimestamp": "2024-11-22T14:03:08.178Z", - "volume": 6.593991038887153, - "sellid": "OPD63T-ZPHBI-P3CKMH", - "status": "open", - "sellprice": "1.008880", - "stopprice": 0.8490573499999999, - "startselltimestamp": "2024-11-22T14:08:07.491Z", - "sellPrice": 1.00888, - "profit": 0.012910480558893787, - "timestamp": "2024-11-22T21:08:14.638Z" - }, - "OBKS6M-ZJCCF-2HVK4A": { - "id": "OBKS6M-ZJCCF-2HVK4A", - "userref": 1732952646, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "159.84", - "starttimestamp": "2024-11-30T07:44:07.146Z", - "volume": 0.11877602243043195, - "sellid": "OASNHD-QB75P-26PYQ2", - "sellprice": "161.44", - "stopprice": 135.864, - "startselltimestamp": "2024-11-30T08:00:30.346Z", - "sellPrice": 161.44, - "profit": 0.037400193942893345, - "timestamp": "2024-11-30T20:31:15.723Z" - }, - "OSL7TJ-46GE5-BLROEW": { - "id": "OSL7TJ-46GE5-BLROEW", - "userref": 1732953630, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "159.93", - "starttimestamp": "2024-11-30T08:00:32.162Z", - "volume": 0.05788803577316288, - "sellid": "OQU3OT-H2QGW-P2SUBO", - "sellprice": "161.53", - "stopprice": 135.94050000000001, - "startselltimestamp": "2024-11-30T08:05:30.782Z", - "sellPrice": 161.53, - "profit": 0.01818610531849639, - "timestamp": "2024-11-30T20:41:16.032Z" - }, - "OSIG3X-73ZAH-JHDOCW": { - "id": "OSIG3X-73ZAH-JHDOCW", - "userref": 1732957544, - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "159.93", - "starttimestamp": "2024-11-30T09:05:45.101Z", - "volume": 0.04047738360191896, - "sellid": "OPQEFQ-BLYCL-7JKUTH", - "status": "open", - "sellprice": "161.53", - "stopprice": 135.94050000000001, - "startselltimestamp": "2024-11-30T09:10:43.865Z", - "sellPrice": 161.53, - "profit": 0.01271637483237803, - "timestamp": "2024-11-30T20:41:16.034Z" - }, - "OPYO4Y-CU773-BK5UGH": { - "id": "OPYO4Y-CU773-BK5UGH", - "userref": 1733006478, - "pair": "XXMRZUSD", - "starttimestamp": "2024-11-30T22:51:18.324Z", - "type": "sell", - "status": "open", - "ordertype": "limit", - "volume": "0.03787841", - "price": "161.35", - "sellid": "OU5CW7-MYW3H-RYGEJZ", - "sellprice": "162.16", - "stopprice": 137.14749999999998, - "startselltimestamp": "2024-12-01T21:48:17.785Z", - "sellPrice": 162.16, - "profit": -0.018334665576399865, - "timestamp": "2024-12-01T22:08:15.121Z" - }, - "OIJIV5-SLDRE-FT3CUJ": { - "id": "OIJIV5-SLDRE-FT3CUJ", - "userref": 1733090895, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.29", - "starttimestamp": "2024-12-01T22:08:17.130Z", - "volume": 0.07685581071330973, - "sellid": "OKPOKN-THAI4-R34GNA", - "sellprice": "163.10", - "stopprice": 137.9465, - "startselltimestamp": "2024-12-01T22:13:16.069Z", - "sellPrice": 163.1, - "profit": -0.03777924231423463, - "timestamp": "2024-12-01T23:58:17.128Z" - }, - "O4YHBM-MHKEA-SOHFME": { - "id": "O4YHBM-MHKEA-SOHFME", - "userref": 1733091196, - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.29", - "starttimestamp": "2024-12-01T22:13:18.048Z", - "volume": 0.05374398946724078, - "sellid": "OV22WQ-KOZMY-AIAICE", - "status": "open", - "sellprice": "163.10", - "stopprice": 137.9465, - "startselltimestamp": "2024-12-01T22:18:16.246Z", - "sellPrice": 163.1, - "profit": -0.026418395462517813, - "timestamp": "2024-12-01T23:58:17.129Z" - }, - "OEXHEB-555EA-DGCA6Q": { - "id": "OEXHEB-555EA-DGCA6Q", - "userref": 1733091496, - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.25", - "starttimestamp": "2024-12-01T22:18:18.333Z", - "volume": 0.03757400061255691, - "sellid": "OLHUMY-T64X4-U3J5C2", - "status": "open", - "sellprice": "163.06", - "stopprice": 137.9125, - "startselltimestamp": "2024-12-01T22:23:18.666Z", - "sellPrice": 163.06, - "profit": -0.018457852060912314, - "timestamp": "2024-12-01T23:58:17.131Z" - }, - "OPMBCZ-44PWJ-PKY24G": { - "id": "OPMBCZ-44PWJ-PKY24G", - "userref": 1733098928, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.09", - "starttimestamp": "2024-12-02T00:22:10.635Z", - "volume": 0.16801936086139238, - "sellid": "OYOTQ2-DPNUR-7N6JIB", - "sellprice": "164.52", - "stopprice": 137.7765, - "startselltimestamp": "2024-12-02T04:00:50.623Z", - "sellPrice": 164.52, - "profit": 0.18877983308942484, - "timestamp": "2024-12-02T08:15:54.866Z" - }, - "OE6BAE-P4B5R-CT3JRZ": { - "id": "OE6BAE-P4B5R-CT3JRZ", - "userref": 1733099224, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.09", - "starttimestamp": "2024-12-02T00:27:06.682Z", - "volume": 0.11761238668116424, - "sellid": "O4R7DD-WSNR6-PMTITY", - "sellprice": "164.52", - "stopprice": 137.7765, - "startselltimestamp": "2024-12-02T04:00:51.371Z", - "sellPrice": 164.52, - "profit": 0.1321445731794894, - "timestamp": "2024-12-02T08:15:54.868Z" - }, - "O3RRZ7-QDUJS-UG45W3": { - "id": "O3RRZ7-QDUJS-UG45W3", - "userref": 1733099525, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.20", - "starttimestamp": "2024-12-02T00:32:06.606Z", - "volume": 0.08226948626129488, - "sellid": "O6KWFZ-H6QYQ-KU2NJO", - "sellprice": "164.63", - "stopprice": 137.86999999999998, - "startselltimestamp": "2024-12-02T04:00:51.845Z", - "sellPrice": 164.63, - "profit": 0.09236230683583115, - "timestamp": "2024-12-02T08:15:54.870Z" - }, - "OBY5ZQ-UYIX3-HNQZ6H": { - "id": "OBY5ZQ-UYIX3-HNQZ6H", - "userref": 1733119252, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.17", - "starttimestamp": "2024-12-02T06:00:53.847Z", - "volume": 0.05732425206312755, - "sellid": "OS3TGL-CC4IV-AWTQM5", - "sellprice": "164.60", - "stopprice": 137.84449999999998, - "startselltimestamp": "2024-12-02T06:15:53.830Z", - "sellPrice": 164.6, - "profit": 0.06437054912672796, - "timestamp": "2024-12-02T08:15:54.871Z" - }, - "OPGFUQ-G7DX4-CBZWZU": { - "id": "OPGFUQ-G7DX4-CBZWZU", - "userref": 1733120154, - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.10", - "starttimestamp": "2024-12-02T06:15:55.630Z", - "volume": 0.04010063504459683, - "sellid": "O7X7FD-IWLVL-IA7E4Q", - "status": "open", - "sellprice": "164.53", - "stopprice": 137.785, - "startselltimestamp": "2024-12-02T06:20:53.523Z", - "sellPrice": 164.53, - "profit": 0.04505226145990439, - "timestamp": "2024-12-02T08:15:54.873Z" - }, - "OO6DWP-SLZBQ-VV2C24": { - "id": "OO6DWP-SLZBQ-VV2C24", - "userref": 1733127355, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.30", - "starttimestamp": "2024-12-02T08:15:56.270Z", - "volume": 0.1691701491315282, - "sellid": "OJV5YH-POYKI-ZITZPR", - "sellprice": "164.73", - "stopprice": 137.955, - "startselltimestamp": "2024-12-02T08:45:56.074Z", - "sellPrice": 164.73, - "profit": 0.1897886069076742, - "timestamp": "2024-12-02T10:20:58.071Z" - }, - "OKZ4UD-LBZ4W-DPY6HC": { - "id": "OKZ4UD-LBZ4W-DPY6HC", - "userref": 1733127655, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.25", - "starttimestamp": "2024-12-02T08:20:56.577Z", - "volume": 0.11838891217274301, - "sellid": "OBFQ2R-33QDS-TBNRIB", - "sellprice": "164.68", - "stopprice": 137.9125, - "startselltimestamp": "2024-12-02T08:45:56.677Z", - "sellPrice": 164.68, - "profit": 0.13286550835322866, - "timestamp": "2024-12-02T10:20:58.073Z" - }, - "OFMKNZ-F5PAP-5HEDSG": { - "id": "OFMKNZ-F5PAP-5HEDSG", - "userref": 1733127955, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.25", - "starttimestamp": "2024-12-02T08:25:56.425Z", - "volume": 0.08287128145542783, - "sellid": "OQ6J5T-KTD6E-2WY3IB", - "sellprice": "164.68", - "stopprice": 137.9125, - "startselltimestamp": "2024-12-02T08:45:57.392Z", - "sellPrice": 164.68, - "profit": 0.09300478175179931, - "timestamp": "2024-12-02T10:20:58.075Z" - }, - "OCIY7Z-CGND5-ALH5P4": { - "id": "OCIY7Z-CGND5-ALH5P4", - "userref": 1733129455, - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.26", - "starttimestamp": "2024-12-02T08:50:57.047Z", - "volume": 0.057727459407416776, - "sellid": "OBXCYL-JZXQG-QH663K", - "status": "open", - "sellprice": "164.69", - "stopprice": 137.921, - "startselltimestamp": "2024-12-02T08:55:56.256Z", - "sellPrice": 164.69, - "profit": 0.06478175494700425, - "timestamp": "2024-12-02T10:20:58.077Z" - }, - "OU6RI3-YJSNZ-FVP36K": { - "id": "OU6RI3-YJSNZ-FVP36K", - "userref": 1733130056, - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "162.23", - "starttimestamp": "2024-12-02T09:00:57.236Z", - "volume": 0.04040389217345645, - "sellid": "OR7LUO-LBWST-EHSATD", - "status": "open", - "sellprice": "164.66", - "stopprice": 137.8955, - "startselltimestamp": "2024-12-02T09:05:56.185Z", - "sellPrice": 164.66, - "profit": 0.04535094473117453, - "timestamp": "2024-12-02T10:20:58.079Z" - }, - "ODPM5N-ZLM3D-QQCQCY": { - "id": "ODPM5N-ZLM3D-QQCQCY", - "userref": 1733144461, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "165.07", - "starttimestamp": "2024-12-02T13:01:02.515Z", - "volume": 0.057482776278336666, - "sellid": "O75VQA-MSVKC-I35YWO", - "sellprice": "167.55", - "stopprice": 140.30949999999999, - "startselltimestamp": "2024-12-02T17:31:05.381Z", - "sellPrice": 167.55, - "profit": 0.06607760098747541, - "timestamp": "2024-12-02T18:56:06.502Z" - }, - "OW5AEP-SOTHR-PI4IR2": { - "id": "OW5AEP-SOTHR-PI4IR2", - "userref": 1733144760, - "status": "open", - "pair": "XXMRZUSD", - "type": "sell", - "ordertype": "limit", - "price": "165.07", - "starttimestamp": "2024-12-02T13:06:01.547Z", - "volume": 0.04023931643950129, - "sellid": "ONIV4I-BFFVQ-4YUU72", - "sellprice": "167.55", - "stopprice": 140.30949999999999, - "startselltimestamp": "2024-12-02T17:31:05.958Z", - "sellPrice": 167.55, - "profit": 0.04625589903353684, - "timestamp": "2024-12-02T18:56:06.504Z" - }, - "OQ5EWX-2HCMD-MNQ6BQ": { - "id": "OQ5EWX-2HCMD-MNQ6BQ", - "userref": 1734237973, - "status": "open", - "pair": "GIGAUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.062824", - "starttimestamp": "2024-12-15T04:46:14.473Z", - "volume": 345.41115605248876, - "sellid": "OBFH7L-4CXVU-E7WEUE", - "sellprice": "0.063766", - "stopprice": 0.0534004, - "startselltimestamp": "2024-12-15T04:51:13.184Z", - "sellPrice": 0.063766, - "profit": 0.15047491602270802, - "timestamp": "2024-12-15T09:26:00.634Z" - }, - "OTFBCR-FFJ5G-P4XGDL": { - "id": "OTFBCR-FFJ5G-P4XGDL", - "userref": 1734238273, - "status": "open", - "pair": "GIGAUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.062836", - "starttimestamp": "2024-12-15T04:51:14.640Z", - "volume": 241.48099370916677, - "sellid": "OXVM63-262BM-22UWAQ", - "sellprice": "0.063779", - "stopprice": 0.0534106, - "startselltimestamp": "2024-12-15T04:56:01.631Z", - "sellPrice": 0.063779, - "profit": 0.10541611299379924, - "timestamp": "2024-12-15T09:26:00.636Z" - }, - "OWJ7H4-U36OU-G6KMAS": { - "id": "OWJ7H4-U36OU-G6KMAS", - "userref": 1734238287, - "pair": "GIGAUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.062836", - "starttimestamp": "2024-12-15T04:51:28.936Z", - "volume": 169.03640848034402, - "sellid": "OUKA2W-ETKXV-EKY5HN", - "sellprice": "0.063779", - "stopprice": 0.0534106, - "startselltimestamp": "2024-12-15T04:56:02.282Z", - "sellPrice": 0.063779, - "profit": 0.0737911537580091, - "timestamp": "2024-12-15T09:26:00.637Z" - }, - "O4UCCQ-UV4HO-KXKREL": { - "id": "O4UCCQ-UV4HO-KXKREL", - "userref": 1734238562, - "status": "open", - "pair": "GIGAUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.062836", - "starttimestamp": "2024-12-15T04:56:03.855Z", - "volume": 118.01720120251257, - "sellid": "OLGKKY-PFJDA-2X4FNJ", - "sellprice": "0.063779", - "stopprice": 0.0534106, - "startselltimestamp": "2024-12-15T04:59:48.985Z", - "sellPrice": 0.063779, - "profit": 0.0515192290129447, - "timestamp": "2024-12-15T09:26:00.640Z" - }, - "OBM2XS-YAWWP-GBSWFF": { - "id": "OBM2XS-YAWWP-GBSWFF", - "userref": 1734264908, - "pair": "GIGAUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.062380", - "starttimestamp": "2024-12-15T12:15:09.879Z", - "volume": 120.15476316112465, - "sellid": "OSBG32-F6PIZ-ANUTFT", - "sellprice": "0.063316", - "stopprice": 0.053022999999999994, - "startselltimestamp": "2024-12-15T12:16:08.511Z", - "sellPrice": 0.063316, - "profit": 0.05205296587760969, - "timestamp": "2024-12-15T12:48:09.755Z" - }, - "O72OWW-42HKN-CLSQX7": { - "id": "O72OWW-42HKN-CLSQX7", - "userref": 1734319900, - "status": "open", - "pair": "GIGAUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.068999", - "starttimestamp": "2024-12-16T03:31:41.481Z", - "volume": 158.37817747465007, - "sellid": "OWZNM2-OIBYK-PM6HKO", - "sellprice": "0.070034", - "stopprice": 0.058649150000000004, - "startselltimestamp": "2024-12-16T03:57:12.461Z", - "sellPrice": 0.070034, - "profit": 0.07584224109092846, - "timestamp": "2024-12-16T05:12:34.907Z" - }, - "OBTRWN-LQ6VP-AJIYVV": { - "id": "OBTRWN-LQ6VP-AJIYVV", - "userref": 1734319886, - "pair": "XDGUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.4074916", - "starttimestamp": "2024-12-16T03:31:27.655Z", - "volume": 26.81764333353071, - "sellid": "O7VX7Z-3HQHZ-KLL27P", - "status": "open", - "sellprice": "0.4136040", - "stopprice": 0.34636785999999997, - "startselltimestamp": "2024-12-16T03:57:06.841Z", - "sellPrice": 0.413604, - "profit": 0.07584076733774958, - "timestamp": "2024-12-16T17:17:41.972Z" - } -} \ No newline at end of file diff --git a/src/LocalStore/OpenTrades.json b/src/LocalStore/OpenTrades.json deleted file mode 100644 index f5bbc2f..0000000 --- a/src/LocalStore/OpenTrades.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "OUD5CV-CD7M5-PC42DT": { - "id": "OUD5CV-CD7M5-PC42DT", - "userref": 1746939220, - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "1.045188", - "starttimestamp": "2025-05-11T04:53:41.774Z", - "volume": 4.78382722, - "sellid": "OJFWEU-72CFF-5KPE4D", - "sellprice": "1.060866", - "stopprice": 0.8884098, - "startselltimestamp": "2025-05-11T14:13:52.788Z" - }, - "ORP4HY-R5NKT-2F66F5": { - "id": "ORP4HY-R5NKT-2F66F5", - "userref": 1746939223, - "pair": "GIGAUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.028026", - "starttimestamp": "2025-05-11T04:53:44.554Z", - "volume": 178.40895, - "sellid": "OFMP67-Z236I-DZOGIP", - "sellprice": "0.028446", - "stopprice": 0.0238221, - "startselltimestamp": "2025-05-11T05:24:25.528Z" - }, - "OUA6VO-RB6IM-QMMXMW": { - "id": "OUA6VO-RB6IM-QMMXMW", - "userref": 1746939226, - "status": "open", - "pair": "XDGUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.2401872", - "starttimestamp": "2025-05-11T04:53:47.473Z", - "volume": 20.81709816, - "sellid": "OVSIP6-4Z53V-RVMM6G", - "sellprice": "0.2437900", - "stopprice": 0.20415912, - "startselltimestamp": "2025-05-11T14:35:21.046Z" - }, - "ORXKJ7-CJEAR-RF7KF5": { - "id": "ORXKJ7-CJEAR-RF7KF5", - "userref": 1746939230, - "status": "open", - "pair": "ATOMUSD", - "type": "sell", - "ordertype": "limit", - "price": "5.2943", - "starttimestamp": "2025-05-11T04:53:51.632Z", - "volume": 0.94441749, - "sellid": "O24ZUM-MUVP6-BIYWNN", - "sellprice": "5.3737", - "stopprice": 4.5001549999999995, - "startselltimestamp": "2025-05-11T05:44:25.854Z" - }, - "OEJIUM-RU467-6QFNIV": { - "id": "OEJIUM-RU467-6QFNIV", - "userref": 1746939520, - "status": "open", - "pair": "ATOMUSD", - "type": "sell", - "ordertype": "limit", - "price": "5.2943", - "starttimestamp": "2025-05-11T04:58:42.133Z", - "volume": 0.76822504, - "sellid": "O3ZB54-272G7-J6EFN5", - "sellprice": "5.3737", - "stopprice": 4.5001549999999995, - "startselltimestamp": "2025-05-11T05:44:26.651Z" - }, - "O4KLLD-RSN7V-UYM763": { - "id": "O4KLLD-RSN7V-UYM763", - "userref": 1746939525, - "status": "open", - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "1.045188", - "starttimestamp": "2025-05-11T04:58:46.149Z", - "volume": 3.89134667, - "sellid": "OUYZEZ-VCY47-FAVQEM", - "sellprice": "1.060866", - "stopprice": 0.8884098, - "startselltimestamp": "2025-05-11T14:13:53.615Z" - }, - "OCBGVS-V4FWI-ZH7SP5": { - "id": "OCBGVS-V4FWI-ZH7SP5", - "userref": 1746939527, - "pair": "GIGAUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.028026", - "starttimestamp": "2025-05-11T04:58:48.858Z", - "volume": 145.12461, - "sellid": "O3GAWS-OITFS-PMSZZR", - "status": "open", - "sellprice": "0.028446", - "stopprice": 0.0238221, - "startselltimestamp": "2025-05-11T05:24:26.284Z" - } -} \ No newline at end of file diff --git a/src/LocalStore/Settings.json b/src/LocalStore/Settings.json deleted file mode 100644 index 98578f2..0000000 --- a/src/LocalStore/Settings.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "stopLossPercentage": 0.15, - "profitSavePercent": 0.075, - "maximumOrderSize": 0.75, - "tradingInterval": 5, - "tradingIntervalType": "minutes", - "maximumOrderValUSD": 5, - "priceRangeExclusion": 0.015, - "priceRangeExclusionMaxOpen": 3, - "profitTargetPercent": 0.015, - "profitAggUSD": 0.4985724690877609, - "totalProfit": 6.647632921170934, - "transactionFeePercent": 0.004, - "tradingCurrencies": [ - { - "tradingCurrency": "GIGA", - "allocation": 0.2 - }, - { - "tradingCurrency": "ATOM", - "allocation": 0.2 - }, - { - "tradingCurrency": "XXMRZ", - "allocation": 0.2, - "compPair": "XMRUSD" - }, - { - "tradingCurrency": "XDG", - "allocation": 0.2 - }, - { - "tradingCurrency": "NANO", - "allocation": 0.2 - } - ], - "profitWallet": "nano_1cjnndcda5w9c3sx6jo8kgdkn86i7dsi1nd3tr1x3scdmxutu8i7eodk5b83" -} \ No newline at end of file diff --git a/testdata.json b/testdata.json deleted file mode 100644 index 78f5729..0000000 --- a/testdata.json +++ /dev/null @@ -1,1452 +0,0 @@ -{ - "OR7BRF-3FCZX-IVIE45": { - "refid": null, - "userref": 1729400437, - "status": "canceled", - "opentm": 1729400439.0971694, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.854672", - "price2": "0", - "leverage": "none", - "order": "buy 5.10000000 NANOUSD @ limit 0.854672", - "close": "" - }, - "vol": "5.10000000", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "User requested", - "closetm": 1729400452.1897686 - }, - "OS4G2Z-2BFLL-NEB424": { - "refid": null, - "userref": 0, - "status": "canceled", - "opentm": 1729399517.097867, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.854672", - "price2": "0", - "leverage": "none", - "order": "buy 5.10000000 NANOUSD @ limit 0.854672", - "close": "" - }, - "vol": "5.10000000", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "User requested", - "closetm": 1729399532.2413132 - }, - "OBJ4IV-47FRP-6UW2CD": { - "refid": null, - "userref": 0, - "status": "canceled", - "opentm": 1729320690.933001, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.849749", - "price2": "0", - "leverage": "none", - "order": "buy 5.10000000 NANOUSD @ limit 0.849749", - "close": "" - }, - "vol": "5.10000000", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "User requested", - "closetm": 1729320989.5326679 - }, - "OCAOHF-2YUTU-EGMV6O": { - "refid": null, - "userref": 0, - "status": "canceled", - "opentm": 1729320522.3642707, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.849749", - "price2": "0", - "leverage": "none", - "order": "buy 5.10000000 NANOUSD @ limit 0.849749", - "close": "" - }, - "vol": "5.10000000", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "User requested", - "closetm": 1729320543.314352 - }, - "OSE5JN-PU7EN-MDPILW": { - "refid": null, - "userref": 0, - "status": "canceled", - "opentm": 1729320493.1821754, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.849749", - "price2": "0", - "leverage": "none", - "order": "buy 5.10000000 NANOUSD @ limit 0.849749", - "close": "" - }, - "vol": "5.10000000", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "User requested", - "closetm": 1729320540.3371964 - }, - "OXSPIA-NPGSP-C5O5F2": { - "refid": null, - "userref": 0, - "status": "canceled", - "opentm": 1729320328.73949, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.849749", - "price2": "0", - "leverage": "none", - "order": "buy 5.10000000 NANOUSD @ limit 0.849749", - "close": "" - }, - "vol": "5.10000000", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "User requested", - "closetm": 1729320340.1470675 - }, - "OVKKVW-2LEJ6-I73YIN": { - "refid": null, - "userref": 0, - "status": "canceled", - "opentm": 1729319298.0201352, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.849749", - "price2": "0", - "leverage": "none", - "order": "buy 5.10000000 NANOUSD @ limit 0.849749", - "close": "" - }, - "vol": "5.10000000", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "User requested", - "closetm": 1729319310.5846868 - }, - "OCPQUQ-XSEHF-KQURD2": { - "refid": null, - "userref": 0, - "status": "canceled", - "opentm": 1729319180.1031175, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.849749", - "price2": "0", - "leverage": "none", - "order": "buy 5.10000000 NANOUSD @ limit 0.849749", - "close": "" - }, - "vol": "5.10000000", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "User requested", - "closetm": 1729319188.8281982 - }, - "OSTB6N-6V4DZ-6W2ELH": { - "refid": null, - "userref": 0, - "status": "canceled", - "opentm": 1729319027.6212084, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.849749", - "price2": "0", - "leverage": "none", - "order": "buy 5.10000000 NANOUSD @ limit 0.849749", - "close": "" - }, - "vol": "5.10000000", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "User requested", - "closetm": 1729319037.9127803 - }, - "O4467W-RVQ7F-T5IDTX": { - "refid": null, - "userref": 0, - "status": "canceled", - "opentm": 1729317713.791928, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.849749", - "price2": "0", - "leverage": "none", - "order": "buy 5.10000000 NANOUSD @ limit 0.849749", - "close": "" - }, - "vol": "5.10000000", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "User requested", - "closetm": 1729317763.313629 - }, - "OECSDS-UIN5H-KG7T2H": { - "refid": null, - "userref": 0, - "status": "canceled", - "opentm": 1729317684.6154819, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.849749", - "price2": "0", - "leverage": "none", - "order": "buy 5.10000000 NANOUSD @ limit 0.849749", - "close": "" - }, - "vol": "5.10000000", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "User requested", - "closetm": 1729317760.1122706 - }, - "OGN3HN-NF73L-THYC3V": { - "refid": null, - "userref": 0, - "status": "closed", - "opentm": 1729316274.3457627, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "ETHUSD", - "type": "sell", - "ordertype": "limit", - "price": "2645.21", - "price2": "0", - "leverage": "none", - "order": "sell 0.00566110 ETHUSD @ limit 2645.21", - "close": "" - }, - "vol": "0.00566110", - "vol_exec": "0.00566110", - "cost": "14.97480", - "fee": "0.05990", - "price": "2645.21", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fcib", - "reason": null, - "closetm": 1729316274.3458579 - }, - "OVYHYE-XHPZC-7CKINL": { - "refid": null, - "userref": 0, - "status": "closed", - "opentm": 1729315207.9384017, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "NANOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.868626", - "price2": "0", - "leverage": "none", - "order": "sell 5.01800000 NANOUSD @ limit 0.868626", - "close": "" - }, - "vol": "5.01800000", - "vol_exec": "5.01800000", - "cost": "4.359518", - "fee": "0.017438", - "price": "0.868776", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fcib", - "reason": null, - "closetm": 1729315207.9384968 - }, - "OYRCIN-DUMMT-UJ37NK": { - "refid": null, - "userref": 0, - "status": "closed", - "opentm": 1699515482.0451553, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "XRPUSDT", - "type": "buy", - "ordertype": "limit", - "price": "0.69737", - "price2": "0", - "leverage": "none", - "order": "buy 109.55146527 XRPUSDT @ limit 0.69737", - "close": "" - }, - "vol": "109.55146527", - "vol_exec": "109.55146527", - "cost": "76.34860718", - "fee": "0.19850638", - "price": "0.69692", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1699515482.0452263 - }, - "OLI6QS-ZWOCS-IE3Q2E": { - "refid": null, - "userref": 0, - "status": "closed", - "opentm": 1699515448.8655567, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "XRPUSD", - "type": "buy", - "ordertype": "limit", - "price": "0.69817", - "price2": "0", - "leverage": "none", - "order": "buy 46.52133434 XRPUSD @ limit 0.69817", - "close": "" - }, - "vol": "46.52133434", - "vol_exec": "46.52133434", - "cost": "32.45933061", - "fee": "0.08439426", - "price": "0.69773", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1699515448.8656137 - }, - "OORT2H-Y55T3-UWJT7V": { - "refid": null, - "userref": 0, - "status": "closed", - "opentm": 1699059647.6661956, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "USDTUSD", - "type": "buy", - "ordertype": "limit", - "price": "1.00000", - "price2": "0", - "leverage": "none", - "order": "buy 76.39790534 USDTUSD @ limit 1.00000", - "close": "" - }, - "vol": "76.39790534", - "vol_exec": "76.39790534", - "cost": "76.39790534", - "fee": "0.15279581", - "price": "1.00000", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1699462346.0675352 - }, - "O6SK53-WCKD5-SLESRV": { - "refid": null, - "userref": 0, - "status": "closed", - "opentm": 1699062200.0594494, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "USDTUSD", - "type": "sell", - "ordertype": "limit", - "price": "1.00063", - "price2": "0", - "leverage": "none", - "order": "sell 32.62846807 USDTUSD @ limit 1.00063", - "close": "" - }, - "vol": "32.62846807", - "vol_exec": "32.62846807", - "cost": "32.64902400", - "fee": "0.06529805", - "price": "1.00062", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "fcib", - "reason": null, - "closetm": 1699062200.0596287 - }, - "ORRIC7-TE7VJ-6SOXPW": { - "refid": null, - "userref": 0, - "status": "closed", - "opentm": 1699059594.582378, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "ALGOUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.11083", - "price2": "0", - "leverage": "none", - "order": "sell 340.24200000 ALGOUSD @ limit 0.11083", - "close": "" - }, - "vol": "340.24200000", - "vol_exec": "340.24200000", - "cost": "37.709021", - "fee": "0.098043", - "price": "0.11083", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fcib", - "reason": null, - "closetm": 1699059594.5827034 - }, - "O72FJL-OEIOJ-CSZHDV": { - "refid": null, - "userref": 0, - "status": "closed", - "opentm": 1699059115.64603, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "ATOMUSD", - "type": "sell", - "ordertype": "limit", - "price": "7.7170", - "price2": "0", - "leverage": "none", - "order": "sell 1.00786725 ATOMUSD @ limit 7.7170", - "close": "" - }, - "vol": "1.00786725", - "vol_exec": "1.00786725", - "cost": "7.777712", - "fee": "0.012444", - "price": "7.7170", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fcib", - "reason": null, - "closetm": 1699059151.4841993 - }, - "O2XRLW-JFEQN-ERFRMY": { - "refid": null, - "userref": 0, - "status": "closed", - "opentm": 1689268249.277277, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "XRPUSDT", - "type": "buy", - "ordertype": "limit", - "price": "0.63115", - "price2": "0", - "leverage": "none", - "order": "buy 51.77969939 XRPUSDT @ limit 0.63115", - "close": "" - }, - "vol": "51.77969939", - "vol_exec": "51.77969939", - "cost": "32.68075727", - "fee": "0.05228921", - "price": "0.63115", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1689268254.3415196 - }, - "O53I2S-KWZGL-EVGROY": { - "refid": null, - "userref": 0, - "status": "closed", - "opentm": 1688362184.7365737, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "XMRUSDT", - "type": "buy", - "ordertype": "limit", - "price": "168.59", - "price2": "0", - "leverage": "none", - "order": "buy 0.38991148 XMRUSDT @ limit 168.59", - "close": "" - }, - "vol": "0.38991148", - "vol_exec": "0.38991148", - "cost": "65.735176", - "fee": "0.170911", - "price": "168.58", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1688362184.7366211 - }, - "OTGBNP-3E7MX-N6HIGM": { - "refid": null, - "userref": 0, - "status": "canceled", - "opentm": 1688362075.3697999, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "XMRUSDT", - "type": "buy", - "ordertype": "limit", - "price": "168.33", - "price2": "0", - "leverage": "none", - "order": "buy 0.38991148 XMRUSDT @ limit 168.33", - "close": "" - }, - "vol": "0.38991148", - "vol_exec": "0.00000000", - "cost": "0.000000", - "fee": "0.000000", - "price": "0.000000", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": "Order replaced", - "closetm": 1688362184.7365618 - }, - "OAQ3AY-DDFCA-KO4IMG": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685500642.0808737, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "USDTUSD", - "type": "buy", - "ordertype": "limit", - "price": "1.00002", - "price2": "0", - "leverage": "none", - "order": "buy 124.27762161 USDTUSD @ limit 1.00002", - "close": "" - }, - "vol": "124.27762161", - "vol_exec": "124.27762161", - "cost": "124.28010716", - "fee": "0.24856021", - "price": "1.00001", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "post,fcib", - "reason": null, - "closetm": 1685502174.9230762 - }, - "ODMBEW-KJ4TV-3XLQIU": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685500638.8321748, - "starttm": 0, - "expiretm": 1685500663, - "descr": { - "pair": "ETHUSD", - "type": "sell", - "ordertype": "limit", - "price": "1894.58", - "price2": "0", - "leverage": "none", - "order": "sell 0.01258985 ETHUSD @ limit 1894.58", - "close": "" - }, - "vol": "0.01258985", - "vol_exec": "0.01258985", - "cost": "23.85248", - "fee": "0.06202", - "price": "1894.58", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685500638.8322601 - }, - "O5UZ67-YBGRF-M4MFFS": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685500638.1949883, - "starttm": 0, - "expiretm": 1685500643, - "descr": { - "pair": "ETHUSDT", - "type": "buy", - "ordertype": "limit", - "price": "1893.37", - "price2": "0", - "leverage": "none", - "order": "buy 0.01258985 ETHUSDT @ limit 1893.37", - "close": "" - }, - "vol": "0.01258985", - "vol_exec": "0.01258985", - "cost": "23.83536", - "fee": "0.06197", - "price": "1893.22", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685500638.1951056 - }, - "OW3KJA-THOLW-B2ESII": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685500603.306574, - "starttm": 0, - "expiretm": 1685500628, - "descr": { - "pair": "ETHUSD", - "type": "sell", - "ordertype": "limit", - "price": "1894.58", - "price2": "0", - "leverage": "none", - "order": "sell 0.01765212 ETHUSD @ limit 1894.58", - "close": "" - }, - "vol": "0.01765212", - "vol_exec": "0.01765212", - "cost": "33.44335", - "fee": "0.08695", - "price": "1894.57", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685500603.3067317 - }, - "ODBZFV-3LQSE-LDURVX": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685500602.595861, - "starttm": 0, - "expiretm": 1685500607, - "descr": { - "pair": "ETHUSDT", - "type": "buy", - "ordertype": "limit", - "price": "1893.69", - "price2": "0", - "leverage": "none", - "order": "buy 0.01765212 ETHUSDT @ limit 1893.69", - "close": "" - }, - "vol": "0.01765212", - "vol_exec": "0.01765212", - "cost": "33.42309", - "fee": "0.08690", - "price": "1893.43", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685500602.5960011 - }, - "OYUNZ4-67IJX-543DDK": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685500594.7428932, - "starttm": 0, - "expiretm": 1685500619, - "descr": { - "pair": "ETHUSD", - "type": "sell", - "ordertype": "limit", - "price": "1894.58", - "price2": "0", - "leverage": "none", - "order": "sell 0.01758298 ETHUSD @ limit 1894.58", - "close": "" - }, - "vol": "0.01758298", - "vol_exec": "0.01758298", - "cost": "33.31236", - "fee": "0.08661", - "price": "1894.57", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685500594.743021 - }, - "O233T2-OWKPK-HHXYI6": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685500594.0841043, - "starttm": 0, - "expiretm": 1685500599, - "descr": { - "pair": "ETHUSDT", - "type": "buy", - "ordertype": "limit", - "price": "1893.69", - "price2": "0", - "leverage": "none", - "order": "buy 0.01758298 ETHUSDT @ limit 1893.69", - "close": "" - }, - "vol": "0.01758298", - "vol_exec": "0.01758298", - "cost": "33.29214", - "fee": "0.08656", - "price": "1893.42", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685500594.0841892 - }, - "OG6CB4-CSHYJ-IYAXQS": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685500590.5650015, - "starttm": 0, - "expiretm": 1685500615, - "descr": { - "pair": "ETHUSD", - "type": "sell", - "ordertype": "limit", - "price": "1894.58", - "price2": "0", - "leverage": "none", - "order": "sell 0.01758298 ETHUSD @ limit 1894.58", - "close": "" - }, - "vol": "0.01758298", - "vol_exec": "0.01758298", - "cost": "33.31236", - "fee": "0.08661", - "price": "1894.57", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685500590.5652359 - }, - "O7TACK-62HQ3-2NSCX5": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685500589.840279, - "starttm": 0, - "expiretm": 1685500594, - "descr": { - "pair": "ETHUSDT", - "type": "buy", - "ordertype": "limit", - "price": "1893.69", - "price2": "0", - "leverage": "none", - "order": "buy 0.01758298 ETHUSDT @ limit 1893.69", - "close": "" - }, - "vol": "0.01758298", - "vol_exec": "0.01758298", - "cost": "33.29214", - "fee": "0.08656", - "price": "1893.42", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685500589.8407133 - }, - "O5EDET-3ZPBQ-CCHBGJ": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685498024.8747485, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "USDTUSD", - "type": "buy", - "ordertype": "limit", - "price": "1.00008", - "price2": "0", - "leverage": "none", - "order": "buy 127.03459820 USDTUSD @ limit 1.00008", - "close": "" - }, - "vol": "127.03459820", - "vol_exec": "127.03459820", - "cost": "127.04476097", - "fee": "0.25408952", - "price": "1.00008", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "post,fcib", - "reason": null, - "closetm": 1685498317.151053 - }, - "O4VP4X-4O2QP-IAA43V": { - "refid": null, - "userref": null, - "status": "canceled", - "opentm": 1685493996.1865976, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "USDTUSD", - "type": "buy", - "ordertype": "limit", - "price": "1.00005", - "price2": "0", - "leverage": "none", - "order": "buy 127.03459820 USDTUSD @ limit 1.00005", - "close": "" - }, - "vol": "127.03459820", - "vol_exec": "0.00000000", - "cost": "0.00000000", - "fee": "0.00000000", - "price": "0.00000000", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "post,fcib", - "reason": "Order replaced", - "closetm": 1685498024.8747423 - }, - "O3SSP3-NJXUX-BDRP6M": { - "refid": null, - "userref": null, - "status": "canceled", - "opentm": 1685484013.7145188, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "USDTUSD", - "type": "buy", - "ordertype": "limit", - "price": "1.00002", - "price2": "0", - "leverage": "none", - "order": "buy 127.03459820 USDTUSD @ limit 1.00002", - "close": "" - }, - "vol": "127.03459820", - "vol_exec": "0.00000000", - "cost": "0.00000000", - "fee": "0.00000000", - "price": "0.00000000", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "post,fcib", - "reason": "Order replaced", - "closetm": 1685493996.1865883 - }, - "OVCZ5J-S7VKC-OBRFF7": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685484010.2921183, - "starttm": 0, - "expiretm": 1685484035, - "descr": { - "pair": "XBTUSD", - "type": "sell", - "ordertype": "limit", - "price": "27730.0", - "price2": "0", - "leverage": "none", - "order": "sell 0.00178132 XBTUSD @ limit 27730.0", - "close": "" - }, - "vol": "0.00178132", - "vol_exec": "0.00178132", - "cost": "49.39600", - "fee": "0.12843", - "price": "27729.9", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685484010.292241 - }, - "OXVV7I-2GP5D-IV5P3U": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685484009.4330215, - "starttm": 0, - "expiretm": 1685484014, - "descr": { - "pair": "XBTUSDT", - "type": "buy", - "ordertype": "limit", - "price": "27717.3", - "price2": "0", - "leverage": "none", - "order": "buy 0.00178132 XBTUSDT @ limit 27717.3", - "close": "" - }, - "vol": "0.00178132", - "vol_exec": "0.00178132", - "cost": "49.37071", - "fee": "0.12836", - "price": "27715.8", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685484009.4331074 - }, - "OBCUGV-DCGML-QBARAR": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685483787.9021497, - "starttm": 0, - "expiretm": 1685483812, - "descr": { - "pair": "XDGUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.0724621", - "price2": "0", - "leverage": "none", - "order": "sell 1103.18999930 XDGUSD @ limit 0.0724621", - "close": "" - }, - "vol": "1103.18999930", - "vol_exec": "1103.18999930", - "cost": "79.939464048", - "fee": "0.207842607", - "price": "0.0724620", - "stopprice": "0.000000000", - "limitprice": "0.000000000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685483787.9022496 - }, - "OUY7S4-X5LRZ-JXKFHT": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685483787.2412686, - "starttm": 0, - "expiretm": 1685483792, - "descr": { - "pair": "XDGUSDT", - "type": "buy", - "ordertype": "limit", - "price": "0.07244", - "price2": "0", - "leverage": "none", - "order": "buy 1103.18999930 XDGUSDT @ limit 0.07244", - "close": "" - }, - "vol": "1103.18999930", - "vol_exec": "1103.18999930", - "cost": "79.915083549", - "fee": "0.207779217", - "price": "0.07243", - "stopprice": "0.000000000", - "limitprice": "0.000000000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685483787.241351 - }, - "OZKBHJ-YLCFQ-EFAKSX": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685483048.9949782, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "USDTUSD", - "type": "buy", - "ordertype": "limit", - "price": "1.00002", - "price2": "0", - "leverage": "none", - "order": "buy 119.18637871 USDTUSD @ limit 1.00002", - "close": "" - }, - "vol": "119.18637871", - "vol_exec": "119.18637871", - "cost": "119.18876244", - "fee": "0.23837752", - "price": "1.00002", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "post,fcib", - "reason": null, - "closetm": 1685483771.3643172 - }, - "OMAEYR-LL4XP-TG53RA": { - "refid": null, - "userref": null, - "status": "canceled", - "opentm": 1685478724.7345088, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "USDTUSD", - "type": "buy", - "ordertype": "limit", - "price": "1.00000", - "price2": "0", - "leverage": "none", - "order": "buy 119.18912000 USDTUSD @ limit 1.00000", - "close": "" - }, - "vol": "119.18912000", - "vol_exec": "0.00000000", - "cost": "0.00000000", - "fee": "0.00000000", - "price": "0.00000000", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "post,fcib", - "reason": "User requested", - "closetm": 1685483032.1581073 - }, - "OUVEXH-N4ILZ-IE36DS": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685478717.075193, - "starttm": 0, - "expiretm": 1685478742, - "descr": { - "pair": "SOLUSD", - "type": "sell", - "ordertype": "limit", - "price": "21.27", - "price2": "0", - "leverage": "none", - "order": "sell 2.25524919 SOLUSD @ limit 21.27", - "close": "" - }, - "vol": "2.25524919", - "vol_exec": "2.25524919", - "cost": "47.96915", - "fee": "0.12472", - "price": "21.26", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685478717.075344 - }, - "OG2TMU-CDSXD-STUPU4": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685478716.393713, - "starttm": 0, - "expiretm": 1685478721, - "descr": { - "pair": "SOLUSDT", - "type": "buy", - "ordertype": "limit", - "price": "21.26", - "price2": "0", - "leverage": "none", - "order": "buy 0.84335366 SOLUSDT @ limit 21.26", - "close": "" - }, - "vol": "0.84335366", - "vol_exec": "0.84335366", - "cost": "17.929699", - "fee": "0.046617", - "price": "21.26", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685478716.3941534 - }, - "OCXIZL-7L4HO-WBYZAQ": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685478018.1441655, - "starttm": 0, - "expiretm": 1685478043, - "descr": { - "pair": "ETHUSD", - "type": "sell", - "ordertype": "limit", - "price": "1903.65", - "price2": "0", - "leverage": "none", - "order": "sell 0.04090391 ETHUSD @ limit 1903.65", - "close": "" - }, - "vol": "0.04090391", - "vol_exec": "0.04090391", - "cost": "77.86673", - "fee": "0.20245", - "price": "1903.65", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685478018.1444123 - }, - "OOLJSG-KJZIS-ZRORGP": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685478017.1354156, - "starttm": 0, - "expiretm": 1685478022, - "descr": { - "pair": "ETHUSDT", - "type": "buy", - "ordertype": "limit", - "price": "1903.06", - "price2": "0", - "leverage": "none", - "order": "buy 0.04090391 ETHUSDT @ limit 1903.06", - "close": "" - }, - "vol": "0.04090391", - "vol_exec": "0.04090391", - "cost": "77.84259", - "fee": "0.20239", - "price": "1903.05", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685478017.1356235 - }, - "ONXW6D-5FSDE-U3LLD5": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685477778.4074392, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "USDTUSD", - "type": "buy", - "ordertype": "limit", - "price": "1.00000", - "price2": "0", - "leverage": "none", - "order": "buy 93.91080000 USDTUSD @ limit 1.00000", - "close": "" - }, - "vol": "93.91080000", - "vol_exec": "93.91080000", - "cost": "93.91080000", - "fee": "0.18782160", - "price": "1.00000", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "post,fcib", - "reason": null, - "closetm": 1685477890.720806 - }, - "OGASCZ-4SDJV-W2H4U5": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685477770.846214, - "starttm": 0, - "expiretm": 1685477795, - "descr": { - "pair": "ADAUSD", - "type": "sell", - "ordertype": "limit", - "price": "0.378243", - "price2": "0", - "leverage": "none", - "order": "sell 246.26837437 ADAUSD @ limit 0.378243", - "close": "" - }, - "vol": "246.26837437", - "vol_exec": "246.26837437", - "cost": "93.149289", - "fee": "0.242188", - "price": "0.378243", - "stopprice": "0.000000", - "limitprice": "0.000000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685477770.8463166 - }, - "O7FU2Y-6U4EM-ZVMBUF": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685477770.116657, - "starttm": 0, - "expiretm": 1685477775, - "descr": { - "pair": "ADAUSDT", - "type": "buy", - "ordertype": "limit", - "price": "0.378142", - "price2": "0", - "leverage": "none", - "order": "buy 246.26190127 ADAUSDT @ limit 0.378142", - "close": "" - }, - "vol": "246.26190127", - "vol_exec": "246.26190127", - "cost": "93.12098282", - "fee": "0.24211456", - "price": "0.378137", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685477770.1167376 - }, - "OXZAMJ-J3FLY-HZ22RJ": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685471401.9812553, - "starttm": 0, - "expiretm": 0, - "descr": { - "pair": "USDTUSD", - "type": "buy", - "ordertype": "limit", - "price": "1.00000", - "price2": "0", - "leverage": "none", - "order": "buy 97.92544000 USDTUSD @ limit 1.00000", - "close": "" - }, - "vol": "97.92544000", - "vol_exec": "97.92544000", - "cost": "97.92544000", - "fee": "0.19585088", - "price": "1.00000", - "stopprice": "0.00000000", - "limitprice": "0.00000000", - "misc": "", - "oflags": "post,fcib", - "reason": null, - "closetm": 1685477760.886782 - }, - "O3ESGH-HNFG4-APRWZG": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685471377.2360668, - "starttm": 0, - "expiretm": 1685471402, - "descr": { - "pair": "XBTUSD", - "type": "sell", - "ordertype": "limit", - "price": "27707.0", - "price2": "0", - "leverage": "none", - "order": "sell 0.00363583 XBTUSD @ limit 27707.0", - "close": "" - }, - "vol": "0.00363583", - "vol_exec": "0.00363583", - "cost": "100.73794", - "fee": "0.26192", - "price": "27706.9", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685471377.2361596 - }, - "OZWYPZ-H2MR5-Q7LK7Y": { - "refid": null, - "userref": null, - "status": "closed", - "opentm": 1685471376.547824, - "starttm": 0, - "expiretm": 1685471381, - "descr": { - "pair": "XBTUSDT", - "type": "buy", - "ordertype": "limit", - "price": "27702.1", - "price2": "0", - "leverage": "none", - "order": "buy 0.00166351 XBTUSDT @ limit 27702.1", - "close": "" - }, - "vol": "0.00166351", - "vol_exec": "0.00166351", - "cost": "46.08272", - "fee": "0.11982", - "price": "27702.0", - "stopprice": "0.00000", - "limitprice": "0.00000", - "misc": "", - "oflags": "fciq", - "reason": null, - "closetm": 1685471376.5479343 - } -} \ No newline at end of file diff --git a/utils.js b/utils.js deleted file mode 100644 index 173ff7d..0000000 --- a/utils.js +++ /dev/null @@ -1,530 +0,0 @@ -const fs = require('fs'); -const { Kraken } = require('node-kraken-api'); -const dotenv = require('dotenv'); -dotenv.config(); -const settingsFile = './src/LocalStore/Settings.json'; - -let settings = readJsonFile(settingsFile); -const API_KEY = process.env.KRAKEN_API_KEY; -const API_SECRET = process.env.KRAKEN_API_SECRET; -const kraken = new Kraken({ key: API_KEY, secret: API_SECRET }); -let CURRENCY_INFO = null; -let tradingCurrency = null; -//XXMRZUSD - - - -const openTradesFile = './src/LocalStore/OpenTrades.json'; -const closedTradesFile = './src/LocalStore/ClosedTrades.json'; -function readJsonFile(filePath) { - try { - const data = fs.readFileSync(filePath); - return JSON.parse(data); - } catch (error) { - console.error(`Error reading file ${filePath}:`, error); - return null; - } -} - - -function writeJsonFile(filePath, data) { - try { - fs.writeFileSync(filePath, JSON.stringify(data, null, 2)); - } catch (error) { - console.error(`Error writing file ${filePath}:`, error); - } -} - -async function getHistoricalData(pair, interval = 15) { - try { - const response = await kraken.ohlc( { pair: pair, interval: interval }); - // console.log(response[pair]) - return response[pair]; - } catch (error) { - console.error('Error fetching historical data:', error); - return null; - } -} - -async function getAvailableUSDBalance(allocation) { - try { - const settings = readJsonFile(settingsFile); - const response = await kraken.balance( ); - let openTrades = await getAllOpenOrders(false); - let floatingTrades = 0; - let tradeIds = Object.keys(openTrades); - for(let x = 0; x < tradeIds.length; x++){ - let key = tradeIds[x]; - let trade = openTrades[key]; - if(trade.descr.type !== 'buy') - continue - let total = parseFloat(trade.vol) * parseFloat(trade.descr.price) - floatingTrades += total; - } - console.log(`USD BALANCE: ${parseFloat(response.ZUSD)}`) - console.log(`USD FLOATING: ${floatingTrades}`) - console.log(`USD BALANCE AFTER TRADES: ${parseFloat(response.ZUSD) - floatingTrades}`) - - return Math.max(parseFloat(response.ZUSD) - floatingTrades - settings.profitAggUSD, 0) * allocation; - } catch (error) { - console.error('Error fetching available USD balance:', error); - return 0; - } -} - -async function evaluateMarketConditions(pair) { - console.log("evaluateMarketConditions") - return true - const data = await getHistoricalData(pair); - if (!data) return false; - - - const lastTwoDays = data.slice(-2); - // console.log(lastTwoDays) - const priceChange = (lastTwoDays[1][4] - lastTwoDays[0][1]) / lastTwoDays[0][1] * 100; - console.log((lastTwoDays[1][4] - lastTwoDays[0][4]), lastTwoDays[0][4], priceChange) - - if (Math.abs(priceChange) >= 3.5) { - console.log('Volatility detected. Trading halted.'); - return false; - } - - return true; -} -function syncSettings(){ - settings = readJsonFile(settingsFile); - return settings; -} - -async function getCurrencyInfo(cur){ - settings = readJsonFile(settingsFile); - console.log("Setting Currency", cur) - tradingCurrency = cur; - const pairData = await kraken.assetPairs( { - assets: tradingCurrency + "USD", - }); - // console.log("pairData", pairData[tradingCurrency + "USD"]); - CURRENCY_INFO = pairData[tradingCurrency + "USD"]; - CURRENCY_INFO.costmin = parseFloat(CURRENCY_INFO.costmin); - CURRENCY_INFO.ordermin = parseFloat( CURRENCY_INFO.ordermin); - - return CURRENCY_INFO; -} - -async function placeBuyOrder(pair, v, p) { - let volume = v; - let price = p; - if(volume * price >= settings.maximumOrderValUSD){ - volume = settings.maximumOrderValUSD / price; - } - try { - let userref = Math.floor(Date.now() / 1000); - // console.log("CURRENCY_INFO", CURRENCY_INFO); - if(!CURRENCY_INFO){ - const pairData = await kraken.assetPairs( { - assets: tradingCurrency + "USD", - }); - // console.log("pairData", pairData[tradingCurrency + "USD"]); - CURRENCY_INFO = pairData[tradingCurrency + "USD"]; - CURRENCY_INFO.costmin = parseFloat(CURRENCY_INFO.costmin); - CURRENCY_INFO.ordermin = parseFloat( CURRENCY_INFO.ordermin); - } - if(CURRENCY_INFO.ordermin * 1.02 > volume){ - console.log("OrderPlacement is below minimum Volume required ", `${CURRENCY_INFO.ordermin * 1.02} > ${volume}`) - return null; - } - let usdBalance = await getAvailableUSDBalance(); - console.log("CURRENCY_INFO", CURRENCY_INFO, ) - console.log("usdBalance", usdBalance, ) - console.log({ - pair: pair, - type: 'buy', - ordertype: 'limit', - price: price.toFixed(CURRENCY_INFO.pair_decimals), - volume: CURRENCY_INFO.ordermin > volume ? CURRENCY_INFO.ordermin * 1.02 : volume, - userref: userref, - }) - const response = await kraken.addOrder( { - pair: pair, - type: 'buy', - ordertype: 'limit', - price: price.toFixed(CURRENCY_INFO.pair_decimals), - volume: CURRENCY_INFO.ordermin > volume ? CURRENCY_INFO.ordermin * 1.02 : volume, - userref: userref, - }); - let order = await getOpenOrder(response.txid[0]) - console.log("placeBuyOrder", JSON.stringify(response, null ,4)); - return { - id: response.txid[0], - userref: userref, - status: order.status, - pair: pair, - type: 'buy', - ordertype: 'limit', - price: price.toFixed(CURRENCY_INFO.pair_decimals), - starttimestamp: new Date().toISOString(), - volume: CURRENCY_INFO.ordermin > volume ? CURRENCY_INFO.ordermin * 1.02 : volume, - }; - } catch (error) { - console.error('Error placing buy order:', error); - return null; - } -} - -function convertAssetKeys(tradingSymbol){ - const assetMap = { - 'XXMRZ': 'XXMR', - 'XXMR': 'XXMRZ', - 'XDG': 'XXDG', - 'XXDG': 'XDG', - }; - - return assetMap[tradingSymbol] || tradingSymbol; -} - - -async function placeSellOrder(pair, volume, price, stopLoss, userRef, id, buyOrder) { - try { - if(!CURRENCY_INFO){ - const pairData = await kraken.assetPairs({ - assets: tradingCurrency + "USD", - }); - CURRENCY_INFO = pairData[tradingCurrency + "USD"]; - CURRENCY_INFO.costmin = parseFloat(CURRENCY_INFO.costmin); - CURRENCY_INFO.ordermin = parseFloat(CURRENCY_INFO.ordermin); - } - - // Get the actual available balance - const balanceResponse = await kraken.balance(); - // const assetKey = tradingCurrency === 'XXMRZ' ? 'XXMR' : tradingCurrency; - const assetKey = convertAssetKeys(tradingCurrency); - const availableBalance = parseFloat(balanceResponse[assetKey] || 0); - // if(availableBalance < 1.0){ - // console.log(JSON.stringify(balanceResponse, null, 4)) - // console.log(assetKey, balanceResponse[assetKey]) - // console.log(tradingCurrency) - // } - // Use the smaller of requested volume or available balance - // console.log("Sell Volume picker", volume, availableBalance) - const adjustedVolume = Math.min(volume, availableBalance); - - // Round to appropriate decimal places based on lot_decimals - const roundedVolume = parseFloat(adjustedVolume.toFixed(CURRENCY_INFO.lot_decimals)); - - if(CURRENCY_INFO.ordermin * 1.02 > roundedVolume){ - console.log("SellOrderPlacement is below minimum Volume required ", `${CURRENCY_INFO.ordermin * 1.02} > ${roundedVolume}`) - return null; - } - // console.log(`Available balance: ${availableBalance} ${tradingCurrency}`); - // console.log(`Adjusted volume: ${roundedVolume} ${tradingCurrency}`); - - const response = await kraken.addOrder({ - pair: pair, - type: 'sell', - ordertype: 'limit', - price: price.toFixed(CURRENCY_INFO.pair_decimals), - volume: roundedVolume, - userref: userRef, - }); - - let order = await getOpenOrder(response.txid[0]) - console.log("placeSellOrder", response); - return { - ...buyOrder, - id: id, - sellid: response.txid[0], - status: order.status, - pair: pair, - type: 'sell', - ordertype: 'limit', - sellprice: price.toFixed(CURRENCY_INFO.pair_decimals), - volume: roundedVolume, - userref: userRef, - stopprice: stopLoss, - startselltimestamp: new Date().toISOString(), - }; - } catch (error) { - console.error('Error placing sell order:', error); - return null; - } -} - - -// need to randomize order of executed currencies to avoid all balances -// shifting to first currency in list over time as sells occur -// the resulting income is added to the general pool to be split across all currencies -// randomizing order should mean all currencies should keep their relative allocation -// regardless of profitability of that trading currency -function shuffle(array) { - let currentIndex = array.length; - - while (currentIndex != 0) { - let randomIndex = Math.floor(Math.random() * currentIndex); - currentIndex--; - [array[currentIndex], array[randomIndex]] = [ - array[randomIndex], array[currentIndex]]; - } -} - - -function sleep(ms) { - console.log("Waiting " + ms) - return new Promise(resolve => setTimeout(resolve, ms)); -} -async function monitorOrderComplete(id) { - try { - - let response = await kraken.openOrders( ); - console.log("monitorOrderComplete", JSON.stringify(response, null, 4)) - while(response.open.hasOwnProperty(id)){ - await sleep(60000); - response = await kraken.openOrders( ); - } - return true; - } catch (error) { - console.error('Error monitoring order:', id, error); - return false; - } -} -async function getOpenOrder(id) { - try { - - let response = await kraken.openOrders( ); - // console.log("getAllOrders", JSON.stringify(response, null, 4)) - return response?.open[id] || {}; - } catch (error) { - console.error('Error getOpenOrder order:', id, error); - return {}; - } -} -async function getAllOpenOrders(log = false) { - try { - - let response = await kraken.openOrders( ); - if(log) - console.log("getAllOrders", JSON.stringify(response, null, 4)) - return response?.open || {}; - } catch (error) { - console.error('Error getAllOpenOrders order:', error); - return {}; - } -} -async function getAllClosedOrders() { - try { - - let response = await kraken.closedOrders( ); - // console.log("getAllClosedOrders", JSON.stringify(response, null, 4)) - return response?.closed || {}; - } catch (error) { - console.error('Error getAllClosedOrders order:', error); - return {}; - } -} - - -async function saveProfit(profitSaveAmount, tradeProfit) { - // not actually transferring to a different wallet just keeping track of profit which will be removed from usd balance so its not used for orders effectivly saving it - try { - const settings = readJsonFile(settingsFile); - let reduction = settings.profitAggUSD + profitSaveAmount; - settings.profitAggUSD = reduction; - settings.totalProfit = settings.totalProfit + tradeProfit; - writeJsonFile(settingsFile, settings) - console.log(`Saved ${profitSaveAmount} USD to profit Segment, current Total Profit: ${reduction}`); - return reduction; - } catch (error) { - console.error('Error transferring profit:', error); - } -} - - -async function transferProfit(profitAmount) { - try { - if(tradingCurrency !== "NANO"){ - return false; - } - const settings = readJsonFile(settingsFile); - let reduction = settings.profitAggUSD - profitAmount; - if(reduction < 0) - reduction = 0; - settings.profitAggUSD = reduction; - const response = await kraken.withdraw({ - asset: 'USD', - key: settings.profitWallet, - amount: profitAmount, - }); - console.log(`Transferred: ${profitAmount} USD to profit wallet: ${settings.profitWallet}, current local Profit Save: ${settings.profitAggUSD}`); - return response; - } catch (error) { - console.error('Error transferring profit:', error); - } -} - - -async function calculateAdaptiveTargets(pair, baseTarget = 0.015, baseStopLoss = 0.15, riskRewardRatio = 10) { - try { - // Get recent price data (1-hour candles for the past 24 hours) - const recentCandles = await getHistoricalData(pair, 60); - if (!recentCandles || recentCandles.length < 24) { - console.log(`Insufficient historical data for ${pair}, using base values`); - return { profitTarget: baseTarget, stopLoss: baseStopLoss }; - } - - const last24Hours = recentCandles.slice(-24); - - // volatility using ATR method - let atr = 0; - for (let i = 1; i < last24Hours.length; i++) { - const high = parseFloat(last24Hours[i][2]); - const low = parseFloat(last24Hours[i][3]); - const prevClose = parseFloat(last24Hours[i-1][4]); - - const tr = Math.max( - high - low, - Math.abs(high - prevClose), - Math.abs(low - prevClose) - ); - - atr += tr; - } - atr /= (last24Hours.length - 1); - - // market direction (positive or negative) - const priceStart = parseFloat(last24Hours[0][1]); // Open of first candle - const priceEnd = parseFloat(last24Hours[last24Hours.length - 1][4]); // Close of last candle - const priceChange = (priceEnd - priceStart) / priceStart; - const isUptrend = priceChange >= 0; - - // Get current price - const currentPrice = priceEnd; - const volatilityPercent = atr / currentPrice; - - // Calculate baseline volatility - const baselineVolatility = 0.02; // 2% as baseline - const volatilityFactor = volatilityPercent / baselineVolatility; - - // Asymmetric adjustments based on market direction - let profitTargetAdjustment, stopLossAdjustment; - - if (isUptrend) { - // Make sure high volatility increases profit target - profitTargetAdjustment = Math.min(2.0, 0.8 + (volatilityFactor * 0.4)); - // Keep stop loss tighter in uptrend - stopLossAdjustment = Math.min(1.2, Math.max(0.7, volatilityFactor * 0.6)); - - console.log(`Uptrend detected (${(priceChange * 100).toFixed(2)}%), expanding profit target`); - } else { - // REDUCE profit target in downtrend, regardless of volatility - profitTargetAdjustment = Math.min(0.9, Math.max(0.5, 1.0 - (volatilityFactor * 0.2))); - // Wider stop loss in downtrend to avoid whipsaws - stopLossAdjustment = Math.min(1.5, Math.max(1.0, volatilityFactor * 0.8)); - - console.log(`Downtrend detected (${(priceChange * 100).toFixed(2)}%), reducing profit target`); - } - const adjustedTarget = baseTarget * profitTargetAdjustment; - const adjustedStopLoss = baseStopLoss * stopLossAdjustment; - - const recentCandles4h = last24Hours.slice(-4); - const recent4hChange = (parseFloat(recentCandles4h[recentCandles4h.length-1][4]) - - parseFloat(recentCandles4h[0][1])) / parseFloat(recentCandles4h[0][1]); - - // Further adjust based on recent momentum - let finalProfitTarget = adjustedTarget; - let finalStopLoss = adjustedStopLoss; - - if (recent4hChange > 0.01) { // Strong recent upward momentum (>1%) - finalProfitTarget *= 1.1; // Increase profit target by 10% - console.log(`Strong recent upward momentum (${(recent4hChange * 100).toFixed(2)}%), further increasing profit target`); - } else if (recent4hChange < -0.01) { // Strong recent downward momentum (>1%) - finalStopLoss *= 0.9; // Tighten stop loss by 10% - console.log(`Strong recent downward momentum (${(recent4hChange * 100).toFixed(2)}%), tightening stop loss`); - } - - // Calculate actual risk/reward ratio - const riskRewardRatio = finalProfitTarget / finalStopLoss; - - console.log(` - Adaptive Analysis for ${pair}: - - Overall Direction: ${isUptrend ? 'Uptrend' : 'Downtrend'} (${(priceChange * 100).toFixed(2)}%) - - Recent 4h Momentum: ${(recent4hChange * 100).toFixed(2)}% - - Volatility: ${(volatilityPercent * 100).toFixed(2)}% - - Volatility Factor: ${volatilityFactor.toFixed(2)} - - Profit Target: ${(finalProfitTarget * 100).toFixed(2)}% (from base ${(baseTarget * 100).toFixed(2)}%) - - Stop Loss: ${(finalStopLoss * 100).toFixed(2)}% (from base ${(baseStopLoss * 100).toFixed(2)}%) - - Risk/Reward Ratio: ${riskRewardRatio.toFixed(2)} - `); - - return { - profitTarget: finalProfitTarget, - stopLoss: finalStopLoss, - volatility: volatilityPercent, - direction: isUptrend ? 'up' : 'down', - riskRewardRatio: riskRewardRatio, - recentMomentum: recent4hChange - }; - } catch (error) { - console.error(`Error calculating adaptive targets for ${pair}:`, error); - // Fall back to base values if there's an error - return { profitTarget: baseTarget, stopLoss: baseStopLoss }; - } -} - - - -async function manageStaleOrders() { - const openTrades = readJsonFile(openTradesFile); - const currentTime = new Date().getTime(); - const maxOrderAge = 12 * 60 * 60 * 1000; // 12 hours in milliseconds - - for (const [id, trade] of Object.entries(openTrades)) { - if (trade.type === 'buy' && new Date(trade.starttimestamp).getTime() + maxOrderAge < currentTime) { - // Cancel stale buy orders - try { - await kraken.cancelOrder({ txid: id }); - delete openTrades[id]; - console.log(`Canceled stale buy order: ${id}`); - } catch (error) { - console.error(`Failed to cancel order ${id}:`, error); - } - } - } - - writeJsonFile(openTradesFile, openTrades); -} - -function setTradingCurrency(cur){ - tradingCurrency = cur; -} -function setCurrencyInfo(cur){ - CURRENCY_INFO = cur; -} - -module.exports = { - settings, - transferProfit, - saveProfit, - manageStaleOrders, - calculateAdaptiveTargets, - getAllClosedOrders, - getAllOpenOrders, - getOpenOrder, - monitorOrderComplete, - sleep, - placeSellOrder, - placeBuyOrder, - evaluateMarketConditions, - getAvailableUSDBalance, - getHistoricalData, - readJsonFile, - writeJsonFile, - settingsFile, - CURRENCY_INFO, - getCurrencyInfo, - openTradesFile, - closedTradesFile, - tradingCurrency, - setTradingCurrency, - setCurrencyInfo, - shuffle, - syncSettings -} \ No newline at end of file