Developing my first DLL
Author: streak
Creation Date: 6/28/2011 12:59 AM
profile picture

streak

#1
Hi
Just trying to come to grips with C# after a long break from WLD4.

My first attempt is on setting up to develop scripts/strategies, with the
intention of reducing script via having some of it in dll(s).

I've been able to setup C#2010 debugging into WLD6.

However, the test I've made (per code below) does not behave how I
need. It creates a strategy dll that when opened runs the strategy.

At this stage I'm simply trying to make a dll that will make a number of
'functions' available like returning the underlying/base symbol in the guts
of the code below, so that when I click on a certain symbol (or when a
strategy runs over a watchlist) then the underlying symbol is returned.
Another example would be returning the minimum price move when/as a (bars)
price moves throughout various levels (eg the ASX has $0.001 for under 10c
and $0.010 when above $2).

Can see I have much to learn with C# basics (after having VB do it all in
the background), but would appreciate any help on making this work
appropriately, please.

CODE:
Please log in to see this code.
profile picture

Eugene

#2
What is the problem?
profile picture

streak

#3

Hi Eugene

Firstly thanks for your help in getting me this far, with the debugging via C#express.

The code above only works from one strategy (ie the dll itself). Maybe I should have mentioned that the code above is what's within the dll.

I'm looking to have a dll that can return 'functions' (ie C# methods) to any (new) script/strategy. I was understanding that the 'using' keyword would enable this.

So I must have something wrong in the class-constructor-static-method or likes.

thanks
profile picture

Eugene

#4
Then there's no error, you just need to study some .NET concepts.

The code above will certainly work within the scope of WLStrategies.jonmac. Considering that the visibility scope is public, you can even reference the assembly with a using directive, instantiate the method1 and call BaseSymbol.

However, it's more convenient to group such helper method in their own assembly and additionally mark the BaseSymbol as static to save on creating an instance of the class. (Just like the familiar Console.WriteLine or Math.Max work.) Check out this working example of a library of classes, functions, and methods --

Home - Community Components
profile picture

streak

#5

Thanks Eugene

That's exactly where I'm at now. Just downloaded the .wle Have had the source code for a few days but my amalgamated brain has been somersaulting with all the new C# concepts.

Things like 'instantiating' & 'static' are taking some getting used to, although I've been aware of instantiating' for some years - just never had to practise it - and now having to do so in a 'foreign' code.

Sorry, I'll just have to try and keep my head down.

profile picture

streak

#6

Sorry can't keep my head down... going round in circles trying to understand the code;

I cannot implement 'using Community.Components;' to learn how C# should come together.

In the code below I can uncomment the block with 'calc.GetWeekNumber' ( and comment out the block above with 'calc.isInsideDay' ) and all fires as expected.

However, when reversing the commenting, the 'calc.isInsideBar' block will not even compile;
"error CS1002@(20,42):;expected"

CODE:
Please log in to see this code.


thanks
profile picture

Cone

#7
Case (upper and lower) matters for everything in C#. In your code, you have "If" not "if".

Also, for example, Bar and bar would be two different variables. It's not allowed to be sloppy in C#!
profile picture

streak

#8

Ah, yes sloppy. Should know better - must have read that umpteen times.

However, it still will not compile;
"error CS0117 @ (20, 14): 'Community.Components.Calculate' does not contain a definition for 'inSidebar'

But, this method is inside the class Calculate;

CODE:
Please log in to see this code.


What else might I be doing wrong?
profile picture

Eugene

#9
There's some difference between inSidebar (incorrect) and isInsideBar (correct).

profile picture

streak

#10

Hmmm, another of my typo's.

The error msg did/does say 'isInsideBar'.
profile picture

Eugene

#11
QUOTE:
But, this method is inside the class Calculate;

No it is not.

Start up VS2010, hit Ctrl-W,J to open Object Browser, add WealthLab.Components.Community.dll. After expanding the Calculate class, do you still see "inInsideBar" there? No.

Hint: In the <Search> box, input insidebar (in lower case) and hit Enter. Now you see the class that contains the method.
profile picture

streak

#12

?



Uploaded with ImageShack.us

Is this not isInsideBar?
profile picture

Eugene

#13
Where did I say, "Open the old Community Components source code project in Visual Studio"?

The code is old (2011.02) while the latest version 2011.07 contains breaking changes. Furthermore, the up-to-date version's source code is not available for download yet (I'm considering some refactoring of the library).

So you're browsing an old version, and these methods are not in the same place where they used to be. Below is the change log line telling that these functions could no longer be found there:

6/22/2011 Changed: breaking change: pattern recognition functions grouped within the PatternRecognition class

This is why I told step by step what exactly to do so you could browse the actual library's structure, and find the answer on your own, and learn how to troubleshoot similar errors easily -- as opposed to giving out an instant answer which isn't as valuable in the long run.
profile picture

streak

#14

I apologise Eugene. Desperately trying to learn C# for WLD. The code itself is hard enough when for so long I've not really had to address classes, instantiating etc.

I had Community.Components open in VS when you posted. It would never have occurred to me that it was to explicitly not be the one I had open.

Guess I ran your instruction properly this time. I see isInsideBar is NOT there. Why was it removed?

So now I can understand my little test code was wrong in that I should not have been trying to learn C# for WLD from that file (& test what I figured should compile & run)?

Thanks (& hopefully I will get up to speed & save you some of these crazy postings)

profile picture

Eugene

#15
QUOTE:
I see isInsideBar is NOT there. Why was it removed?

Not removed, just moved elsewhere. For the purposes of refactoring the library, enhancing/evolving its class hierarchy. It has grown over the last three years due to many additions, but now the time has come for cutting out, regrouping, grouping related functions, and so on.

P.S. The postings are not crazy. We all was there at some point. Totally understandable. It might seem that we're not necessarily getting there instantly, and that's because my intention is rather about teaching to fish vs. simply giving you a fish.
profile picture

streak

#16

QUOTE:
about teaching to fish vs. simply giving you a fish


I've been a bit aware of that. And I appreciate it. From my end - the learning - it's one of the reasons I've gone about trying to get dll coding operative with VSexpress debugging etc, rather that just wading into translating all the WLD4 code and so on.

Just feel like I must be ozzing more gray hair at times, trying to output more than I've been studying.

... still haven't made the dll operate further than your 2nd post here, so guess there'll be more qu's sometime.

Thanks again
profile picture

Eugene

#17
QUOTE:
guess there'll be more qu's sometime.

Sure, fire away.
profile picture

streak

#18

LOL. I'm still thinkin
profile picture

streak

#19

Hi Eugene

from back at your suggestions date 6/28/2011 3:35 AM;

Made the BaseSymbol() static per the following;

CODE:
Please log in to see this code.


This works (properly) with the same end result when loading the strategy associated with the VC#express debugging solution assembly and (in particulr what appears to be) the 'Assembly Information: Description & GUID'.

However, when loading a new strategy from template, adding
CODE:
Please log in to see this code.
, compiling and then running, the dll does not seem to fire up (... also after saving & reopening).

What is missing in coding up a new strategy with the using directive to run the dll?

Thanks
Jon

profile picture

Eugene

#20
Start from here:

[LINK=http://www2.wealth-lab.com/WL5Wiki/kbFAQMisc.ashx]I created an indicator library, but it doesn't show up in Wealth-Lab 6
A library compiled for .NET 4.0 doesn't show up in Wealth-Lab 6[/LINK]
profile picture

streak

#21

Regarding link:
QUOTE:
I created an indicator library, but it doesn't show up in Wealth-Lab 6

The main folder has WLStrategies.jonmac.dll
Framework 2.0 is targeted in VC#2010
and this is the 'Helper' class;
CODE:
Please log in to see this code.



Regarding link:
QUOTE:
A library compiled for .NET 4.0 doesn't show up in Wealth-Lab 6


While I do not understand
QUOTE:
... consume a .NET 4.0 library in Wealth-Lab 6 ...
it now seems like it is not possible to build dll's in VS2010 that can be made run independently of some strategy in VS's source code (maybe to do with; 'Assembly Information: Description and/or GUID' ?).

So, after countless hours trying, where to go from here? :-

- are there other known .net4 dll's that can be copied into the main WLD folder?
- would I have to (if possible) load an earlier version of VS? If so would the VS2010 get corrupted (from memory they can run side-by-side, but I'm not sure).
- would it be preferable to load SharpDevelop (your Wiki article suggests v 2.2 which is now 5 years old and they are now up to 4.0). If so can the VS source code by simply copied over?

Thanks
Jon






profile picture

Eugene

#22
Jon,

As long as Framework .NET 2.0 is targeted, using VS2010 (SharpDevelop, VS2005, VS2008) is safe. My only concern was that.
QUOTE:
However, when loading a new strategy from template, adding

using WLStrategies.jonmac;

, compiling and then running, the dll does not seem to fire up (... also after saving & reopening).

Let's start with why do again you insist on using a compiled Strategy library for storing reusable methods? Please revisit my reply from 6/28/2011 3:35 AM.

Compiled Strategy libraries = for compiled strategies
Class libraries = for reusable classes, functions, and methods

Like Community.Components, as I already suggested above.
profile picture

streak

#23

Eugene

like I mentioned first up
QUOTE:
At this stage I'm simply trying to make a dll that will make a number of 'functions' available like returning the underlying/base symbol in the guts of the code below,
Other examples are numerous; like attaining the rice movement of a tick on the ASX (it's $0.001 under 10c Over 10c it's 0.005c over $2 its 0.01c), other variations of this like rounded return values for where back-adjusting has occurred, where the next movement is up or down, returning date ranges where stocks have traded or are trading in deferred mode, returning dates where a split or bonus was made, and so on.

To remove clutter.

I could have been sure I read, re transitioning from WLD4 that scripts, studies etc were all to come under the name 'strategies'? However, I have been noting that the 'functions', 'subs' (or C# 'methods') I've been trying to build are somewhat at a tangent to the majority of default strategy folders available.

So, no it's not a trading system dll I want to create just now. It's a function & method dll I'm trying to build.

Yes, have spent some time looking over Community.Components

Is the bottom line that I cannot build a 'class library' independently of Community.Components
profile picture

Eugene

#24
QUOTE:
Is the bottom line that I cannot build a 'class library' independently of Community.Components

If you agree with me that the C.Components library is fully functional for you, then I'd suggest to review your changes and how they differ from this working example.
profile picture

Eugene

#25
QUOTE:
I could have been sure I read, re transitioning from WLD4 that scripts, studies etc were all to come under the name 'strategies'? However, I have been noting that the 'functions', 'subs' (or C# 'methods') I've been trying to build are somewhat at a tangent to the majority of default strategy folders available.

It's all about C# classes. It's possible to group reusable methods in "strategy packs" but it's natural to do so using a class library.
QUOTE:
Is the bottom line that I cannot build a 'class library' independently of Community.Components

But what I see above is an attempt to leverage a strategy library as a class library.
profile picture

streak

#26

Eugene

I do not understand your suggestion
QUOTE:
If you agree with me that the C.Components library is fully functional for you, then I'd suggest to review your changes and how they differ from this working example.
Are you suggesting that I just use the C.Components dll?

Could you expand further on
QUOTE:
"strategy packs"
, please?

So, how do I build my own dll of
QUOTE:
group reusable methods in "strategy packs" but it's natural to do so using a class library.
?

Thanks
profile picture

Eugene

#27
QUOTE:
Are you suggesting that I just use the C.Components dll?

I am suggesting you to examine what's working and compare with what's not.
QUOTE:
So, how do I build my own dll of

Follow C.Components.
profile picture

streak

#28

Eugene

Are you suggesting by following the source code of C.Components I will be able to imitate a 'template' to be able to make a class library (as opposed to a strategy library)?

This is getting hard when I have not got to the bottom of why my code above will not run.

So, was that a 'yes' or 'no' to my earlier question;
Is the bottom line that I cannot build a 'class library' independently of Community.Components?

Thanks
Jon
profile picture

Eugene

#29
QUOTE:
Are you suggesting by following the source code of C.Components I will be able to imitate a 'template' to be able to make a class library (as opposed to a strategy library)?

Yes.
QUOTE:
Is the bottom line that I cannot build a 'class library' independently of Community.Components?

Sure you can.
profile picture

streak

#30

Eugene

Ok. Thanks. I'll sleep a bit better now - its 1 am here. So shall put my head down before looking more into how C.Components is put together. In the interim I remember VC#2010 converted C.Components 2011.02 on opening it. So is this likely to have modified any code that would throw drafting a 'template' from?

Thanks again
profile picture

Eugene

#31
Jon,

VS project conversion can be trusted, but it selects .NET 4.0 as target framework version.
profile picture

streak

#32

.... looking for the trail...

Found some some items in Community.Components (c.c) that I can only ask about (in terms of replicating a means of making a custom 'class' dll);

(1)
I noticed that the VS .net references in c.c are to those dlls in C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll whereas a new project in VS2010 makes the reference to a different location eg: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll. Forget the v 4.0 Am aware of that. Could this cause any concerns when building any dll's in VS ?

(2)
Among the VS project references there is reference to Fidelity.Components What is this required for? Can it make any difference to building a 'class' dll ?

(3)
In the c.c Utility.cs there are numerous 'using' statements. Some seem self explanatory (like using System.Net.Mail;. Could some of the others be required for building a 'class' dll ? Ones like; using System.IO; using System.Reflection; using System.Net; using System.Xml; using System.Globalization; For me to research this independently could take a 'lifetime', so to try and get ahead and make WLD work towards some income generation, I figure I can only ask the experts here. Meanwhile I can keep on learning and trying to understand general C#.


(4)
In VS Solution Explorer there is a Resources.resx and Resources.Designer.cs These appear to be related to making the c.c dll function within WLD. Is this so? The code comments mentions it as "auto-generated" and via a tool like ResGen or Visual Studio. Is this created via a WLD custom tool similar to the GUID custom tool? Could you elaborate on this Solution Explorer item, please? Here's an image...
[IMG]
Uploaded with ImageShack.us[/IMG]

Thanks
Jon
profile picture

Eugene

#33
#1 - C.Components can NOT reference a .NET 4.0 DLL b/c it was built in VS2008 for .NET 2.0. It's a result of VS2010 conversion.

#2 - It's a Wealth-Lab component. For what it's required, uncomment the using directive and try to compile.

#3 - They are required for methods/functions they depend on. Please refer to Google/MSDN/dotnetperls.com for more information, if you're into custom development.

#4 - Auto-generated by Visual Studio. Don't modify if you're unsure about this! For more Q&A, please refer to MSDN, Visual Studio documentation and/or books.
profile picture

streak

#34

Eugene

I was asking more specific questions, Specific to WLD. Not generic C# or .net, but very specifcally to
QUOTE:
replicating a means of making a custom 'class' dll
as per your suggestion of doing so by studying Community.Components. :-

(1)
I had said "Forget the v 4.0 Am aware of that." I am very aware of the .net 2.0 requirement. I was asking about the 2 different locations (dirs) that the dlls were being drawn from. Like for eg, would one set of the folders be reserved from development to keep from corrupting?

(2)
For sure I can just imagine; I comment using Fidelity.Components and try to compile and I'm sure some class requiring it is going to throw a spanner when one clicks compile?

Is using Fidelity.Components required for making a 'class' dll (as opposed to a 'strategy' dll)?

(3)
To ask in another way; Are there 'using' directives among these that are critically required for making a 'class' dll (as opposed to a 'strategy' dll)? ie not just because some 'class' within requires them.

(4)
I can appreciate that, as you have commented, the .resx is; Auto-generated by Visual Studio.. And, that could be just like Visual Studio can auto-generate a GUID, which is after the CreateGUID.exe is added to Visual Studio from WLD http://www2.wealth-lab.com/WL5WIKI/kbDebugExpress.ashx.

Yes I guess I could go off to MSDN, but if the .resx is generated via a WLD add-in then I might be off on a wild goose chase.

Again, is this .resx related to making a 'class' dll for WLD, as opposed to making a 'strategy' dll?

And are these made via a WLD utility or add-in tool in VS?

Thanks
Jon




profile picture

Eugene

#35
First off, please completely forget about Fidelity.Components (the of usage it was purely dictated by the context i.e. programming convenience), the CreateGUID tool, .RESX being required to make a 'class' DLL, add-in tools in VS. All of that does not make any sense. This is not required, and you're wasting your and my time by going in a completely wrong direction. As the topic has become overloaded with lots of confusing misconceptions, we must restart it to make it productive again.

What you should understand is that a 'class' DLL is the most generic form of an assembly. Unlike WealthScript strategies, its classes are not required to implement specific interfaces like StrategyHelper. Have you wondered why there exists no API manual or guide in creating a utility library? Because it's so simple and there's no gotchas, so any .NET developer capable of compiling a Class Library already knows how to do it. Bingo.

So, create a new Class Library project, switch its target framework to .NET 2.0, to the default "Class1" add any method, compile, drop the DLL in Wealth-Lab's main folder under Program Files, restart WLD6, try to use the method. How it goes now, is there an error?
profile picture

streak

#36

In VC#2010;

CODE:
Please log in to see this code.


Added a reference to WealthLab;
Targeted Framework 2.0
Build output to WLD folder
No changed made to Assembly Information in the projects properties.
No Helper class?

It 'built' ok, and there's the dll in WLD main folder (also another file; WLutilities.jonmac.pdb).

Added 'using WLutilities.jonmac;' to a new WLD editor. It compiled ok. File saved. WLD reopened.

Then opened the 'strategy'. The base symbol has NOT printed to the status bar.

You said "try to use the method". I added the 'static' keyword as you mentioned earlier to save instantiating. However, it does not work as the 'strategy' class did when opened from the jonmac Strategies folder under 'Open Strategies'.

profile picture

Eugene

#37
It seems that for whatever I suggest, you have your own different way.

When I say "open Object Explorer to browse actual class library structure", you open its old source code instead.

When I say, "create a blank class library and throw in a vanilla method" (to call it from an Editor-based strategy, obviously) -- just to verify that your DLL is 'visible' in Wealth-Lab -- you implement the WealthScript interface again and create a Strategy library instead.

Is our broken communication broken beyond repair?

Forget about StrategyHelper for now. Here's how your class should look:
CODE:
Please log in to see this code.

Hope this is clear and no improvisations will follow. Now, compile as .NET 2.0 and place inside the main folder, restart WLD6, open a blank Strategy from code and run this:
CODE:
Please log in to see this code.

Did it work? If it did, congratulations -- you've successfully built a utility DLL i.e. class library of reusable functions.
profile picture

streak

#38

No luck!

Made one change; I started a new VS project (not deleting WLutilities) So the one change was from WLutilities to WLstartover.

Here's the VS project code;
CODE:
Please log in to see this code.


- a reference is made to WealthLab.
- framework 2.0 targeted.
- output path left to bin\release\
- built, the the dll copied over to WLD main folder.
- WLD restarted.
- the code below from "a new strategy from code";

CODE:
Please log in to see this code.


I will not compile - err msg: "error CS0103 @ (15, 20) : The name 'symBase' does not exist in the current context"

Was

CODE:
Please log in to see this code.
supposed to be
CODE:
Please log in to see this code.
?

profile picture

Eugene

#39
My apologies, I did a couple of mistakes in my code while composing it on-the-fly. Please see my edited message above and note the changes in bold.
profile picture

streak

#40


Now I'm really lost! test appears on the Status bar!

CODE:
Please log in to see this code.


You have instantiated Class1? Which exposes all its methods?

To clean my head out; if your code had left the directive
CODE:
Please log in to see this code.
at the top,
how would you have alternatively coded an instantiated 'using' Class1?

Thanks for your help and persistence Eugene.





profile picture

Eugene

#41
QUOTE:
Now I'm really lost! test appears on the Status bar!

Success! You're not lost, we've just completed the creation of a "class library" properly.
profile picture

streak

#42

And I certainly appreciate your follow through.

Am still curious re my last question. Coming to grips with the lingo is today's holy grail! And there's only a few minutes left over here!

Thanks Eugene.
profile picture

streak

#43

Eugene

I am now stuck with not being able to save the script and reopen it. Always get a message like;
[IMG]
Uploaded with ImageShack.us[/IMG]

I have tried with and without the 'Helper' class. But lost as to where I'm going wrong. I have understood that with the dll in the main folder WLD should see these on loading. Then I figure that, with a script saved that includes the 'using' statement for the dll, when loading it, it should execute the code (and in the basic test example you have given the status bar msg should show.

However, well before this I have something wrong - as WLD loads - the xml will not load.

I have noticed in the Wiki help that the GUID produced goes into the 'Helper' file. This is not the same as in the Assembly Information in VC#2010. Should the GUID created by the add-in tool also be copied into the Assembly Information, or is that one purely to uniquely identify the VC#2010 solution?

Thanks
Jon



profile picture

Eugene

#44
Jon

Compiled strategy libraries make NO use of XML files (that's why they're called "compiled"). Your screen capture indicates a broken XML file for the strategy. It can be broken for whatever reason (crash, manual tampering etc), and specifically to avoid startup crash since 6.x WL will signal about broken strategy files on startup. Delete the file and normal WL operation should resume.

P.S. Also make sure that unique GUIDs were assigned by you to each and every strategy (and in general, to any solution). Paid versions of VS have a built-in GUID creation menu item, for VS Express I've built that GUID generator from the Wiki.

QUOTE:
This is not the same as in the Assembly Information in VC#2010.

This is not the same as Assembly level GUID. Each compiled Strategy must have a valid unique GUID, because this is how Wealth-Lab identifies strategies internally.
profile picture

streak

#45

Hi Eugene

Thanks for your explanations.

I seem to be getting 1 step forward and 2 backwards though. Many of the test 'scripts' I try & save and reload/test fail with this
QUOTE:
"...broken XML file for the strategy."
Yes, I have just deleted these, but have not understood what it is I am doing to cause it to happen & so cannot fix the problem.

Can you suggest what can be done from here to alleviate the issue, please?

Eugene, can you build and save the sample code you gave earlier (at 7/3/2011 6:22 AM), then save and close it, please. Will it reopen and immediately run on clicking a symbol with "test" in the status bar? I am not yet successful at making a dll...
QUOTE:
class library of reusable functions

profile picture

Eugene

#46
Jon,
QUOTE:
Can you suggest what can be done from here to alleviate the issue, please?

I can't suggest until I have an idea what you're doing to break your strategies. If you can lay out the procedure of coming up with a broken strategy file (that is reproducible for us), then we might start from there.
QUOTE:
I am not yet successful at making a dll...

Last time you said you did!

You have a programming background, the complete source code of a working class library, and it's the simplest DLL of all you can create for Wealth-Lab 6 environment because there's no interface to implement. Your only "task" is to set the proper platform (done) and compile it (done: 7/3/2011 8:03 AM).

Given the amount of work on behalf of the Wealth-Lab community to be done 'til at least the end of 2011 (release MS123 IndexDefinitions, build several requested addins, new providers and other extensions), I really don't have enough resources to babysit your "problem" in this format. Please consider walking through the C# 101 resources referenced in the Wiki FAQ plus visit some specific links on VS200x basics.
profile picture

streak

#47

The following should reproduce a "broken strategy file";

in VC#2010 :-
- a new project named: 'WLstartover.jonmac' with a class named 'Class1'
- save
- reopen and target Framework 2.0
- remove 'disconnected' references leaving System, System.Data, System.XML
- add a reference to WealthLab
- leave output path to 'bin\release\'
- add the code below to Class1
- build/save and copy dll to WLD main folder

CODE:
Please log in to see this code.


Then in WLD open a 'New startegy from code' and use the following code. Do not save.
CODE:
Please log in to see this code.


Click on a symbol and "test" is displayed in the status bar.

Now save the file. Close and reopen WLD. It shows a broken strategy file.

The directive "using WealthLab;" in the dll was also tested with the same result, as was the following code in WLD;

CODE:
Please log in to see this code.



profile picture

Eugene

#48
Thanks for the additional information. Fortunately, I couldn't duplicate the error by following your procedure. With or without the DLL in place. Most likely, your strategy's XML file had already been broken for some different reason. Zip and attach the problematic XML(s) using our support portal, please.
profile picture

streak

#49

Thanks Eugene

The xml's are attached. I recreated them as I'd been deleting them as/when they failed. They are still broken.

By the way, you mentioned I have a programming background. I'm only self taught inc a few TAFE subjects (VB & SQL) I did to try and help with WLD4.... not a pro b/ground!

profile picture

Eugene

#50
Got them. The error has nothing to do with the code, VS2010 or building DLLs. It's the repeating Unicode character null (a.k.a. char(0), empty string) in your symbol names:
QUOTE:
<DataSetName>067</DataSetName>
<Symbol>DX2-067&#x0;&#x0;&#x0;&#x0;&#x0;&#x0;&#x0; </Symbol>

QUOTE:
<DataSetName>067</DataSetName>
<Symbol>TQ-067&#x0;&#x0;&#x0;&#x0;&#x0;&#x0;&#x0;&#x0; </Symbol>

QUOTE:
<DataSetName>067</DataSetName>
<Symbol>YB-067&#x0;&#x0;&#x0;&#x0;&#x0;&#x0;&#x0;&#x0; </Symbol>

In other words, your DataSet "067" contains invalid symbol names with invalid characters. Now that we know the real reason, it's time to understand how did they get there. Re-using the same ticket, please attach the "067" DataSet XML file (..\Data\DataSets folder). We need to find out how come that the symbol name(s) were represented in this odd manner.
profile picture

streak

#51

The '-067' is a standard Genesis suffix, for each market they may have (just to quote a few prefixes for say elec Gold);
-055
-056
-057
-065
-066
-067
-201109
...and more. The last will represent Sep GC, The earlier ones representing various continuous contracts like; Cont 1st, Cont Exp, Cont Liq, Cont Backadjusted 1st, ...CAdj Exp and so on.

I named the datasets accordingly. '067' keeps these at the top of the list. Isn't this naming ok per the User Guide rules? Guess your refering to the xmls?

I forgot to mention that when I plot any of these the chart caption looks per this eg;
[IMG]
Uploaded with ImageShack.us[/IMG]

profile picture

Eugene

#52
From your new attached XML files, I see Metastock DataSets. Robert is the expert so he has the final say, but it looks like these odd names may be coming from the MetaStock datasource itself.
profile picture

streak

#53

Hot on the money Eugene.

Your workaround of not saving files while Genesis data is loaded has worked. After many frustrations the basic problem seems not purely with my coding inabilities.

Thanks again for pursing this.
Jon

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).