I am trying to build a Universe Selection Model that is similar to the EMA Cross Template found here, but I want to be able to use indicators that update a different way than the EMA. The issue I find is when I try to update the indicators. EMAs, SMAs, MACD, etc that use Update(time, value) work just fine. It is when the indicator requires a TradeBar, such as the Stochastic or ADX that I run into an issue. When I try to update the indicator with the TradeBar, it does not seem to work properly, even though I am calling the Update() function the same with with a TradeBar. Can we get an example of the proper way, within a universe selection example, to use indicators that require a TradeBar Update? Thanks!
Jared Broad
Universe data currently only has the close price which makes it impossible to do TradeBar indicators. On our todo is to make this have the full OHLC set to enable bar indicators on universes.
At the moment your best bet would be to do the universe selection on price/volume to reduce it to 100-500 stocks; then apply the bar indicators on the resulting universe to get it to a subset you're interested in trading.
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.
Eugene
maybe that idea helps
public override void OnSecuritiesChanged(SecurityChanges changes) { if(changes.AddedSecurities.Count > 0) { for(int i=0; i < changes.AddedSecurities.Count; i++) { var addedSymbol = changes.AddedSecurities[i].Symbol; stateData.TryAdd(addedSymbol, new SelectionData(addedSymbol)); } } if(changes.RemovedSecurities.Count > 0) { for(int i=0; i < changes.RemovedSecurities.Count; i++) { // remove only if not invested if(!stateDataInvested.Keys.Contains(changes.RemovedSecurities[i].Symbol)) { var temp = new SelectionData(); stateData.TryRemove(changes.RemovedSecurities[i].Symbol, out temp); } } } // update indicators in state data foreach(var kvp in stateData) { kvp.Value.ResetIndicators(); var bars = History(kvp.Key, momPeriod+1, Resolution.Daily); // dont know why +1 is needed? foreach(var bar in bars) { kvp.Value.UpdateIndicators(bar.Time, bar); } } }
Chris Holley
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!