| 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 |
from datetime import timedelta
class BasicTemplateFrameworkAlgorithm(QCAlgorithmFramework):
def Initialize(self):
# Set requested data resolution
self.UniverseSettings.Resolution = Resolution.Minute
self.SetStartDate(2018, 8, 28) #Set Start Date
self.SetEndDate(2019, 2, 28) #Set End Date
self.SetCash(100000) #Set Strategy Cash
self.SetUniverseSelection(CoarseFundamentalUniverseSelectionModel(self.CoarseSelectionFunction))
self.SetAlpha(CustomAlphaModel())
self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel())
self.SetExecution(ImmediateExecutionModel())
self.SetRiskManagement(NullRiskManagementModel())
# sort the data by daily dollar volume and take the top '5'
def CoarseSelectionFunction(self, coarse):
# sort descending by daily dollar volume
sortedByDollarVolume = sorted(coarse, key=lambda x: x.DollarVolume, reverse=True)
# return the symbol objects of the top entries from our sorted collection
return [ x.Symbol for x in sortedByDollarVolume[:5] ]
class CustomAlphaModel:
''' This is where you might design a custom Alpha Model that
will interact with the SymbolData class you create below'''
def __init__(self):
self.symbolDataBySymbol = {}
def Update(self, algorithm, data):
insights = []
## this is where you can evaluate technical indicators, etc. to generate insights
return insights
def OnSecuritiesChanged(self, algorithm, changes):
symbols = [ x.Symbol for x in changes.AddedSecurities ]
for symbol in symbols:
## Create SymbolData objects for any new assets
symbolData = SymbolData(algorithm, symbol)
## Assign object to a dictionary so you can access it later in the Update() method
self.symbolDataBySymbol[symbol] = symbolData
class SymbolData:
def __init__(self, algorithm, symbol):
self.Symbol = symbol
self.five_consolidator = TradeBarConsolidator(timedelta(days = 5)) ## 5-period TradeBar Consolidator
self.five_consolidator.DataConsolidated += self.FiveMinuteConsolidator ## Add fuction to do what you want every 5-minutes with your data
self.fifteen_consolidator = TradeBarConsolidator(timedelta(days = 15)) ## 5-period TradeBar Consolidator
self.fifteen_consolidator.DataConsolidated += self.FifteenMinuteConsolidator ## Add fuction to do what you want every 5-minutes with your data
algorithm.SubscriptionManager.AddConsolidator(symbol, self.five_consolidator) ## Register consolidator
algorithm.SubscriptionManager.AddConsolidator(symbol, self.fifteen_consolidator) ## Register consolidator
def FiveMinuteConsolidator(self, sender, bar):
#algorithm.Log('New 5 minute Bar for ' + str(self.Symbol) + '!')
pass
def FifteenMinuteConsolidator(self, sender, bar):
#algorithm.Log('New 15 minute Bar for ' + str(self.Symbol) + '!')
pass