Overall Statistics
import numpy as np

### <summary>
### Strategy for short and long based on IchiMoku Senkou Span.
### </summary>
class MACDAlgorithm(QCAlgorithm):

    def Initialize(self):
        '''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''
        
        # ==== Date and Equity Settings ====
        self.SetStartDate(2017,8, 1)  #Set Start Date
        self.SetEndDate(2018,9,5)    #Set End Date
        self.SetCash(100000)           #Set Strategy Cash
    
        # ==== System Inputs ====
        TenkanPeriod = 9
        KijunPeriod = 26
        SenkouAPeriod = 26
        SenkouBPeriod = 52
        SenkouADelay = 26
        SenkouBDelay = 26
        self.symbol = "AAPL"
        self.LongPos = 1.0
        self.ShortPos = -1.0
        self.SetBenchmark(self.symbol)
        
        # ==== Equities Data Structure ====
        # Find more symbols here: http://quantconnect.com/data
        self.AddEquity(self.symbol, Resolution.Hour)
        self.Debug("numpy test >>> print numpy.pi: " + str(np.pi))
        
        # ==== Forex data structure ====
        # forex data is attained from below:
        #self.forex = self.AddForex(self.symbol, Resolution.Hour, Market.Oanda) #.Symbol
        # set the brokerage model
        #self.forex.SetDataNormalizationMode(DataNormalizationMode.SplitAdjusted)
        #self.SetBrokerageModel(BrokerageName.OandaBrokerage)
        
        # ==== Ensure Indicator aquires adequate data before trading ====
        self.SetWarmUp(SenkouBPeriod)
        
        # ==== Indicators ====
        self.Ichi = self.ICHIMOKU(self.symbol, TenkanPeriod, KijunPeriod, SenkouAPeriod, SenkouBPeriod, SenkouADelay, SenkouBDelay, Resolution.Hour)
        self.Donchian = self.DCH(self.symbol, SenkouBPeriod)
        self.bolinger = self.BB(self.symbol, 20, 2)
        
    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
        '''
        #holdings = self.Portfolio[self.symbol].Quantity
                
        self.PlotIndicator("Indicator", self.Ichi)
        #self.PlotIndicator("Donchian", self.Donchian)