codesociety / friartuck

Live Quant Trading Framework for Robinhood, using IEX Trading and AlphaVantage for Free Prices.
MIT License
149 stars 24 forks source link

IEX Pricing Error - TypeError: float() argument must be a string or a number, not 'NoneType' #11

Open rwburke2 opened 5 years ago

rwburke2 commented 5 years ago

When retrieving historical quotes from IEX receive the following:

019-01-17 14:47:04,919:INFO - quote_source:66 - connected:True https://api.iextrading.com/1.0/stock/tqqq/chart/date/20190116 390 storing quotes: 2019-01-17 14:47:05,335:ERROR - api:661 - Error occurred while invoking handle_data: float() argument must be a string or a number, not 'NoneType' Traceback (most recent call last): File "/home/ubuntu/projects/friartuck/friartuck_startfish_prime_1/friartuck/api.py", line 656, in _time_interval_processor self.active_algo.handle_data(self.context, self.friar_data) File "/home/ubuntu/projects/friartuck/friartuck_startfish_prime_1/starfish_prime_12_11_18_TQQQ.py", line 194, in handle_data CalcRsi(context, data) File "/home/ubuntu/projects/friartuck/friartuck_startfish_prime_1/starfish_prime_12_11_18_TQQQ.py", line 235, in CalcRsi prices = data.history(context.asset, frequency='1m', bar_count=1600, field=['price']) File "/home/ubuntu/projects/friartuck/friartuck_startfish_prime_1/friartuck/api.py", line 94, in history return self.friar_tuck_live.history(security, bar_count, frequency, field) File "/home/ubuntu/projects/friartuck/friartuck_startfish_prime_1/friartuck/api.py", line 290, in history quotes = self.quote_source.fetch_quotes(symbol=symbol_map.keys(), bar_count=bar_count, frequency=frequency, field=field, market_open=self.is_market_open, since_last_quote_time=since_last_quote_time) File "/home/ubuntu/projects/friartuck/friartuck_startfish_prime_1/friartuck/quote_source.py", line 110, in fetch_quotes symbol_bars[sym] = self._fetch_quotes_by_sym(symbol=sym, bar_count=bar_count, frequency=frequency, field=field, market_open=market_open, since_last_quote_time=since_last_quote_time) File "/home/ubuntu/projects/friartuck/friartuck_startfish_prime_1/friartuck/quote_source.py", line 138, in _fetch_quotes_by_sym new_bars = self.iex.get_quote_intraday_hist_by_bars(symbol=symbol, minute_series=self.allowed_history_frequency[frequency], bars=bar_count, before_date=before_date) File "/home/ubuntu/projects/friartuck/friartuck_startfish_prime_1/friartuck/iextrading/iextrading.py", line 153, in get_quote_intraday_hist_by_bars my_bars = summarize_quote(quotes, minute_series) File "/home/ubuntu/projects/friartuck/friartuck_startfish_prime_1/friartuck/iextrading/iextrading.py", line 216, in summarize_quote market_close = is_valid_value(float(quote_data['marketClose']), float(get_field_value('close', quote_data, -1))) TypeError: float() argument must be a string or a number, not 'NoneType'

codesociety commented 5 years ago

I noticed iex sending null for some fields which is possibly the cause of the error... made some changes to the iex code python file to remedy that... check it out to see if that solves the issue.

rwburke2 commented 5 years ago

yep - - looks like it resolved it - - thanks!