1. Is there a way to tell within a script whether or not the script is being run via MSB vs SSB?
for now i'm doing this, but if i click on the first symbol instead of the entire DataSource this logic will assume I'm running it in MSB mode even though it is in SSB mode.
CODE:
Please log in to see this code.
2. is it possible to have a script pop-up a dialogue box or a system console and ask for input? i put this line in the code, but it didn't work:
CODE:
Please log in to see this code.
thanks
Size:
Color:
QUOTE:
2. is it possible to have a script pop-up a dialogue box or a system console and ask for input?
For now you can simply use
InputBox this way:
CODE:
Please log in to see this code.
MSDNBy the way I just noticed it's on our
FAQ.
QUOTE:
i put this line in the code, but it didn't work:
System.Console isn't practical in WealthScript but if you want to know how to make some use of it, click here:
Activate System.Console.writeline in WL5
Size:
Color:
thanks. that's very useful for me!
Size:
Color:
This might help finding whether the strategy is being run in MSB vs SSB:
CODE:
Please log in to see this code.
Size:
Color:
Eugene, Thanks for this second part as well. It works when I'm running the strategy but when I'm debugging a strategy via SharpDevelop it crashes. I've been hardcoding the response I want while debugging and then turning this back on when I'm running the strategy for real. if you happen to think about another alternative method to determine the "mode" of how a strategy is running, that would be great. But, it is usable as it's coded.
Size:
Color:
Sorry Steve, this is the only idea on my mind. Probably the crash has somehow to do with the usage of System.Reflection (?)
I don't have either SD 2.2 or 3.0 installed since I was disappointed by being unable to make any use of the attach-to-process feature in 3.0, but maybe I'll take a look how it goes in Visual Studio Express.
Size:
Color:
fwiw SD v3.1 has been stable for me and it allows the "attach to process".
Size:
Color:
Didn't know about the 3.1 nightly build. Perhaps will try out someday.
Size:
Color:
I noticed in another post the use of
QUOTE:
IsRawProfitMode
from community components to tell whether a portfolio simulation or raw profit run was in progress. I'd also suggest a version of the above code that doesn't rely on System.Reflection if possible for
QUOTE:
IsSSBMode
and
QUOTE:
IsMSBMode
.
The system.reflection code works fine when using compiled code, but doesn't work when using code through one of the debuggers.
This is how I have adapted your code:
CODE:
Please log in to see this code.
Size:
Color:
Using System.Reflection was the only way for this hack to happen. There's no native API call, but perhaps a good idea would be to ask Fidelity for these methods to be available in pure WealthScript.
Size:
Color:
is it possible / likely that this is now broken in 5.6?
in this block of code:
CODE:
Please log in to see this code.
this line:
CODE:
Please log in to see this code.
returns null. as a result, the p.GetValue always fails.
thanks for the help.
Size:
Color:
The code above from 3/30/2009 12:41 PM that introduced GetSymbolNameOfActiveChart works for me in WLD 5.6, correctly telling MSB from SSB.
Note: it should not work in Strategy Monitor, like any similar hack based on usage of System.Reflection (GetDataSetName etc.)
Size:
Color:
i don't use strategy monitor.
thanks for looking. i pasted the code above into a new blank strategy. here it is:
CODE:
Please log in to see this code.
when i run the strategy i get a run-time error:
also, when debugging (in separate code, not the above) i looped through the main form controls and properties and dumped the properties and values into excel. here they are:
CODE:
Please log in to see this code.
Size:
Color:
Wow, let us think of it. In WLD 5.6.20, the code runs absolutely fine and in WLP 5.6.20, I get the same error as you.
Probably, obfuscation.
Size:
Color:
I've made some progress, What's pasted below works, but potentially if only one strategy window is open. i'm not sure what would happen with multiple charts / strategies open. Also, I don't really know all that's going on in the internals, so if there's a better way, please comment.
Having said that, I discovered that the ChartForm contains a boolean Control labeled "MultiSymbolMode" which tells me exactly what I am looking for. I strongly believe this field, which clearly exists and is valid, should be somehow exposed in a higher level WealthScript object or at the "System" level (as is IsStreaming).
Again, I think there will be an issue with multiple strategies open, so if there's a way to know i'm finding the chart for the currently running strategy, that would be good.
CODE:
Please log in to see this code.
Size:
Color:
Nice find. Yes, I can confirm it prints out "SSB" when multiple Strategy windows are open. The MultiSymbolMode property is probably a later addition, but seems to be global in its application, so we can't use it for reliable detection of the mode.
I'll be looking today as to why does GetSymbolNameOfActiveChart work in WLD5.6 and fail in WLP5.6. Like Robert suggested, this might be an obfuscation-related question.
btw, we've already submitted an idea to the developers to include this kind of properties (GetDataSetName etc.) in WealthScript natively.
Size:
Color:
And the answer is: unlike WLD 5.6.20, the MainForm class is obfuscated in WLP 5.6.20, that's its Symbol property has become invisible.
Strangely, substituting "MainForm" with "ChartForm" didn't work.
Size:
Color:
this seems to work with multiple strategies open. not sure it will always work though.
CODE:
Please log in to see this code.
Size:
Color:
Really good. That "IsBusy" trick is creative.
btw, is there a practical reason to tell MSB from SSB?
Size:
Color:
in my opinion, there are many practical reasons.
here's two code fragments showing how many of my programs start:
CODE:
Please log in to see this code.
Size:
Color:
Thank you.
Size:
Color:
Both the method in this thread (giving Object reference not set) and the method in the Wiki (giving Illegal cross-thread operation) fail for my WLP release 6.7.18.0. Any suggestions? This is related to a Particle Swarm Optimizer enhancement request.
Size:
Color:
This is caused by a decision to obfuscate the code committed by Fidelity. Sorry.
Size:
Color:
Hello All!
I am using the code from post #18 and experiencing the following problem.
Problem:
Running in optimization mode on a full dataset I get the information that the strategy is running in SSB mode.
Any ideas why?
Another question:
Is there a way to determine that the strategy is being optimized?
Many thanks
Konstantin
Size:
Color:
Hi Konstantin,
QUOTE:
Any ideas why?
Please see my reply in post #23.
QUOTE:
Is there a way to determine that the strategy is being optimized?
You can determine that the Strategy is
not being operated in Strategy window (see QuickRef, ChartPane Object >
IsPricePane Property or Cosmetic Chart > ChartStyle Property). Running under optimizer is identical in this sense to running under the Strategy Monitor.
Size:
Color:
ATTENTION: Community Components has a new GetMode function since v2017.09. It supersedes the Wiki article and related forum conversations. Thanks vladl2015 for the code.GetMode
Size:
Color: