Overall Statistics
Total Trades
1
Average Win
0%
Average Loss
0%
Compounding Annual Return
10.037%
Drawdown
10.100%
Expectancy
0
Net Profit
19.475%
Sharpe Ratio
0.842
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0.118
Beta
-0.774
Annual Standard Deviation
0.122
Annual Variance
0.015
Information Ratio
0.679
Tracking Error
0.122
Treynor Ratio
-0.133
Total Fees
$2.26
import numpy as np
from datetime import datetime, timedelta

### <summary>
### Basic template algorithm simply initializes the date range and cash. This is a skeleton
### framework you can use for designing an algorithm.
### </summary>
class BasicTemplateAlgorithm(QCAlgorithm):
    '''Basic template algorithm simply initializes the date range and cash'''

    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.'''

        self.SetStartDate(2017, 2, 1)  #Set Start Date
        self.SetEndDate(2018,12,11)    #Set End Date
        self.SetCash(100000)           #Set Strategy Cash
        # Find more symbols here: http://quantconnect.com/data
        # KG Begin- Line below is the  problem
        # self.AddEquity("SPY", Resolution.Minute)
        self.AddEquity("SPY", Resolution.Daily)
        # KG end 
        # # define a 10-period RSI indicator with indicator constructor
        # self.rsi = RelativeStrengthIndex(10, MovingAverageType.Simple)
        # # register the daily data of "SPY" to automatically update the indicator
        # self.RegisterIndicator("SPY", self.rsi, Resolution.Daily)
        
        ## KG code begin
        
        # define our 30 minute trade bar consolidator. we can
        # access the 30 minute bar from the DataConsolidated events
        thirtyMinuteConsolidator = TradeBarConsolidator(timedelta(minutes=30))

        # attach our event handler. The event handler is a function that will
        # be called each time we produce a new consolidated piece of data.
        thirtyMinuteConsolidator.DataConsolidated += self.ThirtyMinuteBarHandler

        # this call adds our 30-minute consolidator to
        # the manager to receive updates from the engine
        self.SubscriptionManager.AddConsolidator("SPY", thirtyMinuteConsolidator)

        self.adx = self.ADX("SPY", 14)
        self.RegisterIndicator("SPY", self.adx, Resolution.Daily)

        ## KG code end

    def ThirtyMinuteBarHandler(self, sender, bar):
        if self.adx.IsReady:
            self.Debug(str(self.Time) + ":" + str(bar) + ",ADX:" + str(self.adx.Current.Value))
        
    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
        '''
        
        self.Plot('ADX', 'SPY', self.adx.Current.Value)
        if not self.Portfolio.Invested:
            self.SetHoldings("SPY", 1)