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 -4.2 Tracking Error 0.098 Treynor Ratio 0 Total Fees $0.00 |
import numpy as np import pandas as pd import calendar #Tradable ETF Trade_spy = 'SPY' Trade_gld = 'GLD' fastB = 4 slowB = 152 class MyAlgo(QCAlgorithm): def Initialize(self): calendar.setfirstweekday(calendar.MONDAY) self.SetStartDate(2020,11,25) self.SetEndDate(2020,12,20) self.SetCash(100000) self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin) #self.SetTimeZone(TimeZones.Berlin) self.Low5 = {} self.High5 = {} self.Close5 = {} self.High1 = {} self.High2 = {} self.High3 = {} self.High4 = {} self.Low220 = {} self.High220 = {} self.Close220 = {} self.stocks = {} self.today_low = {} self.today_high = {} self.today_close = {} sl = [Trade_spy] #Trade_gld, Trade_uga, self.secs = list(set(sl)) #Only unique tickers! for self.ticker in self.secs: self.stocks[self.ticker] = self.AddEquity(self.ticker, Resolution.Hour) self.stocks[self.ticker].SetLeverage(7.0) #Averages self.Low5[self.ticker] = self.SMA(self.ticker, fastB, Resolution.Daily, Field.Low) self.High5[self.ticker] = self.SMA(self.ticker, fastB, Resolution.Daily, Field.High) self.Close5[self.ticker] = self.SMA(self.ticker, fastB, Resolution.Daily, Field.Close) self.Low220[self.ticker] = self.SMA(self.ticker, slowB, Resolution.Daily, Field.Low) self.High220[self.ticker] = self.SMA(self.ticker, slowB, Resolution.Daily, Field.High) self.Close220[self.ticker] = self.SMA(self.ticker, slowB, Resolution.Daily, Field.Close) #1-5 days HIGHS averages self.High1[self.ticker] = self.SMA(self.ticker, 1, Resolution.Daily, Field.High) self.High2[self.ticker] = self.SMA(self.ticker, 2, Resolution.Daily, Field.High) self.High3[self.ticker] = self.SMA(self.ticker, 3, Resolution.Daily, Field.High) self.High4[self.ticker] = self.SMA(self.ticker, 4, Resolution.Daily, Field.High) #Current day HLC self.today_low[self.ticker] = self.MIN(self.ticker, 1, Resolution.Hour, Field.Low) self.today_high[self.ticker] = self.MAX(self.ticker, 1, Resolution.Hour, Field.High) self.today_close[self.ticker] = self.MAX(self.ticker, 1, Resolution.Hour, Field.Close) #~similar to the current price self.SetWarmUp(timedelta(300)) self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen('SPY', 30), self.Collect30) self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen('SPY', 31), self.Collect31) def Collect30(self): self.Log('-----30 minutes after open-----') self.Log('{:^20}\t{:^20}\t{:^15}\t{:^10}\t{:^10}'.format('self.Time', 'Current.Time', 'name', 'value', 'short name')) self.DataCollect(30) def Collect31(self): self.Log('-31 minutes after open-') self.DataCollect(31) def DataCollect(self, minute_delay): self.m_delay = minute_delay for ticker in self.secs: avLow220 = self.Low220[ticker].Current.Value avHigh220 = self.High220[ticker].Current.Value avClose220 = self.Close220[ticker].Current.Value #self.myLog(f'{ticker}_avLow220', avLow220, self.Low220[ticker].Current.Time) #self.myLog(f'{ticker}_avHigh220', avHigh220, self.High220[ticker].Current.Time) #self.myLog(f'{ticker}_avClose220', avClose220, self.Close220[ticker].Current.Time) self.myLog(f'{ticker}_low5_sma', self.Low5[ticker].Current.Value, self.Low5[ticker].Current.Time) self.myLog(f'{ticker}_high5_sma', self.High5[ticker].Current.Value, self.High5[ticker].Current.Time) self.myLog(f'{ticker}_close5_sma', self.Close5[ticker].Current.Value, self.Close5[ticker].Current.Time) #self.myLog(f'{ticker}_today_low', self.today_low[ticker].Current.Value, self.today_low[ticker].Current.Time) #self.myLog(f'{ticker}_today_high', self.today_high[ticker].Current.Value, self.today_high[ticker].Current.Time) #self.myLog(f'{ticker}_today_close', self.today_close[ticker].Current.Value, self.today_close[ticker].Current.Time) #self.myLog(f'{ticker}_today_price_now', self.stocks[ticker].Price, self.stocks[ticker].LocalTime) self.Debug("TimeZone: " + str(self.TimeZone)) def myLog(self, text, number,special_time): formated_number = format(float(number), '.2f') #for better reading short_text = "{:.3}".format(text) #n ='0'*(5-len(toLog)) + toLog #self.Global_log += f'{self.Time} {text}: {n} \n' #self.Global_log += f'{self.Time}\t{text}\t{n}\t{short_text}\tbcktest\n' self.Log(f'\t{self.Time}\t{special_time}\t{text}\t{formated_number}\t{short_text}\tbcktest2_{self.m_delay}') #self.Log(f'\t{self.Time}\t{text}\t{formated_number}\t{short_text}\tbcktest2\n')