I have a simple custom data as follows. History calls on the custom data are 10x slower both in the research environment and during backtests, compared to history calls on native Crypto datatypes. How do I make it faster?

  1. class CryptoAuxData(PythonData):
  2. def GetSource(self, config, date, isLiveMode):
  3. return SubscriptionDataSource(
  4. os.path.join(Globals.DataFolder, f"crypto/binance/hour_aux/{config.Symbol.Value.lower()}.csv"),
  5. SubscriptionTransportMedium.LocalFile
  6. )
  7. def Reader(self, config, line, date, isLiveMode):
  8. coin = CryptoAggData()
  9. coin.Symbol = config.Symbol
  10. try:
  11. data = line.split(',')
  12. value = float(data[4])
  13. if value <= 0: return None
  14. coin.Time = datetime.strptime(data[0], "%Y%m%d %H:%M")
  15. coin.Value = value
  16. # coin.EndTime = coin.Time + timedelta(minutes=5)
  17. coin["Open"] = float(data[1])
  18. coin["High"] = float(data[2])
  19. coin["Low"] = float(data[3])
  20. coin["Close"] = float(data[4])
  21. coin["Volume"] = float(data[5])
  22. coin["NumTrades"] = float(data[6])
  23. coin["MarketBuy"] = float(data[7])
  24. return coin
  25. except ValueError:
  26. # Do nothing, possible error in json decoding
  27. return None
+ Expand

Author

Bhuang

July 2023