Overall Statistics |
Total Trades 6204 Average Win 0.00% Average Loss 0.00% Compounding Annual Return -7.313% Drawdown 11.700% Expectancy -0.939 Net Profit -6.733% Sharpe Ratio -0.914 Loss Rate 94% Win Rate 6% Profit-Loss Ratio 0.09 Alpha -0.2 Beta 8.785 Annual Standard Deviation 0.064 Annual Variance 0.004 Information Ratio -1.164 Tracking Error 0.064 Treynor Ratio -0.007 Total Fees $0.00 |
from QuantConnect.Indicators import * from NodaTime import DateTimeZone 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 self.SetTimeZone(DateTimeZone.Utc) # 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 >= 22 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) else: if price_now <= self.Bolband.LowerBand.Current.Value: self.Liquidate("EURUSD") elif price_now >= self.Bolband_stop.UpperBand.Current.Value: 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 >= 22 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) # else: # if price_now >= self.Bolband.UpperBand.Current.Value: # self.Liquidate("EURUSD") # elif price_now <= self.Bolband_stop.LowerBand.Current.Value: # self.Liquidate("EURUSD")