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
-0.725
Tracking Error
0.315
Treynor Ratio
0
Total Fees
$0.00
import numpy as np
from datetime import timedelta
from datetime import datetime
import pandas as pd


from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Indicators import *
from QuantConnect.Data.Market import TradeBar
from System.Drawing import Color


class CrawlingFluorescentPinkBison(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2020, 1, 1)  # Set Start Date
        self.SetCash(100000)  # Set Strategy Cash
        self.symbol = "FSLR"
        self.AddEquity(self.symbol, Resolution.Minute)
        
        SmaFastPeriod = 50
        SmaSlowPeriod = 200
        
        # slow indicators
        self.sma50 = self.SMA(self.symbol, SmaFastPeriod, Resolution.Daily)
        self.sma200 = self.SMA(self.symbol, SmaSlowPeriod, Resolution.Daily)
        self.ichimoku = self.ICHIMOKU(self.symbol,9, 26, 26, 52, 26, 26, Resolution.Daily) 

        self.adx = self.ADX(self.symbol, 14, Resolution.Daily)      
        
        # Consolidate 1min SPY -> 45min Bars
        self.Consolidate(self.symbol, timedelta(minutes=5), self.Minute5BarHandler)

        # Consolidate 1min SPY -> 1-Hour Bars
        self.Consolidate(self.symbol, Resolution.Hour, self.HourBarHandler)
        
        # Consolidate 1min SPY -> 1-Week Bars
        self.Consolidate(self.symbol, Resolution.Daily, self.DayBarHandler)
        
        
        self.SetWarmUp(timedelta(days= SmaSlowPeriod))

        ichimokuPlot = Chart('ichimokuPlot')
        
        ichimokuPlot.AddSeries(Series('Tenkan', SeriesType.Line, "", Color.Turquoise))

        ichimokuPlot.AddSeries(Series('Kijun', SeriesType.Line, "", Color.Purple))

        ichimokuPlot.AddSeries(Series('SenkouA', SeriesType.Line, "", Color.Orange))
        ichimokuPlot.AddSeries(Series('SenkouB', SeriesType.Line, "", Color.Brown))

        #ichimokuPlot.AddSeries(Series('Chikou', SeriesType.Line, "", Color.Pink))
        ichimokuPlot.AddSeries(Series('5minPrice', SeriesType.Line, "", Color.Gray))
        #ichimokuPlot.AddSeries(Series('Price', SeriesType.Line, "", Color.Gray))

        
        ichimokuPlot.AddSeries(Series('Sma50', SeriesType.Line, "", Color.Blue))
        ichimokuPlot.AddSeries(Series('Sma200', SeriesType.Line, "", Color.Red))

        

        ichimokuPlot.AddSeries(Series('Buy', SeriesType.Scatter, '$', Color.Green, ScatterMarkerSymbol.Triangle))
        ichimokuPlot.AddSeries(Series('Sell', SeriesType.Scatter, '$', Color.Red, ScatterMarkerSymbol.TriangleDown))
        
        
        self.AddChart(ichimokuPlot)


        
        #SMA long plot
        #SmaDayPlot = Chart('SmaDayPlot')
        #SmaDayPlot.AddSeries(Series('Sma50', SeriesType.Line, "", Color.Blue))
        #SmaDayPlot.AddSeries(Series('Sma200', SeriesType.Line, "", Color.Red))
        #self.AddChart(SmaDayPlot)
        
        

        
    
        

    
    
    def Minute5BarHandler(self, consolidated):
        if self.IsWarmingUp: return
        self.Log(f"{consolidated.EndTime} >> Minute5BarHandler >> {consolidated.Close}")
        self.Plot("ichimokuPlot", "5minPrice", consolidated.Close)    

    def HourBarHandler(self, consolidated):
        if self.IsWarmingUp: return
        self.Log(f"{consolidated.EndTime} >> HourBarHandler >> {consolidated.Close}")
        #self.Plot("TradePlot", "HourPrice", consolidated.Close)



    def DayBarHandler(self, consolidated):
        if self.IsWarmingUp: return
        self.Log(f"{consolidated.EndTime} >> DayBarHandler >> {consolidated.Close}")
        #self.Plot("SmaDayPlot", "Sma50", self.sma50.Current.Value)
        #self.Plot("SmaDayPlot", "Sma200", self.sma200.Current.Value)
        
        
        # ichimoku plot
        # plot
        self.Plot("ichimokuPlot", "Tenkan", self.ichimoku.Tenkan.Current.Value)
        self.Plot("ichimokuPlot", "Kijun", self.ichimoku.Kijun.Current.Value)
        self.Plot("ichimokuPlot", "Price", consolidated.Close)
        #self.Plot("ichimokuPlot", "Chikou", self.ichimoku.Chikou.Current.Value)
        self.Plot("ichimokuPlot", "SenkouA", self.ichimoku.SenkouA.Current.Value)
        self.Plot("ichimokuPlot", "SenkouB", self.ichimoku.SenkouB.Current.Value)
        self.Plot("ichimokuPlot", "Sma50", self.sma50.Current.Value)
        self.Plot("ichimokuPlot", "Sma200", self.sma200.Current.Value)
        
        #adxplot
       # self.Plot("adxPlot", "adx", self.adx.Current.Value)
    #    self.Plot("adxPlot", "adxMinus", self.adx.NegativeDirectionalIndex.Current.Value)
    #    self.Plot("adxPlot", "adxPlus", self.adx.PositiveDirectionalIndex.Current.Value)



     
    def OnData(self, data):
        if self.IsWarmingUp: return
        '''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 not self.Portfolio.Invested:
        #    self.SetHoldings(self.symbol, 1)