Optimizations slows down with GetExternalSymbol when internet is on
Author: giorgos
Creation Date: 11/21/2017 3:33 PM
profile picture

giorgos

#1
Optimizing strategies that use"GetExternalSymbol" are running much slower than before especially when the internet is on.

I can speed things up if I disconnect my computer from the internet but is there another way to force the system not to look for data externally when its on the hard drive? Or anything else I can do to speed optimizations up?
profile picture

Eugene

#2
Make sure the DataSet is up to date and turn off on-demand updates in the Data Manager.
profile picture

giorgos

#3
Thanks this works.
profile picture

Eugene

#4
Good to hear that.
profile picture

superticker

#5
QUOTE:
Optimizing strategies that use"GetExternalSymbol" are running much slower ...

Either statement below will cause optimization to become 6.5 times slower on WLD, but not WLP.
CODE:
Please log in to see this code.

QUOTE:
Make sure the DataSet is up to date and turn off on-demand updates in the Data Manager.
That does indeed alleviate the problem. But please explain why this slow behavior is only problem under WLD and not WLP?

Could WLD be built like WLP so it's never a problem?
profile picture

Eugene

#6
You should not use the ExternalSymbol for reason explained in the online user guide. It uses Reflection internally to help fill the gap for drag and drop indicators that cannot chart an external symbol's DataSeries.

I will not explain something I do not believe in and won't be able to reproduce but creating a DataSet with the external symbol, keeping it up to date and disabling on demand updates guarantees that your backtest's fastest speed.
profile picture

kazuna

#7
QUOTE:
Either statement below will cause optimization to become 6.5 times slower on WLD, but not WLP.
Probably the same root cause as I reported earlier if you are using IQFeed as the data provider.
https://www.wealth-lab.com/Forum/Posts/IQFeed-data-provider-runs-backtest-slower-than-Fidelity-data-provider-40234

QUOTE:
creating a DataSet with the external symbol, keeping it up to date and disabling on demand updates guarantees that your backtest's fastest speed.
I have been doing so exactly and I have even implemented a code to cache the external data in order to minimize the GetExternalSymbol calls, however, WLD(IQFeed) runs slower than WLP(Fidelity) consistently (order of 1.5x to 3x).
profile picture

Eugene

#8
@kazuna

Look, ^GSPC is a Yahoo symbol. The Yahoo provider cannot be "slowed down" by the the Market Manager because it doesn't implement it. And it's limited to Daily data only. So no, here it's simple: the ExternalSymbol shouldn't be used and the data has to exist in an updated DataSet.
profile picture

superticker

#9
QUOTE:
You should not use the ExternalSymbol for reason explained in the online user guide. It uses Reflection internally ...
A further discussion about this issue is continued at Get external symbol in a formal indicator without speed penalty
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).