| 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.746 Tracking Error 0.228 Treynor Ratio 0 Total Fees $0.00 |
import numpy as np
from clr import AddReference
AddReference("System")
AddReference("NodaTime")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Indicators")
AddReference("QuantConnect.Common")
from datetime import datetime, timedelta
from System import *
from NodaTime import DateTimeZone
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Brokerages import *
from QuantConnect.Data.Market import *
from datetime import timedelta
class DataConsolidationAlgorithm(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.'''
self.SetCash(30000)
self.StopRisk = 1
if self.Portfolio.TotalUnrealizedProfit > 599.99: #take profit
self.Liquidate()
self.SetStartDate(2018,1,1) #Set Start Date
self.SetEndDate(2021,1,1) #Set End Date
# Find more symbols here: http://quantconnect.com/data
self.AddEquity("BOXL", Resolution.Minute)
self.ema = self.EMA("BOXL", 30, MovingAverageType.Simple, Resolution.Minute)
self.vwap = self.VWAP("BOXL", 30, Resolution.Minute)
# define our 5 minute trade bar consolidator. we can
# access the 5 minute bar from the DataConsolidated events
fiveMinuteConsolidator = TradeBarConsolidator(timedelta(minutes=5))
# attach our event handler. The event handler is a function that will
# be called each time we produce a new consolidated piece of data.
# this call adds our 5-minute consolidator to
# the manager to receive updates from the engine
self.SubscriptionManager.AddConsolidator("BOXL", fiveMinuteConsolidator)
def fiveMinuteBarHandler(self, sender, bar):
'''This is our event handler for our 5-minute trade bar defined above in Initialize(). So each time the consolidator produces a new 5-minute bar, this function will be called automatically. The sender parameter will be the instance of the IDataConsolidator that invoked the event '''
self.Debug(str(self.Time) + " " + str(bar))
def OnData(self, data):
if not self.ema.IsReady:
return
if not self.vawap.IsReady:
return
if self.ema > self.vwap:
self.MarketOrder("BOXL",1)
if self.ema < self.vwap:
self.MarketOrder("BOXL",-1)