I'm new to QC and I'm having an error that I can't make sense of. I've copied what was auto-generated by the framework selection wizard into my first script; the error is the title of this post.
main.py
from Alphas.RsiAlphaModel import RsiAlphaModel
from Execution.StandardDeviationExecutionModel import StandardDeviationExecutionModel
from Standards import StandardProfile
class MasterAlgo(QCAlgorithmFramework):
def Initialize(self):
std = StandardProfile(self)
# Securities traded
symbols = [ Symbol.Create("CRON", SecurityType.Equity, Market.USA) ]
self.SetUniverseSelection( ManualUniverseSelectionModel(symbols) )
self.SetAlpha(RsiAlphaModel(60, Resolution.Minute))
self.SetExecution(StandardDeviationExecutionModel(60, 2, Resolution.Minute))
def OnOrderEvent(self, orderEvent):
if orderEvent.Status == OrderStatus.Filled:
# self.Debug("Purchased Stock: {0}".format(orderEvent.Symbol))
pass
Standards.py
from Risk.TrailingStopRiskManagementModel import TrailingStopRiskManagementModel
from Risk.MaximumDrawdownPercentPerSecurity import MaximumDrawdownPercentPerSecurity
from Portfolio.MeanVarianceOptimizationPortfolioConstructionModel import MeanVarianceOptimizationPortfolioConstructionModel
class StandardProfile():
def __init__(self, klass):
self.caller = klass
self.SetBroker
self.SetRiskManagement
self.SetTimeframes
self.SetBacktesting
self.SetSecurities
def SetBroker():
self.caller.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Cash)
def SetSecurities():
self.caller.SetSecurityInitializer(lambda x: x.SetDataNormalizationMode(DataNormalizationMode.Raw))
def SetRiskManagement():
trailing_stop = 0.10
max_drawdown = 0.05
self.caller.SetRiskManagement(
TrailingStopRiskManagementModel(trailing_stop),
MaximumDrawdownPercentPerSecurity(max_drawdown)
)
self.caller.SetPortfolioConstruction(MeanVarianceOptimizationPortfolioConstructionModel())
self.caller.Allocate = 0.25
def SetTimeframes():
self.caller.SetTimeZone(TimeZones.Toronto)
self.caller.UniverseSettings.Resolution = Resolution.Minute
self.caller.timeframes = {
1: None,
5: None,
15: None,
30: None,
60: None,
240: None,
390: None,
1950: None
}
for minutes, span in caller.timeframes.items():
self.caller.timeframes[minutes] = new(TradeBarConsolidator(TimeSpan.FromMinutes(minutes)))
def SetBacktesting():
self.caller.SetStartDate(2018, 1, 1)
self.caller.SetEndDate(2018, 12, 31)
self.caller.SetCash(20000)