Why would this code produce "TypeError: Unindexable Object"?
#in init:
self.AddForex("EURUSD", Resolution.Second, Market.Oanda)
self.Consolidate("EURUSD", timedelta(seconds=20), self.OnDataConsolidated)
#in functions:
def OnData(self, data):
pass
def OnDataConsolidated(self, dataConsolidated):
self.bid = dataConsolidated["EURUSD"].Bid.Close #this causes Unindexable error
I am using the simple one line helper method self.Consolidate() as per the documentation page. Perhaps I am unsure how to get the price data from the consolidator?
Adam W
The data that is passed to the consolidator is a TradeBar object (typically), so you do not need to slice it by 'EURUSD' again.
LE
Thanks Adam! In that case how would I get the close price of EURUSD for the consolidated period? Also wouldn't the data be in quotebar format for forex?
Adam W
Right - it should be a QuoteBar since this was for forex. To access the close price, you would just do it without the slicing (dataConsolidated.Close or dataConsolidated.Bid.Close if you want the bid close).
Note that the data passed into OnData is a DataDictionary object that you can slice by symbol, whereas here dataConsolidated refers specifically to EURUSD so slicing it throws the error. If you decide to also consolidate more than one symbol, you'd want to register multiple consolidators for each symbol. Take a look at this example here.
LE
I see! That makes sense, that it's already sliced by symbol. Thanks for the explanation, appreciate the help!
LE
The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.
To unlock posting to the community forums please complete at least 30% of Boot Camp.
You can continue your Boot Camp training progress from the terminal. We hope to see you in the community soon!