Below i have attatched some code i found in one of Jareds posts which consolidates 30 minutes into 1 bar. I have 2 questions

1. Why am i unsuccesful in using the data from the bar i created in a loop to execute the buy order?

2. Is it possible to use consolidators accurately to create Montly or weekly timeframe data for forex?
 

from datetime import datetime, timedelta
class DataConsolidationAlgorithm(QCAlgorithm):

def Initialize(self):


self.SetStartDate(2017,1,1)
self.SetEndDate(datetime.now()) #Set End Date

self.AddForex("EURUSD", Resolution.Minute)

# define our 30 minute trade bar consolidator. we can
# access the 30 minute bar from the DataConsolidated events

Consolidator = QuoteBarConsolidator(timedelta(minutes=30))

# attach our event handler. The event handler is a function that will
# be called each time we produce a new consolidated piece of data.

Consolidator.DataConsolidated += self.MinuteBarHandler

# this call adds our 30-minute consolidator to
# the manager to receive updates from the engine

self.SubscriptionManager.AddConsolidator("EURUSD", Consolidator)

def MinuteBarHandler(self, sender, bar):

'''This is our event handler for our 30-minute trade bar defined above in Initialize(). So each time the consolidator
produces a new 30-minute bar, this function will be called automatically. The sender parameter will be the instance of
the IDataConsolidator that invoked the event '''
close = bar.Close
Open = bar.Open
high = bar.High
low = bar.Low

self.Debug(str(self.Time) + " " + str(close)+ " "+str(Open))



def OnData(self, data):
price = self.Securities["EURUSD"].Price
if 0 < high:
self.Buy("EURUSD",1000)