/* 2020-01-09 - get the gains generated by my automated ETC trading. 2020-10-23 - fix problem because API requires windowing to handle more than 50 rows, implemented windowing. */ const key = 'SOOOJ7OhVCOpJE4DAWz8v5B25UpdYya9buF8DFAkHzmUab5E9i0PlEPh'; // API Key const secret = 'UytAbgU8ty3n5a+JhaoIlcfh8zM4OBGY6PCC+Cfg2NI4waVzM52BBp9qmmyczrTDQpeha8q3nHeE/p7wNWKiVA=='; // API Private Key const KrakenClient = require('kraken-api'); const kraken = new KrakenClient(key, secret); (async () => { try { let params={ start : 1606759423, ofs : 0 }; try { let allBalances=await kraken.api('Balance'); //console.log(JSON.stringify(allBalances)); let etcUsdQuote = await kraken.api('Ticker', { pair : 'DOTUSD' }); //console.log(JSON.stringify(etcUsdQuote)); let allTransactions = await kraken.api('TradesHistory', params); let dailyResults = []; //console.log("Get Trade History ",JSON.stringify(allTransactions,null," ")); let allTradeIDs=Object.keys(allTransactions.result.trades); let sumUSD=0; let sumCommission=0; let numTrans=allTradeIDs.length; for (let i=0;i{ // console.log(date," -> ",dailyResults[date]); }); console.log("# trades : ", params.ofs-1); console.log("SUM USD : ", sumUSD); console.log("SUM fees : ", sumCommission); let netGain = sumUSD - sumCommission; console.log("Net Gain : ", netGain); let numCoinsHeld = Number(allBalances.result.DOT); console.log("# coins Held : ", numCoinsHeld); let sellPrice = Number(etcUsdQuote.result.DOTUSD.b[0]); console.log("Current Price : ", sellPrice); let worthHeldCoins = numCoinsHeld * sellPrice; console.log("Worth held coins : ", worthHeldCoins); let netLiq = netGain + worthHeldCoins; console.log("Net Liquidation Gain : " , netLiq); } catch (ex) { console.error("Error getting trade history: ", ex.message); } } catch (ex) { console.error("Hit general Error-handler: ", ex.message, "\n", ex.stack); } })();