qbit9
10-03-2007, 01:34 AM
Hi, I've been trying to do some multi-time frame analysis and have been seeing some strange things.
I have set up a strategy with a primary time frame of 60 seconds, and I add a second time frame of 120 seconds in Strategy.Initialize(). Also in Strategy.Initialize() I add two instances of my custom indicator (I use a different parameter value to get two instances; the parameter value also serves is an instance id: i.e. 0 for the primary time frame, and 1 for the secondary). Then in Strategy.OnBarUpdate(), I Print() the bar number as well as the instance id. Intuitively, for every 2 prints from time frame 0, there should be 1 print from time frame 1. But after a while it seems as though the two time frames get out of sync as the following clip from the Output window seems to demonstrate:
Bar: 375. Computing AdamaDiff for DataSeries: 1 <-- Shouldn't this bar
Bar: 727. Computing AdamaDiff for DataSeries: 0
Bar: 376. Computing AdamaDiff for DataSeries: 1
Bar: 728. Computing AdamaDiff for DataSeries: 0
Bar: 377. Computing AdamaDiff for DataSeries: 1
Bar: 729. Computing AdamaDiff for DataSeries: 0
Bar: 378. Computing AdamaDiff for DataSeries: 1
Bar: 730. Computing AdamaDiff for DataSeries: 0
Bar: 379. Computing AdamaDiff for DataSeries: 1
Bar: 731. Computing AdamaDiff for DataSeries: 0
Bar: 380. Computing AdamaDiff for DataSeries: 1
Bar: 732. Computing AdamaDiff for DataSeries: 0
Bar: 733. Computing AdamaDiff for DataSeries: 0
Bar: 381. Computing AdamaDiff for DataSeries: 1
Bar: 734. Computing AdamaDiff for DataSeries: 0
Bar: 735. Computing AdamaDiff for DataSeries: 0
Bar: 382. Computing AdamaDiff for DataSeries: 1
Bar: 736. Computing AdamaDiff for DataSeries: 0
Bar: 383. Computing AdamaDiff for DataSeries: 1
Bar: 737. Computing AdamaDiff for DataSeries: 0
Bar: 738. Computing AdamaDiff for DataSeries: 0
Bar: 384. Computing AdamaDiff for DataSeries: 1
Bar: 739. Computing AdamaDiff for DataSeries: 0
Bar: 740. Computing AdamaDiff for DataSeries: 0
Bar: 385. Computing AdamaDiff for DataSeries: 1
Bar: 741. Computing AdamaDiff for DataSeries: 0
Bar: 386. Computing AdamaDiff for DataSeries: 1
Bar: 742. Computing AdamaDiff for DataSeries: 0
Bar: 387. Computing AdamaDiff for DataSeries: 1
Bar: 743. Computing AdamaDiff for DataSeries: 0
Bar: 744. Computing AdamaDiff for DataSeries: 0
Bar: 388. Computing AdamaDiff for DataSeries: 1
Bar: 745. Computing AdamaDiff for DataSeries: 0
Bar: 746. Computing AdamaDiff for DataSeries: 0
Bar: 389. Computing AdamaDiff for DataSeries: 1
Bar: 747. Computing AdamaDiff for DataSeries: 0
Bar: 748. Computing AdamaDiff for DataSeries: 0
Bar: 390. Computing AdamaDiff for DataSeries: 1
Bar: 749. Computing AdamaDiff for DataSeries: 0
Bar: 750. Computing AdamaDiff for DataSeries: 0 <-- be in this vicinity?
Is this because NT's UI operates in a separate thread such that outputs from Print() are somehow being blocked so it only LOOKS like there is a synchronization problem? Or could there ACTUALLY be a synchronization problem?
I have set up a strategy with a primary time frame of 60 seconds, and I add a second time frame of 120 seconds in Strategy.Initialize(). Also in Strategy.Initialize() I add two instances of my custom indicator (I use a different parameter value to get two instances; the parameter value also serves is an instance id: i.e. 0 for the primary time frame, and 1 for the secondary). Then in Strategy.OnBarUpdate(), I Print() the bar number as well as the instance id. Intuitively, for every 2 prints from time frame 0, there should be 1 print from time frame 1. But after a while it seems as though the two time frames get out of sync as the following clip from the Output window seems to demonstrate:
Bar: 375. Computing AdamaDiff for DataSeries: 1 <-- Shouldn't this bar
Bar: 727. Computing AdamaDiff for DataSeries: 0
Bar: 376. Computing AdamaDiff for DataSeries: 1
Bar: 728. Computing AdamaDiff for DataSeries: 0
Bar: 377. Computing AdamaDiff for DataSeries: 1
Bar: 729. Computing AdamaDiff for DataSeries: 0
Bar: 378. Computing AdamaDiff for DataSeries: 1
Bar: 730. Computing AdamaDiff for DataSeries: 0
Bar: 379. Computing AdamaDiff for DataSeries: 1
Bar: 731. Computing AdamaDiff for DataSeries: 0
Bar: 380. Computing AdamaDiff for DataSeries: 1
Bar: 732. Computing AdamaDiff for DataSeries: 0
Bar: 733. Computing AdamaDiff for DataSeries: 0
Bar: 381. Computing AdamaDiff for DataSeries: 1
Bar: 734. Computing AdamaDiff for DataSeries: 0
Bar: 735. Computing AdamaDiff for DataSeries: 0
Bar: 382. Computing AdamaDiff for DataSeries: 1
Bar: 736. Computing AdamaDiff for DataSeries: 0
Bar: 383. Computing AdamaDiff for DataSeries: 1
Bar: 737. Computing AdamaDiff for DataSeries: 0
Bar: 738. Computing AdamaDiff for DataSeries: 0
Bar: 384. Computing AdamaDiff for DataSeries: 1
Bar: 739. Computing AdamaDiff for DataSeries: 0
Bar: 740. Computing AdamaDiff for DataSeries: 0
Bar: 385. Computing AdamaDiff for DataSeries: 1
Bar: 741. Computing AdamaDiff for DataSeries: 0
Bar: 386. Computing AdamaDiff for DataSeries: 1
Bar: 742. Computing AdamaDiff for DataSeries: 0
Bar: 387. Computing AdamaDiff for DataSeries: 1
Bar: 743. Computing AdamaDiff for DataSeries: 0
Bar: 744. Computing AdamaDiff for DataSeries: 0
Bar: 388. Computing AdamaDiff for DataSeries: 1
Bar: 745. Computing AdamaDiff for DataSeries: 0
Bar: 746. Computing AdamaDiff for DataSeries: 0
Bar: 389. Computing AdamaDiff for DataSeries: 1
Bar: 747. Computing AdamaDiff for DataSeries: 0
Bar: 748. Computing AdamaDiff for DataSeries: 0
Bar: 390. Computing AdamaDiff for DataSeries: 1
Bar: 749. Computing AdamaDiff for DataSeries: 0
Bar: 750. Computing AdamaDiff for DataSeries: 0 <-- be in this vicinity?
Is this because NT's UI operates in a separate thread such that outputs from Print() are somehow being blocked so it only LOOKS like there is a synchronization problem? Or could there ACTUALLY be a synchronization problem?