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)