How to update DataSet more frequently using Data Manager?
Author: cheers32
Creation Date: 11/27/2017 5:58 PM
profile picture

cheers32

#1
Hi, I noticed that when strategy monitor runs a strategy as scheduled, it does not update data cache file. Therefore, the strategy will run slower and slower after a while since it requires more data to load from online and eventually affected strategy execution performance.

I saw the Data Manager has an auto-update choice. It has a daily update time to choose. Is there anyway to do it more frequently? I think 15-min or even hourly interval will help a lot with the above mentioned use case.

Thanks!
profile picture

Eugene

#2
Hi,

As we figured out you need this to get 5-minute data updated to improve the St.Mon. data update performance as it does not save data from interval updates of 5-min time frame and less with the view to eliminate disk access delay. I don't think it's really possible but one workaround might be to come up with an AutoIT script (or a managed application) running on schedule. That script would find the DM window and send mouse click to the Update All / Update DataSet button. Why I don't think it's going to work out is that your activity inside the program may interfere with the script's instructions.

As long as reverse-engineering the Fidelity data is not concerned you might try an even easier workaround:

Trick to request scheduled data updates more than once a day?

Change "WealthLabDev" to "WealthLabPro" in the code. Hope this helps.
profile picture

cheers32

#3
Hi Eugene, this seems to be a good idea. I just tried the code from your post but got an exception because msg were never assigned. But I don't see a proper class to assign for this "msg". Do you know how to solve it?

System.NullReferenceException: Object reference not set to an instance of an object.
at WealthLab.DataProviders.FidelityStaticProvider.UpdateDataSource(DataSource ds, IDataUpdateMessage dataUpdateMsg)
at WealthLab.Strategies.UpdateAllDatasets.Execute()
profile picture

cheers32

#4
I just figured I can implement a simple class for this interface. Thanks a lot for providing guidance.
profile picture

Eugene

#5
Just checked and the code works for me as is.
profile picture

cheers32

#6
Hi Eugene, yes this approach works for me. I just found out a small issue when looking at the log. It says "cannot determine user type, and set data as delayed". I didn't think it was an issue at the beginning, but I did see that the data retrieved is delayed about 15 mins. Do you think I missed any attribute setting so that it becomes delayed data?

I thought it could be caused by login, but I'm not very sure about it and even if it is, I cannot re-enter my login credentials every few hours.

Do you have any idea? Thank you.
profile picture

Eugene

#7
The delayed data makes me think of the only reason: I think you don't have the WLP entitlement at Fidelity or may have an issue with it.
profile picture

cheers32

#8
Oh, I can stream data by clicking the "Stream" button from my WLP application in real time. Could you check if there's any WLP entitlement issue with my Wealth Lab access? Also, what is the time interval required for re-entering password for live data?
profile picture

Eugene

#9
QUOTE:
Could you check if there's any WLP entitlement issue with my Wealth Lab access?

Sorry but we aren't Fidelity so it's up to you to contact your Fidelity rep. However, if Streaming is running fine and you can update the Fidelity fundamental data it should be fine. It's probably not the reason.

Please keep in mind that what I've pointed you to is a completely unsupported "hack". I've got no further suggestions here for you. I don't even have Wealth-Lab Pro installed and my code works for me in WLD.
profile picture

cheers32

#10
Hi Eugene,

I called Fidelity but they were not able to support this issue. However, I think I know where the issue was for delayed data.

In your code example:
CODE:
Please log in to see this code.


The data source manager was newly created instead of being retrieved from a WLP instance, so it doesn't carry user login status, which resulted in delayed data. I understand you may not able to help with this issue further, but this is my finding and it seems the this issue can be solved by providing login status to data source manager.
profile picture

Eugene

#11
Hi,

While I cannot confirm whether it's true or not, your educated guess makes sense. From a technical standpoint, retrieving the DSM from a WLP instance might be possible via System.Reflection.

P.S.
QUOTE:
I called Fidelity but they were not able to support this issue.

That's right. Please count them out for unsupported hacks like this. I just suggested that you might want to call Fidelity to check your WLP entitlement (for what it's worth).