Required reading:
How can I debug my trading strategies in Wealth-Lab? by Dion Kurczek
The benefit of
Visual Studio 2005/2008 Express Editions (namely C# and VB .NET) and
SharpDevelop 3.2 is that they're available for free. However, both these products lack an attach-to-process debugging ability helpful to debug a DLL. *
At least SharpDevelop allows to specify startup behavior for the project -- and we're going to employ it. Unfortunately, this feature is not present in the project's Debug tab in Express Editions, still there's a simple workaround at hand. In the following paragraphs we will show the steps required to debug your Strategy using the freeware IDEs.
Note: we will be referring to step numbers of the original article by Dion Kurczek, so please keep it open for your reference.
Note! You need to select
.NET 2.0 as the target framework of your solution in its properties, otherwise you won't see the strategy in Wealth-Lab's "Open Strategy" dialog.
SharpDevelop 3.x, 4.x and above
Starting with 3.x branch, SharpDevelop received the native ability to attach to process for its built-in Debugger, greatly simplifying the debugging process. Refer to the
Dion Kurczek article for the procedure is basically the same, except for some dialogue and menu item titles.
However, debugging compared to Visual Studio (even Express) is pretty limited: debugging 64-bit (x64) processes and "Edit and Continue" are not supported. Both shortcomings are expected to get resolved in the 5.x branch.
SharpDevelop 2.2
This part has become obsolete with the release of SharpDevelop 3.x.With an exception of step #7 which is not applicable, working with SharpDevelop follows the same concepts. Notice the following differences:
Step #5: In SharpDevelop, the code completion feature is invoked by keyboard shortcut
Alt-Insert.
Step #6: Insert a new Guid using the
Edit/Insert/Insert new GUID menu item or by pressing
Ctrl-Shift-G.
After you have successfully completed steps 1 to 9 of this tutorial, an extra step is required to change the project's startup behavior. In "Start Action" tab (Project - Project options), choose "Start external program", navigate to Wealth-Lab Pro (Developer) 6 installation folder and select WealthLabPro.exe (WealthLabDev.exe):
The paths:
C:\Program Files\Fidelity Investments\Wealth-Lab Pro 6\WealthLabPro.exe
C:\Program Files\MS123\Wealth-Lab Developer 6\WealthLabDev.exe
Here's what you will need to do instead of steps #12 and #13 above:
#12. When you click "Debug" (F5) next time, WLP5 will start automatically. Move on to opening your Precompiled Strategy Library (step #14) or, to avoid duplicate actions, save your layout as the Default Workspace in WL5. In that case, go right to step #16.
When debugging the library is finished, you may roll back the change by deleting the Default Workspace file:
"c:\Documents and Settings\[YOUR_USER_NAME]\Application Data\Fidelity Investments\WealthLabPro\1.0.0.0\Data\Workspaces\Default.ws" (for Wealth-Lab Developer 6:
"c:\Documents and Settings\[YOUR_USER_NAME]\Application Data\Fidelity Investments\WealthLabDev\1.0.0.0\Data\Workspaces\Default.ws"
)
#13. (n/a). Skip it.
Visual Studio 2005/2008/2010 Express Editions (C# and VB .NET)
For example, the action sequence for VS C# 2005 Express Edition will look like this:
Suppose your project file name is "
TestLibrary.csproj". Create a file "
TestLibrary.csproj.
user" and put it to the very same directory where "
TestLibrary.csproj" is. (In other words, name it after your project file and append an extra extension
.user). Then, open up the new file in Notepad or any other text editor, paste the following XML code and save the file:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<StartAction>Program</StartAction>
<StartProgram>c:\Program Files\Fidelity Investments\Wealth-Lab Pro 6\WealthLabPro.exe</StartProgram>
</PropertyGroup>
</Project>
For Wealth-Lab Developer 6, substitute the text in bold with the following one:
c:\Program Files\MS123\Wealth-Lab Developer 6\WealthLabDev.exe
With this workaround, the Express Edition is basically instructed to launch Wealth-Lab Pro 6 when we start debugging (F5). It will be more convenient to take an extra step and prepare the Default Workspace (explained above). As with SharpDevelop, either continue to step #14 (because attach-to-process debugging is absent) or, if you prepared the Default Workspace with your test library, go right to step #16 (when debugging is finished, you may roll back the change by deleting the Default Workspace file as well.)
Note for Visual Basic .NET Users
In short, here's what Visual Basic .NET should do:
1. Create a VB project for your class library.
2. Include required References to WealthLab.dll, WealthLab.Indicators.dll etc.
3. Create a class for your Strategy e.g. MyStrategy that implements
WealthScript.
4. Create another class adding Helper to the StrategyName i.e. MyStrategy
Helper implementing
StrategyHelper.
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Drawing
Imports WealthLab
Imports WealthLab.Indicators
Namespace WealthLab.Strategies
Public Class MyStrategy
Inherits WealthScript
Protected Overrides Sub Execute()
...
End Sub
End Class
Public Class MyStrategyHelper
Inherits StrategyHelper
End Class
End Namespace
5. Right-click on the interface name and let Visual Studio generate all skeleton code for interface members.
...
Public Class MyStrategyHelper
Inherits StrategyHelper
Public Overrides ReadOnly Property Author() As String
Get
Return "..."
End Get
End Property
Public Overrides ReadOnly Property CreationDate() As DateTime
Get
Return New DateTime(2008, 7, 19)
End Get
End Property
Public Overrides ReadOnly Property WealthScriptType() As Type
Get
Return GetType(MyStrategy)
End Get
End Property
End Class
...6. Code your Strategy and debug as explained in this article for C# programmers.
Note on creating a Guid for your Strategy in Visual Studio Express Editions
Note: the GUID of
each Strategy in your class library should be
unique.
Both generation of Visual Studio Express lack "Create New Guid" functionality. For strategy developer convenience, we've built a tiny utility that generates a new Guid string and copies it to clipboard ready to insert in Strategy code.
Follow the steps below to integrate the tool into your Express Edition:
 1. Configure CreateGuid.exe as an External Tool |
 2. A new menu item: "Create New Guid" |
 3. CreateGuid window |
Download:CreateGuid.exe
CreateGuid VS C# 2008 Express project