Overall Statistics
Total Trades
270
Average Win
0.11%
Average Loss
-0.11%
Compounding Annual Return
0.335%
Drawdown
2.500%
Expectancy
0.013
Net Profit
0.177%
Sharpe Ratio
0.135
Probabilistic Sharpe Ratio
24.159%
Loss Rate
50%
Win Rate
50%
Profit-Loss Ratio
1.04
Alpha
0.009
Beta
-0.027
Annual Standard Deviation
0.022
Annual Variance
0
Information Ratio
-2.023
Tracking Error
0.119
Treynor Ratio
-0.109
Total Fees
$0.00
class OpeningRangeBreakout(QCAlgorithm):
    
    openingBar = None 
    
    def Initialize(self):
        self.SetStartDate(2019, 6, 1)
        self.SetEndDate(2019, 12, 10)
        self.SetCash(25000)
        self.AddForex("EURUSD", Resolution.Minute, Market.Oanda)
        self.Consolidate("EURUSD", timedelta(minutes=30), self.OnDataConsolidated)
        
        self.SetBrokerageModel(BrokerageName.OandaBrokerage)
        self.Schedule.On(self.DateRules.EveryDay("EURUSD"), self.TimeRules.At(13,30), self.ClosePositions)
        
    def OnData(self, data):
        if self.Portfolio.Invested or self.openingBar is None:
            return
        
        if data["EURUSD"].Close > self.openingBar.High:
            self.SetHoldings("EURUSD", 1)

        elif data["EURUSD"].Close < self.openingBar.Low:
            self.SetHoldings("EURUSD", -1)  
         
    def OnDataConsolidated(self, bar):
        if bar.Time.hour == 9 and bar.Time.minute == 30:
            self.openingBar = bar
    
    def ClosePositions(self):
        self.openingBar = None
        self.Liquidate("EURUSD")