I'm working on building a python class structure that makes it easier to swap out strategies and risk models while using multi-timeFrames techniques. I've been off in my own code world for a few months, and I came back and went to run it and hit an Attribute error I'm unfamiliar with. 

During the algorithm initialization, the following exception has occurred: AttributeError : 'ForexHolding' object has no attribute 'TotalMargin' at Initialize in main.py:line 39 at __init__ in SymbolBox.py:line 37 at __init__ in TradeManagment.py:line 13 :: self.TotalMargin = self.symbol.TotalMargin /5 AttributeError : 'ForexHolding' object has no attribute 'TotalMargin'

 

I found these two links, but I'm still having a hard time seeing which classes I should be indexing through/ what part of the API I'm incorrectly calling. 

https://www.quantconnect.com/lean/documentation/topic27440.html

https://www.quantconnect.com/lean/documentation/topic26941.html

It centers around the QC portfolio. The code below is going to be slightly broken up, I'm including the code in each class that produces the error. It's during __init__ so the rest of the code seems unecessary. 

    class Main

        self.symbols = ['EURUSD','NZDUSD']

        for i in self.symbols:

            sym = self.AddSecurity(SecurityType.Forex, i, Resolution.Hour,leverage= 100).Symbol
            self.allTicks[sym] = SymbolBox(i, sym, self.timeFrames, self)

 

    class SymbolBox

        def __init__(self, symbol,sym, timeFrames, QCAlgorithm):

            '''
            inits all variables and classes needed by each symbol to trade.
            Handles all day for each Symbol inside its' respecive class.
            '''

            self.tick = symbol
            self.s = sym
            self.algo = QCAlgorithm
            self.symbol = QCAlgorithm.Portfolio[sym]
    

            self.TM = TradeManagment(QCAlgorithm,sym)

 

    class TradeManagment

        def __init__(self,QcAlgo,symbol):

            self.algo = QcAlgo
            self.symbol = QcAlgo.Portfolio[symbol]
            #symbol is pulling only the string, not the class. Need to decide how to place
            self.TotalMargin = self.symbol.TotalMargin /5
 

My leading theory so far is that when I call self.AddSecurity().Symbol in main I'm pulling out and storing one call too deep into the class and getting the wrong variable?

        

        

Author