Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 7.374% Drawdown 4.400% Expectancy 0 Net Profit 6.749% Sharpe Ratio 0.918 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.181 Beta -7.585 Annual Standard Deviation 0.064 Annual Variance 0.004 Information Ratio 0.669 Tracking Error 0.065 Treynor Ratio -0.008 Total Fees $0.00 |
from QuantConnect.Indicators import * import decimal as d class BollingerBreakoutAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2017, 6, 1) #Set Start Date self.SetEndDate(2018, 5, 1) #Set End Date self.SetCash(10000) #Set Strategy Cash self.SetBrokerageModel(BrokerageName.OandaBrokerage) self.eurusd = self.AddForex("EURUSD", Resolution.Minute).Symbol # create a bollinger band self.Bolband = self.BB("EURUSD", 21, 2, MovingAverageType.Simple, Resolution.Minute) # create a bollinger band of 4 std deviations for stop self.Bolband_stop = self.BB("EURUSD", 21, 6, MovingAverageType.Simple, Resolution.Minute) # set warmup period self.SetWarmUp(21) def OnData(self, data): holdings = self.Portfolio["EURUSD"].Quantity price = self.Securities["EURUSD"].Close price_now = self.Securities["EURUSD"].Price # If price closes above upper bollinger band then sell and close when price hits lower bollinger band or price hits the Upper band of the stop if self.Time.hour >=10 or self.Time.hour <= 8: #only trading between 10pm and 8am UTC if holdings <= 0: if price >= self.Bolband.UpperBand.Current.Value: self.SetHoldings("EURUSD", -1.0) if price_now <= self.Bolband.LowerBand.Current.Value: self.Liquidate("EURUSD") elif price_now >= self.Bolband_stop.UpperBand.Current.Value: self.Liquidate("EURUSD") elif self.Time.hour >= 9: self.Liquidate("EURUSD") # Buy if price closes below lower bollinger band then close when price hits lower bollinger band or price hits the stop if self.Time.hour >=10 or self.Time.hour <= 8: #only trading between 10pm and 8am UTC if holdings <= 0: if price <= self.Bolband.LowerBand.Current.Value: self.SetHoldings("EURUSD", 1.0) if price_now >= self.Bolband.UpperBand.Current.Value: self.Liquidate("EURUSD") elif price_now <= self.Bolband_stop.LowerBand.Current.Value: self.Liquidate("EURUSD") elif self.Time.hour >= 9: self.Liquidate("EURUSD")