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 Probabilistic 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 -2.872 Tracking Error 0.174 Treynor Ratio 0 Total Fees $0.00 |
from FederalInterestRateAlphaModel import PierceAlpha from Execution.ImmediateExecutionModel import ImmediateExecutionModel from datetime import timedelta class DynamicNadionCoil(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 6, 11) # Set Start Date self.SetCash(100000) # Set Strategy Cash self.SetWarmUp(20) self.symbol = self.AddEquity("TSLA", Resolution.Minute, Market.USA).Symbol self.Consolidate(self.symbol, timedelta(minutes = 45), self.FortyFiveMinuteBarHandler) self.pattern = self.CandlestickPatterns.Piercing(self.symbol) self.AddAlpha(PierceAlpha(self, symbol = self.symbol, pattern = self.pattern)) self.SetExecution(ImmediateExecutionModel()) self.SetPortfolioConstruction(InsightWeightingPortfolioConstructionModel()) self.SetRiskManagement(TrailingStopRiskManagementModel(0.03)) def OnData(self, data): '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. Arguments: data: Slice object keyed by symbol containing the stock data ''' if self.IsWarmingUp: self.Debug("Still warming up...") return def FortyFiveMinuteBarHandler(self, consolidated): self.Debug(f"{consolidated.EndTime} >> FortyFiveMinuteBarHandler >> {consolidated.Close}")
class PierceAlpha(AlphaModel): def __init__(self, algorithm, symbol, pattern): ## Add Quandl data for the Federal Interest Rate self.symbol = symbol self.algorithm = algorithm self.pattern = pattern def Update(self, algorithm, slice): insights = [] ## Check for all Symbols in current data Slice if not slice.ContainsKey(self.symbol): self.algorithm.Debug("There is no data") return if slice is None: self.algorithm.Debug("No Slice") return [] # self.algorithm.Debug("{} | Open: {} Close: {} " . format(self.symbol ,slice[self.symbol].Open, slice[self.symbol].Close) ) # self.algorithm.Log("self pattern is {} " . format(self.pattern)) if self.pattern is None: self.algorithm.Debug("pattern not yet defined. skipping") return [] if (self.pattern.Current.Value == 1): self.algorithm.Debug("Time: {} pattern is 1 going long".format(slice.Time) ) insights.append(Insight(self.symbol, timedelta(minutes=60), InsightType.Price, InsightDirection.Up)) elif (self.pattern.Current.Value== -1): self.algorithm.Debug("pattern is -1 going short") insights.append(Insight(self.symbol, timedelta(minutes=60), InsightType.Price, InsightDirection.Down)) else: self.algorithm.Debug("no pierce recognized skipping") return insights