Here is the code so far
from System.Drawing import Color
class SquareFluorescentPinkSardine(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2019, 1, 1)
self.SetEndDate(2021, 7, 11)
self.SetCash(100000) # Set Strategy Cash
self.spy = self.AddEquity("SPY", Resolution.Hour).Symbol
self.Schedule.On(self.DateRules.MonthStart("SPY"), self.TimeRules.At(15, 0), Action(self.SMA_signal))
self.SetBenchmark("SPY")
self.fast = self.SMA(self.spy, 20, Resolution.Daily);
self.slow = self.SMA(self.spy, 60, Resolution.Daily);
smaPlot = Chart('SMA Chart')
smaPlot.AddSeries(Series('fast_s', SeriesType.Line, '$', Color.Red))
smaPlot.AddSeries(Series('slow_s', SeriesType.Line, '$', Color.Green))
smaPlot.AddSeries(Series('benchmark', SeriesType.Line, '$', Color.Red))
def SMA_signal (self):
if not self.fast.IsReady:
print("fast not ready")
return
if not self.slow.IsReady:
print("slow not ready")
return
self.fastValue = self.fast.Current.Value
self.slowValue = self.slow.Current.Value
if self.fastValue < self.slowValue:
self.signal = " SELL -"
else:
self.signal = " BUY - "
self.Plot('SMA Chart', 'fast_s', self.fast.Current.Value)
self.Plot('SMA Chart', 'slow_s', self.slow.Current.Value)
self.Plot('SMA Chart', 'benchmark', self.Securities[self.spy].Close)
self.SMA_values = "Fast: " + str(self.fastValue) + ". Slow: " + str(self.slowValue)
self.Log("SMA_signal - " + self.signal + self.SMA_values )
return