GetExternalSymbol in Strategy Monitor
Author: Shaaker
Creation Date: 8/27/2012 9:54 AM
profile picture

Shaaker

#1
In Strategy Monitor I run a strategy on several datasets each with 30 symbols and 1-minute scale. Now after modifying the strategy by adding GetExternalSymbol to request data for the index .SPX S. Monitor updates take much longer (more than a minute vs. 20~30 seconds before) as it seems that the number of data requests has doubled. Is there any method to request the .SPX only once during updates?
profile picture

Eugene

#2
Add .SPX to a 1-min DataSet, disable on-demand data updates, have the symbol's data updated.
profile picture

Shaaker

#3
I already have .SPX in a separate 1-min DataSet and each morning before opening the S. Monitor I update it to the end of the prior day. Is it the GetExternalSymbol that sends the intraday data request? If so, then it means that at the end of each 1minute interval S. Monitor sends 30*8=240 (symbol per DataSet*number of DataSets in S. Monitor) data update request for .SPX in addition to 240 requests for the symbols. If the logic is correct here, my question was how to reduce that 240requests of .SPX to only 1. Thanks

PS on-demand update is always disabled.
profile picture

Eugene

#4
What does that mean, "to reduce to 1"? Each of the 8 strategies, all being entities, naturally have to process the .SPX independently. Anyway, let's not jump the gun with far-reaching conclusions about the nuts & bolts of Wealth-Lab.

1. How much data are your strategies loading?
2. What precisely are you doing with GetExternalSymbol and its resulting DataSeries in the code? Since a script inefficiency can considerably slow it down, have you measured the time it took to run the script before the modification and after?
3. How did you exactly determine that the number of data requests has doubled?
4. What do the Strategy Monitor logs show? (Strategy Monitor > Strategy Pane > right-click > Enable/Disable/View Log)



profile picture

Shaaker

#5
I was thinking of something like one-time uploading .SPX in global memory to which all strategies would have access.

1. 10 bars, cause I only need the price action from beginning of the day
2. very simple stuff, like finding the close of each bar.
3. It was a thought, since the strategies were not able to finish updating by the end of 1minute interval, the number of symbols pending update never got to zero. (for example: actual time was 9:38AM when Last Run was 9:32AM and Next Run was 9:33AM) This does not happen with the similar strategy which does not have GetExternalSymbol
4. I'll find it out tomorrow and let you know.
profile picture

Cone

#6
Accessing a secondary series in the S. Monitor or Streaming Window will result in an extra round trip request from a historical server. That's too much overhead if you have to do it more than a few times.

The best way I can think to get around this is to run a streaming strategy for .SPX that writes the data or DataSeries to global memory using SetGlobal. Retrieve the data in the script(s) running in the S. Monitor with GetGlobal.

This should work because the streaming window will update very near the end of interval before the S. Monitor even sends out requests. (And, it should work in 6.4 too since it will take the server at least 2 seconds to send the S. Monitor the bar updates.)
profile picture

Shaaker

#7
Tried it and it works. Thanks
This website uses cookies to improve your experience. We'll assume you're ok with that, but you can opt-out if you wish (Read more).