Back

Difficulties getting current price . Probably linked to AddEquity but I cant figure out why

Hi Everyone,

Attached is the code that I use. I guess the title of this discussion says it all but im really having a hard time adding securities on the fly and then retreiving data. All I could find in the documentation and looking at other discussions are codes that only add a few securities in the INITIALIZE function but nothing in custom function.

THe code returns this error:

Backtest Handled Error: The order quantity for JNJ cannot be calculated: the price of the security is zero.

Also, all current prices returned by the Debug function return a price of $0.

Side question: Why is this code so slow ?! When I run it for a longer period, it takes hours to run. Does it have to do with "

self.UniverseSettings.Resolution = Resolution.Minute"if so, I would gladly put a daily resolution but will I be able to run the code 1 and 2 minutes after open ?

Thanks in advance.

Update Backtest








0

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.


Hi Stephane,

When you use Universe Selection, the algorithm automatically subscribes to all of the stocks selected and so there is no need to do so manually, such as in the following snippet taken from the setup_trade() method in the algorithm you posted.

for stock in self.my_universe:
stockID = self.AddEquity(stock.Value, Resolution.Minute)
stockID.SetDataNormalizationMode(DataNormalizationMode.Raw)

So any new securities will be added via the Universe Selection and automatically subscribed to, and these new securities can be accessed in the OnSecuritiesChanged(self, changes) method as seen here.

As for why the prices are being reported as 0, this can be fixed by deleting the lines of code I've mentioned above and then using this for the my_stocks(self) method instead

def my_stocks(self):
self.Debug("%%%%%%%%%%%%% my_stocks {}".format(self.Time))

## With no more self.addedStocks list, the stock symbols can be accessed
## via the self.Securities dictionary keys instead
for stockID in self.Securities.Keys:
if self.Securities[str(stockID)].Price != 0:
self.stock_list.append(str(stockID))
self.Debug(str(stockID))
self.Debug(self.Securities[str(stockID)].Price)

As for the speed of the algorithm, scaling down to Hour or Daily data resolution would probably help and using Scheduled Events would allow the algorithm to fire certain events at defined times that might otherwise be occurring more frequently than is necessary. Otherwise, you can look into Scheduled Universe Selection to limit the number of times Universe Selection needs to occur if having it happen every minute is not necessary.

0

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.


Update Backtest





0

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.


Loading...

This discussion is closed

 
";