one-task.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const OneTask = require('./task')
  2. const Context = require("./context");
  3. const Config = require("../config/config");
  4. const BinanceSpot = require("./binance/binance-spot");
  5. const IERC20 = require("./web3/ierc20-token");
  6. const Token = require("./token");
  7. const PrivateConfig = require("../PrivateConfig")
  8. OneTask.baseInit = async function() {
  9. this.context = new Context()
  10. this.context.binanceSpot = new BinanceSpot(PrivateConfig.binanceAPIKey, PrivateConfig.binanceSecretKey)
  11. const pairs = Object.values(PrivateConfig.tokenMapping).map(coin => `${coin}${Config.baseIerc20Token.symbol}` )
  12. const exchangeInfo = await BinanceSpot.exchangeInfo(pairs)
  13. // 解析priceTickFilter
  14. const priceTickFilterMap = (() => {
  15. const filterMap = {}
  16. exchangeInfo.symbols.forEach(function(pairInfo) {
  17. const filter = pairInfo.filters.filter(filterObj => filterObj.filterType === 'PRICE_FILTER')[0]
  18. filterMap[pairInfo.symbol] = Math.log10(1 / parseFloat(filter.tickSize))
  19. })
  20. return filterMap
  21. })()
  22. // 解析lotSizeFilter
  23. const lotSizeFilterMap = (() => {
  24. const filterMap = {}
  25. exchangeInfo.symbols.forEach(function(pairInfo) {
  26. const filter = pairInfo.filters.filter(filterObj => filterObj.filterType === 'LOT_SIZE')[0]
  27. filterMap[pairInfo.symbol] = Math.log10(1 / parseFloat(filter.stepSize))
  28. })
  29. return filterMap
  30. })()
  31. // 初始化IERC20的token
  32. await IERC20.batchInit(this.context, Object.keys(PrivateConfig.tokenMapping))
  33. // 初始化本地token,绑定binance与IERC20
  34. await Token.batchInit(this.context, Object.keys(PrivateConfig.tokenMapping), priceTickFilterMap, lotSizeFilterMap)
  35. }
  36. module.exports = OneTask