Overall Statistics
Total Trades
515
Average Win
0.24%
Average Loss
-0.24%
Compounding Annual Return
-3.011%
Drawdown
6.100%
Expectancy
-0.056
Net Profit
-3.011%
Sharpe Ratio
-0.343
Loss Rate
53%
Win Rate
47%
Profit-Loss Ratio
1.00
Alpha
-0.019
Beta
-0.002
Annual Standard Deviation
0.057
Annual Variance
0.003
Information Ratio
-0.447
Tracking Error
0.138
Treynor Ratio
8.685
Total Fees
$0.00
class TokyoBreakout(QCAlgorithm):

    openingBar = None 
    check = True
    
    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(19, 0), self.ClosePositions)
        
    def OnData(self, data):
        
        if self.check == False or self.openingBar is None:
            return
        
        if data["USDJPY"].Price > self.openingBar.High:
            self.MarketOrder("USDJPY", 1000)
            self.check = False
            
        elif data["USDJPY"].Price < self.openingBar.Low:
            self.MarketOrder("USDJPY", -1000)
            self.check = False
            
    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")
        self.check = True