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


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.




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


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


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 — дата последней модификации стратегии.


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


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

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


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


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


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


Автор статьи: AnCh



Поздравляем именинников: Станислав Гайворонский

22 Ответов
ra81

Фотография
Дата: 14.05.2012
Ответить


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

kot99

Фотография
Дата: 14.05.2012
Ответить


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


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

http://www2.wealth-lab.c...KI/kbAskGlitchDebug.ashx
http://personal.fidelity...or-Library-in-Wealth.pdf
Спасибо:

Garic

Фотография
Дата: 14.05.2012
Ответить


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


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

Спасибо:

ra81

Фотография
Дата: 14.05.2012
Ответить


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


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


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


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

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

maxim4eg123

Фотография
Дата: 14.05.2012
Ответить


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

при попытке сделать 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

Фотография
Дата: 14.05.2012
Ответить


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

maxim4eg123

Фотография
Дата: 14.05.2012
Ответить


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

JackSparrow

Фотография
Дата: 15.05.2012
Ответить


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

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

версия Net 2.0
Спасибо:

maxim4eg123

Фотография
Дата: 15.05.2012
Ответить


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

rtDen

Фотография
Курсы Программист
Дата: 01.08.2012
Ответить


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

ra81

Фотография
Дата: 01.08.2012
Ответить


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

Точно нет :). Даже с перезапуском прелесть не пропадает.
Спасибо:

rtDen

Фотография
Курсы Программист
Дата: 02.08.2012
Ответить


Дополнение к статье, может кому пригодится.
Пересобирать длл без перезапуска 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

Фотография
Дата: 02.08.2012
Ответить


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

Фотография
Курсы Программист
Дата: 02.08.2012
Ответить


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

ra81

Фотография
Дата: 02.08.2012
Ответить


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


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

StupidStan

Фотография
Дата: 10.10.2012
Ответить


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

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

Фотография
Дата: 13.10.2012
Ответить


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


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

ra81

Фотография
Дата: 14.10.2012
Ответить


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

StupidStan

Фотография
Дата: 15.10.2012
Ответить


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

JackSparrow

Фотография
Дата: 18.10.2012
Ответить


на втором
Спасибо:

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

Фотография
Дата: 24.10.2012
Ответить


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

Фотография
Дата: 24.10.2012
Ответить


Геннадий Ванин (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ка никакого отношения к студии не имеет, поэтому и не получилось
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy