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 |
import numpy as np from datetime import timedelta from Alphas.EmaCrossAlphaModel import EmaCrossAlphaModel from NodaTime import DateTimeZone from Risk.NullRiskManagementModel import NullRiskManagementModel class BasicTemplateFrameworkAlgorithm(QCAlgorithmFramework): def Initialize(self): self.SetStartDate(2014, 1, 18) #Set Start Date self.SetEndDate(2014, 2, 1) #Set End Date self.SetCash(1000) #Set Strategy Cash self.SetBrokerageModel(BrokerageName.OandaBrokerage,AccountType.Margin) self.UniverseSettings.Resolution = Resolution.Daily symbols = [Symbol.Create("EURUSD", SecurityType.Forex, Market.Oanda), Symbol.Create("GBPUSD", SecurityType.Forex, Market.Oanda)] self.SetUniverseSelection( ManualUniverseSelectionModel(symbols) ) self.SetAlpha(customAlpha()) self.SetPortfolioConstruction(NullPortfolioConstructionModel()) self.SetExecution(NullExecutionModel()) self.SetRiskManagement(NullRiskManagementModel()) def OnOrderEvent(self, orderEvent): if orderEvent.Status == OrderStatus.Filled: # self.Debug("Purchased Stock: {0}".format(orderEvent.Symbol)) pass class customAlpha(AlphaModel): def __init__(self): self.resolution = Resolution.Daily self.symbolDataBySymbol = {} def Update(self, algorithm, data): insights = [] for symbol, symbolData in self.symbolDataBySymbol.items(): algorithm.Log("Upper:"+ str(symbolData.donchian.UpperBand)+"Lower:"+ str(symbolData.donchian.LowerBand)) return insights def OnSecuritiesChanged(self, algorithm, changes): addedSymbols = [ x.Symbol for x in changes.AddedSecurities if x.Symbol not in self.symbolDataBySymbol] if len(addedSymbols) == 0: return history = algorithm.History(addedSymbols, 10, self.resolution) for symbol in addedSymbols: symbolData = SymbolData(algorithm, symbol, self.resolution) self.symbolDataBySymbol[symbol] = symbolData ticker = SymbolCache.GetTicker(symbol) for tuple in history.loc[ticker].itertuples(): bar = QuoteBar(tuple.Index-timedelta(days=1), symbolData.Symbol , Bar(tuple.bidopen,tuple.bidhigh,tuple.bidlow, tuple.bidclose) , 0 , Bar(tuple.askopen,tuple.askhigh,tuple.asklow, tuple.askclose) , 0 ,timedelta(days=1) ) symbolData.donchian.Update( bar) class SymbolData: '''Contains data specific to a symbol required by this model''' def __init__(self, algorithm, symbol, resolution): self.Symbol = symbol self.resolution = resolution self.donch_period = 7 self.ticker = SymbolCache.GetTicker(symbol) self.donchian = DonchianChannel(self.ticker, self.donch_period, self.donch_period) algorithm.RegisterIndicator(self.Symbol, self.donchian, self.resolution)