Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe Ratio
0
Probabilistic Sharpe Ratio
0%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
6.29
Tracking Error
0.116
Treynor Ratio
0
Total Fees
$0.00
from datetime import timedelta
from QuantConnect.Indicators import CommodityChannelIndex, Stochastic
from QuantConnect.Data import Slice

class NotebookProject(QCAlgorithm):
    
    wti_thirtyMinute = None
    naturalgas_thirtyMinute = None
    gold_thirtyMinute = None
    
    wticcousd_symbol = "WTICOUSD"
    naturalgas_symbol = "NATGASUSD"
    gold_symbol = "XAUUSD"
    
    def Initialize(self):
        
        self.SetTimeZone("Europe/London")
        
        self.SetBrokerageModel(BrokerageName.OandaBrokerage)
        
        self.SetStartDate(datetime.now() - timedelta(2))  #Set Start Date
        self.SetEndDate(datetime.now())  #Set End Date
        
        self.wticousd = self.AddCfd("WTICOUSD", Resolution.Minute, Market.Oanda)
        self.gold = self.AddCfd("XAUUSD", Resolution.Minute, Market.Oanda)
        
        self.wticousd.SetDataNormalizationMode(DataNormalizationMode.Raw)
        self.gold.SetDataNormalizationMode(DataNormalizationMode.Raw)
        
        #WEST TEXAS
        thirtyMinuteConsolidator = QuoteBarConsolidator(timedelta(minutes=30))
        thirtyMinuteConsolidator.DataConsolidated += self.ThirtyMinuteQuoteBarHandler
        self.SubscriptionManager.AddConsolidator("WTICOUSD", thirtyMinuteConsolidator)
        
        #GOLD
        gold_thirtyMinuteConsolidator = QuoteBarConsolidator(timedelta(minutes=30))
        gold_thirtyMinuteConsolidator.DataConsolidated += self.gold_ThirtyMinuteQuoteBarHandler
        self.SubscriptionManager.AddConsolidator("XAUUSD", gold_thirtyMinuteConsolidator)
        
        self.sto_wti = Stochastic("WTICOUSD", 105, 21, 30) 
        self.cci_wti = CommodityChannelIndex("WTICOUSD", 200)
        
        self.sto_gold = Stochastic("XAUUSD", 172, 21, 95)
        self.cci_gold = CommodityChannelIndex("XAUUSD", 200)

        self.PlotIndicator("Indicator-WTICOUSD ", self.sto_wti.StochD)
        self.PlotIndicator("Indicator-CommodityChannelIndex_WTI ", self.cci_wti.TypicalPriceAverage)
        
        self.PlotIndicator("Indicator-XAUUSD ", self.sto_gold.StochD)
        self.PlotIndicator("Indicator-CommodityChannelIndex_GOLD", self.cci_gold.TypicalPriceAverage)
        
        self.SetWarmup((172+21+95)*30, Resolution.Minute) 
        
        self.logged = False
    
    def OnData(self, data):
        pass
        
    def ThirtyMinuteQuoteBarHandler(self, sender, consolidated):
        self.Plot("WarmingState", "IsWarmingUp", int(self.IsWarmingUp))
        
        self.sto_wti.Update(consolidated)
        self.cci_wti.Update(consolidated)
        
        sto_value_wti = self.sto_wti.StochD
        cci_value_wti = self.cci_wti.TypicalPriceAverage
        
        if self.IsWarmingUp:
            return 

        self.wti_thirtyMinute = consolidated
        
        
    def gold_ThirtyMinuteQuoteBarHandler(self, sender, consolidated):
        
        self.sto_gold.Update(consolidated)
        self.cci_gold.Update(consolidated)
        
        sto_value_gold = self.sto_gold.StochD
        cci_value_gold = self.cci_gold.TypicalPriceAverage
        
        if self.IsWarmingUp:
            return 
        
        self.gold_thirtyMinute = consolidated