Overall Statistics |
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
class main(QCAlgorithm): def Initialize(self): self.SetStartDate(2019, 7, 23) self.SetEndDate(2019, 7 ,30) self.SetCash(100000) self.priceTarget = [1,10] self.outstandingShares = 10e06 self.UniverseSettings.Resolution= Resolution.Minute self.SetUniverseSelection(FineFundamentalUniverseSelectionModel(self.CoarseSelectionFunction, self.FineSelectionFunction, None, None)) # create a dictionary to store universe selected securities and the corresponding data consolidator self.symbolData = {} def CoarseSelectionFunction(self, coarse): result = [x.Symbol for x in coarse if (x.HasFundamentalData and x.AdjustedPrice > self.priceTarget[0] and x.AdjustedPrice < self.priceTarget[1])] return [x for x in result] def FineSelectionFunction(self, fine): result = [x for x in fine if x.EarningReports.BasicAverageShares.OneMonth < self.outstandingShares] # Limited fine selection to 2 securities to avoid reaching the maximum of log data, and also to show security changes from day to day sortedresult = sorted(result, key = lambda x: x.EarningReports.BasicAverageShares.OneMonth) return [x.Symbol for x in sortedresult[:2]] def OnDataConsolidated(self, sender, bar): self.Log(f'Information for {sender.Consolidated.Symbol} - Open: {bar.Open}, Close: {bar.Close}, Period: {bar.Period}') # access the new x minute bar here # write your strategy here def OnSecuritiesChanged(self, change): '''Event fired each time the we add/remove securities from the data feed. Args: changes: The security additions and removals from the algorithm''' for added in change.AddedSecurities: self.symbolData[added.Symbol] = SymbolData(added) self.symbolData[added.Symbol].xMinuteConsolidator.DataConsolidated += self.OnDataConsolidated self.SubscriptionManager.AddConsolidator(added.Symbol, self.symbolData[added.Symbol].xMinuteConsolidator) for removed in change.RemovedSecurities: data = self.symbolData.pop(removed.Symbol, None) if data is not None: #clean up the consolidator from previous universe selection self.SubscriptionManager.RemoveConsolidator(removed.Symbol, data.xMinuteConsolidator) class SymbolData: def __init__(self, security): self.Security = security # The consolidator is set to 30 minute in order to show security changes from day to day, but you can simply change 'minute = 5' to get your desired 5 minute bars. self.xMinuteConsolidator = TradeBarConsolidator(timedelta(minutes=30))