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
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$0.00
from clr import AddReference
AddReference("System")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Indicators")
AddReference("QuantConnect.Common")

from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Indicators import *
from datetime import datetime
import math


class MACDTrendAlgorithm(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.'''

        self.SetStartDate(2020, 6, 23)    #Set Start Date
        self.SetEndDate(2020, 6, 23)      #Set End Date
        self.SetCash(100000)             #Set Strategy Cash
        self.MySymbol = "EURUSD"
        self.AddForex(self.MySymbol, Resolution.Minute)
        self.Trade = False
        self.TheHigh = []
        self.AtrLength = 22
        self.AtrIndicator = self.ATR(self.MySymbol, self.AtrLength)
        self.MinAtr = 0
        self.TimeFrame = 15 #15 minute bars 
        self.SetWarmup(100)
        #I got this from: https://www.quantconnect.com/docs/algorithm-reference/consolidating-data
        self.RegisterIndicator(self.MySymbol, self.AtrIndicator, timedelta(minutes=self.TimeFrame))
        self.Consolidate(self.MySymbol, timedelta(minutes=self.TimeFrame), self.MinuteBarHandler)
        
        #self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.At(8,45), self.GettingHigh)
        self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.At(9,00), self.TradingTime)
        self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.At(9,46), self.TradingTimeEnd)
    

    def TradingTime(self):
        self.Trade = True
        self.GetHigh = True
        
    def TradingTimeEnd(self):
        self.Trade = False
        self.GetHigh = False
    
    def OnData(self, data):
        
        if self.Trade: 
            self.TheHigh.insert(0,self.Securities[self.MySymbol].High)
            if len(self.TheHigh) == 15: self.TheHigh.pop(14)
            self.Log("at: {0}".format(self.Time) + " Minute ATR: " + str(self.AtrIndicator.Current.Value))
            self.Log("at: {0}".format(self.Time) + " Minute High " + str(self.Securities[self.MySymbol].High))
    
    def MinuteBarHandler(self, consolidated):
        if self.Trade: 
            self.Log("at: {0}".format(self.Time) + " 15 Minute ATR: " + str(self.AtrIndicator.Current.Value))
            self.Log("at: {0}".format(self.Time) + " 15 Minute High " + str(self.Securities[self.MySymbol].High))
            if len(self.TheHigh) == 14: self.Log("                        ARRAY - Minute High is: " + str(max(self.TheHigh)))