StaticDataProvider NamedSeries feature requests
Author: skaarr
Creation Date: 2/26/2013 9:54 AM
profile picture

skaarr

#1
Can two features, which I need to create NamedSeries only dataprovider be registered as feature request and added in 3-4 months plan?

Feature #1 description:
Create option in dataprovider (for example add property bool UseOnlyProviderData {get;}) – so wealth-lab read always data from data provider (without compressing on-the-fly). This not should crash something in other providers as option is new.

Feature #2 description:
Each data set in my case is connection to different database, with different markets data, so each database have own options, which I should read and cache before access to data. So I need read it in Initialize() and cache in dictionary and I need somehow identify DataSource to read cached options from cache dictionary. This can be DataSource.ID for example or something other.

Without this features I can't connect Wealth-Lab to my databases.
profile picture

Eugene

#2
QUOTE:
Each data set in my case is connection to different database, with different markets data, so each database have own options, which I should read and cache before access to data.

An immediate example comes to mind: the Watchlist provider reads and caches existing DataSets before returning the data. What makes your project special?

QUOTE:
(without compressing on-the-fly)

I see what you're after from our previous discussion, but compressing on-the-fly is an inherent behavior of the Wealth-Lab client. Turning it off on demand by data provider is bizarre. A data provider is always passed a correct DataSource/BarScale in the native bar scale. I don't see a limitation here, as all you have to do to return a correct NamedSeries is to operate in the native scale. To rephrase, creating a DataSet in each particular BarDataScale guarantees that you get the OHLCV+DataSeries in the native bar scale.
profile picture

skaarr

#3
QUOTE:
An immediate example comes to mind: the Watchlist provider reads and caches existing DataSets before returning the data. What makes your project special?

Not clear. Whan you mean when use "special"?

QUOTE:
I see what you're after from our previous discussion, but compressing on-the-fly is an inherent behavior of the Wealth-Lab client. Turning it off on demand by data provider is bizarre. A data provider is always passed a correct DataSource/BarScale in the native bar scale. I don't see a limitation here, as all you have to do to return a correct NamedSeries is to operate in the native scale. To rephrase, creating a DataSet in each particular BarDataScale guarantees that you get the OHLCV+DataSeries in the native bar scale.

Well, GUI can request any timeframe, but to dataprovider you pass only default. This means I always read wrong NamedSeries data. You really do not see limitation or this was joke? So I need neither block timeframes selection in wealth-lab or get in RequestData correct timeframe to read correct data. And your previous advise "tell your users not use other timeframes" was kidding.

As I see you mean the only one correct way exists to use your software, and this way OHLCV only? If I need something more complex than this, you are trying explain me I really don't need this, and for OHLCV all works fine.

Why write in this forum "Let us know what you want to make this your ultimate trading system development tool!" if you do not want make it better? May be only me need NamedSeries only data provider, in future someone else trying create it. You will repeat same "tell your users not use other timeframes"? Funny.
profile picture

Eugene

#4
QUOTE:
Not clear. Whan you mean when use "special"?

To rephrase: I was wondering why do you think the new property (whose application isn't clear to me) is required, when the AronowSoftware's provider successfully solves a strikingly similar problem using the built-in means? What is the motivation?

QUOTE:
Well, GUI can request any timeframe, but to dataprovider you pass only default.

You might want to give this method from Community Components a try: GetAllDataForSymbol. Being a wrapper for a Wealth-Lab's internal data request method, it should return the raw data for a given symbol if it exists in a given BarDataScale.

To determine the actual data scale, even if it's being compressed by Wealth-Lab, you can try a little Reflection:

CODE:
Please log in to see this code.


The BarDataScale will return the current BarScale e.g. 60-minute, even if the "DataSource ds" is 5-min.
profile picture

skaarr

#5
Okay, can you please add little more details? Do you have property like ActiveMdiChild? So I read active form barscale (not the first one)?
And do you have similar workaround for selected DataSet?

UPD: I found "MainForm" which is mdi container. So first question is resolved.

Can you confirm, this way return to WealthLab correct timeframe data doesn't break something inside?
profile picture

Eugene

#6
QUOTE:
And do you have similar workaround for selected DataSet?

Here I don't follow you. The "DataSource ds" is the selected DataSet. Assuming that RequestData is being called on a compressed bar scale (e.g. a 5 Minute DataSet > 60 Minute), what other property are you trying to reach?
profile picture

skaarr

#7
I mean if I can get current selected DataSet using Reflection, this means I can get it inside GetMarketInfo to read correct timezone for example and any other method inside static provider. And all things will works great.
profile picture

Eugene

#8
Your clarification doesn't really seem to clarify. Again, what's wrong with the "DataSource ds" as the selected DataSet?
profile picture

skaarr

#9
It present only inside few methods in StaticProvider. Other methods does not have it as argument, but have only symbol as argument. Previous your advise was "search this symbol in all available datasources". But if I can get current selected DataSource using reflection, I can read correct data from cache.
profile picture

skaarr

#10
For example, can I use in StaticProvider MainForm properties (BarDataScale, DataSource, Symbol) shown here:
profile picture

Eugene

#11
QUOTE:
It present only inside few methods in StaticProvider. Other methods does not have it as argument, but have only symbol as argument. Previous your advise was "search this symbol in all available datasources". But if I can get current selected DataSource using reflection, I can read correct data from cache.

When reflecting over the attributes of a ChartForm (e.g. BarDataScale), you have it - the Chart window. But situation is different with some properties like GetMarketInfo or SupportsDynamicUpdate which may be called by Wealth-Lab in other contexts: during startup phase (instantiation of your data provider), processing an on demand data request etc. The point is, a (real) DataSet may not necessarily exist at this point.
QUOTE:
For example, can I use in StaticProvider MainForm properties (BarDataScale, DataSource, Symbol) shown here:

Pretty sure you can:
CODE:
Please log in to see this code.

profile picture

skaarr

#12
Great! Thank you! Do you have any suggestions for this method?

CODE:
Please log in to see this code.


QUOTE:
The point is, a (real) DataSet may not necessarily exist at this point.

Okay, I'll take note of that.
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).