| 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
from datetime import datetime
class BasicTemplateAlgorithm(QCAlgorithm):
'''Basic template algorithm simply initializes the date range and cash'''
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.'''
self.symbols = ["EURUSD","EURAUD","GBPUSD","AUDUSD"]
self.SetStartDate(2016, 1, 1) #Set Start Date
self.SetEndDate(2018, 6, 1) #Set End Date
self.SetCash(25000) #Set Strategy Cash
self.forex = self.AddForex(self.symbols[0], Resolution.Minute, Market.FXCM)
self.SetBrokerageModel(BrokerageName.FxcmBrokerage)
self.SetWarmup(100)
# Trade 15m and 240m timeframes
consolidator_15 = QuoteBarConsolidator(15)
self.SubscriptionManager.AddConsolidator(self.symbols[0], consolidator_15)
consolidator_240 = QuoteBarConsolidator(240)
self.SubscriptionManager.AddConsolidator(self.symbols[0], consolidator_240)
# Initiatialize indicators
self._macd = MovingAverageConvergenceDivergence(self.symbols[0], 12, 26, 9, MovingAverageType.Exponential)
self._macdTrend = MovingAverageConvergenceDivergence(self.symbols[0], 12, 26, 9, MovingAverageType.Exponential)
self.RegisterIndicator(self.symbols[0], self._macd, consolidator_15)
self.RegisterIndicator(self.symbols[0], self._macdTrend, consolidator_240)
self._macdTrend.Updated += self.MacdUpdated
self._macdWindow = RollingWindow[IndicatorDataPoint](3)
self.__previous = datetime.min
def OnData(self, data):
if self.IsWarmingUp: return
# only once per day
if self.__previous.date() == self.Time.date(): return
# wait for our macd to fully initialize
if not ( self._macd.IsReady and self._macdTrend.IsReady) : return
self._macdTrend.Previous = self._macdWindow[1]
#self.Debug(self._macd.Current.Value)
#self.Debug(self._macdTrend.Previous.Value)
#self.Debug(self._macdTrend)
# Problem code here on self._macdTrend.Previous
if (self._macdTrend.Current.Value > 0) and (self._macd.Current.Value > self._macdTrend.Previous.Value):
trendMACDUp = True
else:
trendMACDUp = False
self.Debug(str(trendMACDUp))
self.__previous = self.Time
def MacdUpdated(self, sender, updated):
self._macdWindow.Add(updated)