| 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)