I'm running Lean / Python.

I am attempting to use kraken data that I downloaded using the kraken downloader in the toolbox. I copied the data to Data/crypto/tick/XXBTCUSD, and the files are called: 20150924_trade.zip, etc., as saved by the toolbox downloader.

I then attempted to load a basic Framework algorithm, using the below code to try to load the downloaded data. I have verified that zip files exist for the dates I'm trying to load. When I try to run the code, I get the error message also pasted below.

I found this page: https://www.quantconnect.com/lean/documentation/topic16.html in the docs, and am trying to do the "easy" method, but have not yet been successful.

Any ideas are greatly appreciated! I am just looking for a generic way to load in custom data sources. I don't really care if Lean thinks they are crypto or not. I've also tried using just AddData(), but haven't had success there either. I can get my data into Lean's format pretty easily. I am trying to just get a basic "hello world" up and running using the "easy method" from the documentation link.

Error message:

20190226 11:06:53.450 ERROR:: During the algorithm initialization, the following exception has occurred: ArgumentException : Cash symbols must be exactly 3 characters. at QuantConnect.Securities.Cash..ctor (System.String symbol, System.Decimal amount, System.Decimal conversionRate) [0x0002a] in <4920266245464466a15039b63fc250d3>:0 at QuantConnect.Securities.CashBook.Add (System.String symbol, System.Decimal quantity, System.Decimal conversionRate) [0x00001] in <4920266245464466a15039b63fc250d3>:0 at QuantConnect.Securities.SecurityService.CreateSecurity (QuantConnect.Symbol symbol, System.Collections.Generic.List`1[T] subscriptionDataConfigList, System.Decimal leverage, System.Boolean addToSymbolCache) [0x000ea] in <4920266245464466a15039b63fc250d3>:0 at QuantConnect.Securities.SecurityManager.CreateSecurity (QuantConnect.Symbol symbol, System.Collections.Generic.List`1[T] subscriptionDataConfigList, System.Decimal leverage, System.Boolean addToSymbolCache) [0x00001] in <4920266245464466a15039b63fc250d3>:0 at QuantConnect.Algorithm.QCAlgorithm.AddSecurity[T] (QuantConnect.SecurityType securityType, System.String ticker, QuantConnect.Resolution resolution, System.String market, System.Boolean fillDataForward, System.Decimal leverage, System.Boolean extendedMarketHours) [0x0007e] in <f62450a3825f4f73917828e0bc058624>:0 at QuantConnect.Algorithm.QCAlgorithm.AddCrypto (System.String ticker, QuantConnect.Resolution resolution, System.String market, System.Boolean fillDataForward, System.Decimal leverage) [0x00001] in <f62450a3825f4f73917828e0bc058624>:0 at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0003b] in <04750267503a43e5929c1d1ba19daf3e>:0 at Initialize in KrakenHelloWorld.py:line 64 ArgumentException : Cash symbols must be exactly 3 characters. at QuantConnect.Securities.Cash..ctor (System.String symbol, System.Decimal amount, System.Decimal conversionRate) [0x0002a] in <4920266245464466a15039b63fc250d3>:0 at QuantConnect.Securities.CashBook.Add (System.String symbol, System.Decimal quantity, System.Decimal conversionRate) [0x00001] in <4920266245464466a15039b63fc250d3>:0 at QuantConnect.Securities.SecurityService.CreateSecurity (QuantConnect.Symbol symbol, System.Collections.Generic.List`1[T] subscriptionDataConfigList, System.Decimal leverage, System.Boolean addToSymbolCache) [0x000ea] in <4920266245464466a15039b63fc250d3>:0 at QuantConnect.Securities.SecurityManager.CreateSecurity (QuantConnect.Symbol symbol, System.Collections.Generic.List`1[T] subscriptionDataConfigList, System.Decimal leverage, System.Boolean addToSymbolCache) [0x00001] in <4920266245464466a15039b63fc250d3>:0 at QuantConnect.Algorithm.QCAlgorithm.AddSecurity[T] (QuantConnect.SecurityType securityType, System.String ticker, QuantConnect.Resolution resolution, System.String market, System.Boolean fillDataForward, System.Decimal leverage, System.Boolean extendedMarketHours) [0x0007e] in <f62450a3825f4f73917828e0bc058624>:0 at QuantConnect.Algorithm.QCAlgorithm.AddCrypto (System.String ticker, QuantConnect.Resolution resolution, System.String market, System.Boolean fillDataForward, System.Decimal leverage) [0x00001] in <f62450a3825f4f73917828e0bc058624>:0 at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0003b] in <04750267503a43e5929c1d1ba19daf3e>:0

Code:

from clr import AddReference AddReference("System") AddReference("QuantConnect.Algorithm") AddReference("QuantConnect.Algorithm.Framework") AddReference("QuantConnect.Common") from System import * from Alphas.ConstantAlphaModel import ConstantAlphaModel from QuantConnect import * from QuantConnect.Algorithm import * from QuantConnect.Brokerages import * from QuantConnect.Orders import * from QuantConnect.Algorithm.Framework import * from QuantConnect.Algorithm.Framework.Selection import * from QuantConnect.Algorithm.Framework.Portfolio import * from Execution.ImmediateExecutionModel import ImmediateExecutionModel from Risk.NullRiskManagementModel import NullRiskManagementModel from Selection.OptionUniverseSelectionModel import OptionUniverseSelectionModel from Risk.NullRiskManagementModel import NullRiskManagementModel from QuantConnect.Algorithm.Framework.Alphas import * from datetime import date, timedelta import numpy as np class HelloWorldKraken(QCAlgorithmFramework): '''Basic template algorithm simply initializes the date range''' def Initialize(self): '''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.''' self.SetStartDate(2019,2,10) #Set Start Date self.SetEndDate(2019,2,15) #Set End Date self.SetBrokerageModel(BrokerageName.Default, AccountType.Margin) symbols = [self.AddCrypto('XXBTCUSD', Resolution.Tick).Symbol] self.SetUniverseSelection( ManualUniverseSelectionModel(symbols) ) self.SetAlpha(RsiAlphaModel(20, Resolution.Hour)) self.SetPortfolioConstruction(NullPortfolioConstructionModel()) self.SetExecution(ImmediateExecutionModel()) def OnData(self, data): '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. Arguments: data: Slice object keyed by symbol containing the stock data ''' pass