Overall Statistics
Total Trades
512
Average Win
0.20%
Average Loss
-0.22%
Compounding Annual Return
-6.512%
Drawdown
7.700%
Expectancy
-0.116
Net Profit
-6.512%
Sharpe Ratio
-1.257
Loss Rate
54%
Win Rate
46%
Profit-Loss Ratio
0.92
Alpha
-0.046
Beta
0.009
Annual Standard Deviation
0.036
Annual Variance
0.001
Information Ratio
-0.68
Tracking Error
0.129
Treynor Ratio
-4.977
Total Fees
$0.00
class TokyoBreakout(QCAlgorithm):

    openingBar = None 
    
    def Initialize(self):
        
        self.SetStartDate(2018,6, 1)
        self.SetEndDate(2019,6,1)
        self.SetCash(1000)
        self.AddForex("USDJPY", Resolution.Hour, Market.Oanda)
        self.SetBrokerageModel(BrokerageName.OandaBrokerage)
        self.Consolidate("USDJPY", timedelta(hours=1), self.OnDataConsolidated)
        self.Schedule.On(self.DateRules.EveryDay("USDJPY"), self.TimeRules.At(13, 0), self.ClosePositions)
        
    def OnData(self, data):
        
        if self.Portfolio.Invested or self.openingBar is None:
            return
        
        if data["USDJPY"].Close > self.openingBar.High:
            self.MarketOrder("USDJPY", 1000)
            
        elif data["USDJPY"].Close < self.openingBar.Low:
            self.MarketOrder("USDJPY", -1000)
            
    def OnDataConsolidated(self, bar):
        
        if bar.Time.hour == 0 and bar.Time.minute == 0:
            self.openingBar = bar

    def ClosePositions(self):
        self.openingBar = None
        self.Liquidate("USDJPY")