AnCh
AnCh личный блог
13 мая 2012, 13:03

Отладка стратегий WealthLab в Visual Studio


1. Запускаем студию, меню File — New project. Visual C# — Class library, не забываем поставить .NET Framework 2.0.

Отладка стратегий WealthLab в Visual Studio

2. Добавляем ссылку на сборку WealthLab'a (WealthLab.dll). Add Reference — Browse — ищем папку с WLD (как правило это c:\Program Files (x86)\Fidelity Investments\Wealth-Lab Pro 5\ ). Выбираем WealthLab.dll. Жмем OK.


Отладка стратегий WealthLab в Visual Studio

Отладка стратегий WealthLab в Visual Studio

3. Создаем два класса.Один ИмяКлассаScript (переименовываем Class1.cs), другой ИмяКлассаHelper (добавляем новый — правый клик по имени проекта, Add — Class). В диалоговом окне подтверждения переименования жмем ОК. Получается так:

Отладка стратегий WealthLab в Visual Studio

4. Открываем ИмяКлассаScript. Добавляем директиву using WealthLab, наследуем класс от WealthScript, имплементим метод Execute() (можно нажать хоткей ALT-SHIFT-F10 затем ENTER). Должно получится так:

Отладка стратегий WealthLab в Visual Studio
5. Открываем ИмяКлассаHelper. Добавляем директиву using WealthLab, наследуем класс от StrategyHelper, имплементим все свойства (можно нажать хоткей ALT-SHIFT-F10 затем ENTER). Заполняем свойства:
Name — имя стратегии;
Guid ID — правой кнопкой по имени проекта — свойства (последняя в списке), открывается окно свойств — вкладка Application — справа конпка «Assemble Information» — копируем GUID. Также здесь заполните свойство Description (например укажите имя стратегии — Test Strategy.) Возвращаемся назад — вставляем скопированное;
Author — автор;
WealthScriptType — здесь вы должны указать тип вашей стратегии (ИмяКлассаScript).
Description — описание стратегии;
CreationDate — дата создания;
LastModifiedDate — дата последней модификации стратегии.

Должно получится так:

Отладка стратегий WealthLab в Visual Studio

6. Правой кнопкой по имени проекта — свойства (последняя в списке), открывается окно свойств — вкладка Build, свойство Output Path — указываем путь к папке WLD — c:\Program Files (x86)\Fidelity Investments\Wealth-Lab Pro 5\

7. ИмяКлассаScript — пишем стратегию в методе Execute() — например, пересечение MA. Должно получится так:

Отладка стратегий WealthLab в Visual Studio
8. Билдуем стратегию, ставим точки останова. Запускаем WLD, затем в студии выбираем в меню Debug — Attach to Proces, находим процесс wealthlabpro.exe и аттачимся к нему, в WLD жмем File — Open Strategy, ваша стратегия должна быть в корне, со специальной иконкой:

Отладка стратегий WealthLab в Visual Studio

9. Если график открыт то стратегия сработает при нажатии кнопки ОК, если нет — то при открытии графика:

Отладка стратегий WealthLab в Visual Studio

Done. Теперь вы можете удообно отлаживать стратегии, ставить точки останова, смотреть значения переменных.
Для удобного аттача к wld'шному процессу можно использовать макрос:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics

' 1. Tools > Macros > Macro IDE
' 2. Right Click MyMacros > Add > Add Module
' 3. Paste in the code below:
' 4. Rename the Macro file DebuggingMacros
' Enable the debug toolbar
' Click the dropdown on the far right and click «Add or Remove buttons» > click «Customize»
' Click «Add Command»
' Select Macro on the left panel
' Find the macro in the list on the right
' Click «ok»
' Click «Modify Selection» and rename the button
' * repeat for nunit macro

Public Module DebuggingMacros
    Public Sub AttachToWealthlab()
        Dim WLDAgent As String = «WealthLabPro.exe»
        If Not AttachToProcess(WLDAgent) Then
            System.Windows.Forms.MessageBox.Show(«Ca
n't find WLD-agent process»)
        End If
    End Sub

    Public Function AttachToProcess(ByVal ProcessName As String) As Boolean
        Dim Processes As EnvDTE.Processes = DTE.Debugger.LocalProcesses
        Dim Process As EnvDTE.Process
        Dim ProcessFound As Boolean = False
        For Each Process In Processes
            If (Process.Name.Substring(Process.Name.LastIndexOf("\") + 1) = ProcessName) Then
                Process.Attach()
                ProcessFound = True
            End If
        Next
        AttachToProcess = ProcessFound
    End Function
End Module
19 Комментариев
  • Максим Милованов
    13 мая 2012, 14:00
    Спасибо, пригодится!!!
  • mixarus
    13 мая 2012, 14:01
    Очень интересная статья. Сейчас смотрю с телефона, но обязательно попробую, т.к.
    AnnotateBar использовать для отладки уже надоедает:) Спасибо.
  • StockSharp.Ru
    13 мая 2012, 14:42
    Отличная статья +
  • Awesome_Trade
    13 мая 2012, 14:49
    Добавил в избранное )
    А может кто подскажет, где крякнутый WealthLab 6 есть? с нескольких торрентов скачивал, но крек только под WealthLab 5, которая, при инсталляции автоматически обновляется до 6 икрек слетает((
    • wavelet
      13 мая 2012, 15:21
      Awesome_Trade, 6ки взломанной нету, и похоже не будет, поскольку вышла давно.
      Но сама платформа настолько дубовая и ограниченная что не стоит того
      • Awesome_Trade
        13 мая 2012, 15:32
        wavelet, а ты что используешь? WL 4 на паскале или (упаси боже) TS-Lab?
        • wavelet
          13 мая 2012, 16:16
          Awesome_Trade, oq + stock#
  • Антон Кротов
    13 мая 2012, 16:17
    Спасибо! (+)
  • Виталий
    13 мая 2012, 16:50
    Плюс!
  • jtrade
    13 мая 2012, 18:13
    Спасибо!
  • ALTER
    17 мая 2012, 14:01
    Вопрос технический.
    Сделал все по инструкции. Все билдуется, файлы в папке ВЛД есть. НО ВЛД не видет их? запускал ВЛД под админом, но ситуация аналогичная. ВЛД 6.3 стоит.
    Как решить данную проблему?
      • traderstas
        11 декабря 2012, 20:51
        у меня ламерский вопрос: А что в экспрес версии вижуал студио нет функции присоединить велзлаб?
        • traderstas
          12 декабря 2012, 11:36
          traderstas, перефразирую: А что в экспрес версии вижуал студио нет функции attach to process?
            • traderstas
              12 декабря 2012, 23:34
              AnCh, установил ultimate нормально заработало. Теперь проблема в Дебаге. Без выгрузки Велза не хочет обновлять правленый код.
    • traderstas
      11 декабря 2012, 20:03
      ALTER, 6-ка на NET 3.5
      • traderstas
        13 декабря 2012, 00:00
        @sicuro, Как производить генерацию кода в VS, скажи-ка лучше!?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн