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
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$0.00
import numpy as np
import decimal as d
from datetime import timedelta

### <summary>
### Strategy for short and long based on IchiMoku Senkou Span A and Span B.
### </summary>
class DCAlgorithm(QCAlgorithm):

    def Initialize(self):
        '''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''
        
        # ==== Date and Equity Settings ====
        self.SetStartDate(2018,10, 10)  #Set Start Date
        self.SetEndDate(2018,10,25)    #Set End Date
        self.SetCash(100000)           #Set Strategy Cash
    
        # ==== System Inputs ====
        self.dtl = d.Decimal(0.001)
        self.dts = d.Decimal(-0.001)
        self.symbol = "USDCAD"
        self.LongPos = 1.0
        self.ShortPos = -1.0
        self.SetBenchmark(self.symbol)
        
        # ==== Equities Data Structure ====
        # Find more symbols here: http://quantconnect.com/data
        #self.AddEquity(self.symbol, Resolution.Hour)
        #self.Debug("numpy test >>> print numpy.pi: " + str(np.pi))
        
        # ==== Forex data structure ====
        #self.AddForex(self.symbol, Resolution.Hour, Market.Oanda)
        self.AddForex(self.symbol, Resolution.Hour, Market.Oanda)
        #self.forex.SetDataNormalizationMode(DataNormalizationMode.SplitAdjusted)
        #self.SetBrokerageModel(BrokerageName.OandaBrokerage)
        
        self.consolidator = QuoteBarConsolidator(timedelta(1))
        
        self.Schedule.On(self.DateRules.EveryDay("USDCAD"), self.TimeRules.At(1, 0, TimeZones.Utc), self.OnDailyData);
        
        # ==== Set Up Rolling Window ====
        self.window = RollingWindow[QuoteBar](2)
        
    # Add daily bar to daily rolling window
    def OnDailyData(self):
        self.window.Add(self.consolidator.WorkingData)
        self.consolidator = QuoteBarConsolidator(timedelta(1))
     
    def OnData(self, data):
        '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.

        Arguments:
            data: Slice object keyed by symbol containing the stock data
        '''

        self.consolidator.Update(data["USDCAD"])
        if not (self.window.IsReady): return
        
        currBar = self.window[0]                    # Current bar had index zero.
        pastBar = self.window[1]                     # Past bar has index one.
        self.Log("Price: {0} -> {1} ... {2} -> {3}".format(pastBar.Time, pastBar.Close, currBar.Time, currBar.Close))
        
        difference = currBar.Close - pastBar.Close
        self.dc = difference/currBar.Close
        #self.Log(self.dc)
        
        self.Plot("dailycandle", "dc", self.dc)