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 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 |
import numpy as np import pandas as pd import talib as tb class UnfilledGap(QCAlgorithm): stopMarketTicket = None StopPrice = 0 MarketTicket = None def Initialize(self): self.SetStartDate(2019, 1, 1) self.SetEndDate(2019, 8, 30) self.SetCash(100000) self.AddEquity("KEYS", Resolution.Minute) OneDayATR = self.ATR("KEYS", 1, MovingAverageType.Simple, Resolution.Daily) OneDayATR.Updated += self.ATRUpdated self.ATRWindow = RollingWindow[IndicatorDataPoint](5) self.Window = RollingWindow[TradeBar](5) self.SetWarmup(20, Resolution.Daily) def ATRUpdated(self, sender, updated): self.ATRWindow.Add(updated) def TradeBarHandler(self, TradeBar): self.Window.Add(TradeBar); def OnData(self, data): if not self.Window.IsReady and not self.ATRWindow.IsReady: return TwentyDayATR = self.ATR("KEYS", 20, MovingAverageType.Simple, Resolution.Daily) if not TwentyDayATR.IsReady: return Volume = self.History("KEYS", 20, Resolution.Daily).Volume AverageVolume = np.average(Volume) if not self.keys.Invested: if self.ATRWindow[0].Value > TwentyDayATR.Value and self.Securities["KEYS"].Volume > AverageVolume.Value and self.Securities["KEYS"].Price > self.Window[0].High: self.MarketTicket = self.MarketOrder("KEYS", 100, True, '1st day') self.StopMarketTicket = self.StopMarketOrder("KEYS", -100, self.Window[0].Low, 'Stop Order') if self.ATRWindow[1].Value > TwentyDayATR.Value and self.Securities["KEYS"].Volume > AverageVolume.Value and self.Securities["KEYS"].Price > self.Window[0].High: self.MarketTicket = self.MarketOrder("KEYS", 100, True, '2nd day') self.StopMarketTicket = self.StopMarketOrder("KEYS", -100, self.Window[0].Low, 'Stop Order') if self.ATRWindow[2].Value > TwentyDayATR.Value and self.Securities["KEYS"].Volume > AverageVolume.Value and self.Securities["KEYS"].Price > self.Window[0].High: self.MarketTicket = self.MarketOrder("KEYS", 100, True, '3rd day') self.StopMarketTicket = self.StopMarketOrder("KEYS", -100, self.Window[0].Low, 'Stop Order') else: if self.Window[0].Low > self.Window[1].Low: self.StopPrice = self.Window[0].Low UpdateFields = UpdateOrderFields() UpdateFields.StopPrice = self.StopPrice self.stopMarketTicket.Update(UpdateFields) self.Log(AverageVolume)