Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 3.437% Drawdown 20.200% Expectancy 0 Net Profit 5.507% Sharpe Ratio 0.309 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.155 Beta -5.546 Annual Standard Deviation 0.142 Annual Variance 0.02 Information Ratio 0.168 Tracking Error 0.142 Treynor Ratio -0.008 Total Fees $1.00 |
import numpy as np from System.Drawing import Color from decimal import Decimal class movingAverageEnvPlotExample(QCAlgorithm): def Initialize(self): self.SetStartDate(2017, 6, 1) self.SetEndDate(2019, 1, 1) self.SetCash(5000) self.spy = self.AddEquity("SPY", Resolution.Daily) # Fixed deviation percentage for upper and lower band deviationPct = 0.05 # Construct a simple moving average and a upper and lower band self.middleBand = self.SMA("SPY", 20, Resolution.Daily) self.upperBand = IndicatorExtensions.Times(self.middleBand,(1+deviationPct)) self.lowerBand = IndicatorExtensions.Times(self.middleBand,(1-deviationPct)) # Construct "Trade Plot" IndicatorPlot = Chart("Trade Plot") IndicatorPlot.AddSeries(Series("Upper Band", SeriesType.Line,"", Color.Blue)) IndicatorPlot.AddSeries(Series("Middle Band", SeriesType.Line,"", Color.Green)) IndicatorPlot.AddSeries(Series("Lower Band", SeriesType.Line,"", Color.Red)) IndicatorPlot.AddSeries(Series("Close Price", SeriesType.Line,"", Color.Black)) self.AddChart(IndicatorPlot) def OnData(self,data): if not self.upperBand.IsReady: return high = self.upperBand.Current.Value mid = self.middleBand.Current.Value low = self.lowerBand.Current.Value price = self.Securities["SPY"].Close # Add values to "Trade Plot" self.Plot("Trade Plot", "Upper Band", str(high)) self.Plot("Trade Plot", "Middle Band", str(mid)) self.Plot("Trade Plot", "Lower Band", str(low)) self.Plot("Trade Plot", "Close Price", str(price)) # Enter a long position if not self.Portfolio.Invested: self.SetHoldings("SPY",1)