| 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 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
clr.AddReference('QuantConnect.Research')
from QuantConnect.Research import QuantBook
import statistics
import pandas as pd
import numpy as np
import math
class TachyonMultidimensionalChamber(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2021, 1, 14) # Set Start Date
self.SetEndDate(2021, 1, 14) # Set End Date
self.SetCash(400000) # Set Strategy Cash
self.AddUniverse(self.CoarseSelectionFunction)
self.SetSecurityInitializer(self.SecurityInitializer)
self.UniverseSettings.ExtendedMarketHours = True
self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin)
self.UniverseSettings.Leverage = 4
self.UniverseSettings.Resolution = Resolution.Minute #can comment/change this out
###variables to keep track of
self.sd = {} #all symbol data
def SecurityInitializer(self, security):
security.SetLeverage(4)
def CoarseSelectionFunction(self, universe):
selected = []
for coarse in universe:
if coarse.Symbol.Value == "AAPL":
symbol = coarse.Symbol
selected.append(symbol)
return selected #list of objects of type Symbol
def OnSecuritiesChanged(self, changed):
for security in changed.AddedSecurities:
symbol = security.Symbol
if symbol not in self.sd:
self.sd[symbol] = SymbolData(self, symbol)
for security in changed.RemovedSecurities:
symbol = security.Symbol
self.sd.pop(symbol, None)
###########
# on data #
###########
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
'''
for s in self.sd:
if data.ContainsKey(s) and data.Bars.ContainsKey(s) and self.Time.hour < 16:
minute = data.Bars
if self.Time.hour == 9:
self.Debug(str(minute[s].Open) + "\t" + str(minute[s].High) + "\t" + str(minute[s].Low) + "\t" + str(minute[s].Close) + "\t" + str(minute[s].Volume))
return
class SymbolData:
def __init__(self, algorithm, symbol):
self.vwap = algorithm.VWAP(symbol, 2000, Resolution.Minute) #60*24 = 1440 minutes in a day
prehist = algorithm.History(symbol, 10, Resolution.Minute)
if not prehist.empty:
hist = prehist.loc[symbol]
if 'volume' not in prehist.columns:
algorithm.Log(f"No volume: {symbol}")
return
for idx, bar in hist.iterrows():
tradeBar = TradeBar(idx, symbol, bar.open, bar.high, bar.low, bar.close, bar.volume, timedelta(minutes=1))
self.vwap.Update(tradeBar)