3838from observers .SkinokObserver import SkinokObserver
3939from wallet import Wallet
4040
41+
42+
4143class Controller :
4244
4345 def __init__ (self ):
@@ -64,6 +66,9 @@ def __init__(self):
6466 # Once everything is created, initialize data
6567 self .interface .initialize ()
6668
69+ # Timeframes
70+ self .timeFrameIndex = {"M1" : 0 , "M5" : 10 , "M15" : 20 , "M30" : 30 , "H1" :40 , "H4" :50 , "D" :60 , "W" :70 }
71+
6772 pass
6873
6974
@@ -127,12 +132,16 @@ def loadData(self, dataPath, datetimeFormat, separator):
127132
128133 return True , ""
129134
130- def importData (self , fileNamesOrdered ):
135+ def importData (self , fileNames ):
131136
132137 try :
138+
139+ # Sort data by timeframe
140+ # For cerebro, we need to add lower timeframes first
141+ fileNames .sort ( key = lambda x : self .timeFrameIndex [self .findTimeFrame (self .dataframes [x ])])
133142
134143 # Files should be loaded in the good order
135- for fileName in fileNamesOrdered :
144+ for fileName in fileNames :
136145
137146 df = self .dataframes [fileName ]
138147
@@ -145,7 +154,7 @@ def importData(self, fileNamesOrdered):
145154 # Add data to cerebro : only add data when all files have been selected for multi-timeframes
146155 self .cerebro .adddata (self .data ) # Add the data feed
147156
148- # find the time frame
157+ # Find timeframe
149158 timeframe = self .findTimeFrame (df )
150159
151160 # Create the chart window for the good timeframe (if it does not already exists?)
@@ -159,14 +168,16 @@ def importData(self, fileNamesOrdered):
159168
160169 return True
161170
171+ except AttributeError as e :
172+ print ("AttributeError error:" + str (e ))
173+ except KeyError as e :
174+ print ("KeyError error:" + str (e ))
162175 except :
163-
164176 print ("Unexpected error:" + str (sys .exc_info ()[0 ]))
165177 return False
166-
167178 pass
168179
169- def findTimeFrame (self ,df ):
180+ def findTimeFrame (self , df ):
170181
171182 if len (df .index ) > 2 :
172183 dtDiff = df .index [1 ] - df .index [0 ]
0 commit comments