price-monitor.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const OneTask = require('../../libs/one-task')
  2. const OneInch = require('../../libs/web3/1inch')
  3. const BinanceSpot = require('../../libs/binance/binance-spot')
  4. const Config = require('../../config/config')
  5. const showPrices = function(context, task) {
  6. const logger = task.logger
  7. const tokenMap = context.tokenMap
  8. console.clear()
  9. console.info(`---------------------------------------------------------------------------------`)
  10. console.info(`| pair\t\t\t| 1inch\t\t\t\t| binance\t\t|`)
  11. console.info(`---------------------------------------------------------------------------------`)
  12. Object.keys(tokenMap).forEach((tokenHash) => {
  13. const token = tokenMap[tokenHash]
  14. console.info(`| ${token.exchange.pair}\t\t| ${token.OneInchPrice}\t\t| ${token.binancePrice}\t\t|`)
  15. })
  16. console.info(`---------------------------------------------------------------------------------`)
  17. logger.info('')
  18. }
  19. const onTickFun = async function() {
  20. const task = this
  21. const context = task.context
  22. const tokenMap = context.tokenMap
  23. const tokenContractAddressList = Object.keys(tokenMap)
  24. // 搜集所有价格数据
  25. for (const tokenHash of tokenContractAddressList) {
  26. const toToken = tokenMap[tokenHash]
  27. const fromIerc20Token = Config.baseIerc20Token
  28. const amount = Config.baseTokenAmount
  29. const OneInchPrice = await OneInch.price(fromIerc20Token.contract, tokenHash, toToken.ierc20.decimals, amount)
  30. const binancePrice = await BinanceSpot.realPrice(toToken.exchange.pair)
  31. toToken.OneInchPrice = OneInchPrice
  32. toToken.binancePrice = binancePrice
  33. }
  34. // 绘制帧
  35. showPrices(context, task)
  36. }
  37. const priceMonitor = new OneTask('PriceMonitor',5 * 1000, OneTask.baseInit, onTickFun)
  38. priceMonitor.Start()