← 返回

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

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

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

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

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

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

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

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

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

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

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

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

:[**:::right Автор статьи: AnCh

本主题对您有帮助吗?

分享主题

评论 (22)

登录创建账户, 登录或注册以发表评论

ra81
ra81

Если поискать то могу наверное найти правленную либу велслаба, которая позволит создавать свои визуальные конструкции на графике :), помимо встроенных. В свое время бла необходимость это делать :), подправил либу.

kot99
kot99

ra81: Если поискать то могу наверное найти правленную либу велслаба, которая позволит создавать свои визуальные конструкции на графике :), помимо встроенных. В свое время бла необходимость это делать :), подправил либу.

угу. всё на сайте WL вообщем-то всё есть...если вы про индикаторы

http://www2.wealth-lab.com/WL5WIKI/kbAskGlitchDebug.ashx http://personal.fidelity.com/products/trading/Trading_Platforms_Tools/pdf/Creating-an-Indicator-Library-in-Wealth.pdf

Garic
Garic

ra81: Если поискать то могу наверное найти правленную либу велслаба, которая позволит создавать свои визуальные конструкции на графике :), помимо встроенных. В свое время бла необходимость это делать :), подправил либу.

А вот подобные вещи реально сделать удобней? Перешёл с Amibroker и страдаю )

ra81
ra81

Garic:

ra81: Если поискать то могу наверное найти правленную либу велслаба, которая позволит создавать свои визуальные конструкции на графике :), помимо встроенных. В свое время бла необходимость это делать :), подправил либу.

А вот подобные вещи реально сделать удобней? Перешёл с Amibroker и страдаю )

Не очень понял проблему. Так крестик есть такой который показывает значения которые под ним. Во всяком случае время должен показывать :). Остальные нюансы не помню.

угу. всё на сайте WL вообщем-то всё есть...если вы про индикаторы Нет я про то, если вам вдруг надо будет какуюто свою фигуру отобразить на графике. Вы несможете это сделать :). Например рыночный профиль за день или неделю ;).

maxim4eg123
maxim4eg123

Уважаемые форумчане Помогите пожалуйста с такой проблемой

при попытке сделать Build

Error 1 Unable to copy file "obj\Debug\ClassLibrary2.dll" to "..............\Program Files (x86)\MS123\Wealth-Lab Developer 6\ClassLibrary2.dll". Access to the path '..............\Program Files (x86)\MS123\Wealth-Lab Developer 6\ClassLibrary2.dll' is denied. ClassLibrary2 права админские

Как ЭТО убрать

Заранее вам спасибо

ps Огромнейшее спасибо за такое подробное изложение материала.

AnCh
AnCh

WLD закройте когда перебилдовываете проект. Студия не может перезаписать файлы так как они открыты в WLD.

maxim4eg123
maxim4eg123

либо пишу другое место куда складывать файлы и в влд копирую вручную файлы созданной библиотеки либо вышеописанная ошибка .. в любом случае не появляется иконка в влд( кто сталкивался

JackSparrow
JackSparrow

VS -> Отладка -> запуск внешней программы -> найти Вэлс и указать При запуске отладки скрипта вэлс будет запускать студией и тушиться тоже ей

построение -> путь вывода -> дтректория вэлса

версия Net 2.0

maxim4eg123
maxim4eg123

нет ошибок, тупо в списке стратегий в влд не появляется как на скрине стратегия.. это конец

Игорь Бакулин
Игорь Бакулин

maxim4eg123: нет ошибок, тупо в списке стратегий в влд не появляется как на скрине стратегия.. это конец

У меня тоже не появлялось. Пока не поставил Target framework - .NET Framework 3.0 у меня Wealt-lab Developer 5.4 для 6-ки работает .NET Framework 3.5

rtDen
rtDen

Спасибо за статью. А можно ли как то пересобирать длл без перезапуска Wealth-Lab'а? Перезапуск WL при каждом изменени кода убивает всю прелесть написания в Visual Studio =(

ra81
ra81

rtDen: Спасибо за статью. А можно ли как то пересобирать длл без перезапуска Wealth-Lab'а? Перезапуск WL при каждом изменени кода убивает всю прелесть написания в Visual Studio =( Точно нет :). Даже с перезапуском прелесть не пропадает.

rtDen
rtDen

Дополнение к статье, может кому пригодится. Пересобирать длл без перезапуска WL у меня не получилось, но править код на лету, все-таки можно. Что для этого требуется: Нужно не присоединяться к запущенному процессу WLD, а запускать его из самой студии. Project -> Properties -> Debug В разделе Start Action выбрать Start external program, указать путь к WLD Проект нужно собирать под платформу x86 Project -> Properties -> Build Platform target: x86

Править код можно тогда, когда программа остановлась на бряке. Т.е. ставим бряк, запускаем стратегию в WLD, останавливаемся на бряке, правим код, снимаем бряк и запускаем стратегию.

На чем это работает у меня: Visual Studio 2008, WLD 6, Windows 7 64bit.

ra81
ra81

rtDen: Дополнение к статье, может кому пригодится. Пересобирать длл без перезапуска WL у меня не получилось, но править код на лету, все-таки можно. Что для этого требуется: Нужно не присоединяться к запущенному процессу WLD, а запускать его из самой студии. Project -> Properties -> Debug В разделе Start Action выбрать Start external program, указать путь к WLD Проект нужно собирать под платформу x86 Project -> Properties -> Build Platform target: x86

Править код можно тогда, когда программа остановлась на бряке. Т.е. ставим бряк, запускаем стратегию в WLD, останавливаемся на бряке, правим код, снимаем бряк и запускаем стратегию.

На чем это работает у меня: Visual Studio 2008, WLD 6, Windows 7 64bit.

Ну метод запуска велса из студии я только такой и использую, а никак не подключение к процессу. А вот вы уверены что правленный код начинает работать в велсе??? У меня вот сомнение появляется по этой части.

rtDen
rtDen

Проверить ведь не долго =) У меня работает правленный код.

ra81
ra81

rtDen: Проверить ведь не долго =) У меня работает правленный код.

Клево. Тоже попробую. Может пригодится.

StupidStan
StupidStan

Подскажите что делать если после создания проекта в .NET 3.5 ссылки не видят файлы dll, а если в .NET 4 проект создавать то всё в порядке. Перед установкой 10 версии удалил 8-ую с помощью РеВоИнсталера, может он вычистил эти файлы. я уже и нетфреймворк переустанавливал, ничего не помогает.

ra81
ra81

Вообще велс 5.4 работает тока со вторым дотнетом. Так что прилепить туда какой-то другой проект я думаю не получится :)

StupidStan
StupidStan

получается и связку WL54 c VS нужно создавать на втором дотнете?

JackSparrow
JackSparrow

на втором

Геннадий Ванин (Gennady Vanin)

M.Kovaleva: 2. Добавляем ссылку на сборку WealthLab'a (WealthLab.dll). Add Reference — Browse — ищем папку с WLD (как правило, это c:\Program Files (x86)\Fidelity Investments\Wealth-Lab Pro 5\ ) А у меня в Wealth-Lab Pro 6.3 не получилось Снёс поставил WLD 4.4, т.к. 5ка несовместима с QUIK

JackSparrow
JackSparrow

Геннадий Ванин (Gennady Vanin):

M.Kovaleva: 2. Добавляем ссылку на сборку WealthLab'a (WealthLab.dll). Add Reference — Browse — ищем папку с WLD (как правило, это c:\Program Files (x86)\Fidelity Investments\Wealth-Lab Pro 5\ ) А у меня в Wealth-Lab Pro 6.3 не получилось Снёс поставил WLD 4.4, т.к. 5ка несовместима с QUIK 4ка никакого отношения к студии не имеет, поэтому и не получилось