dr-mart

Создание стратегии в Wealth-Lab. Первые проблемы.

Чуть-чуть углубившись в Wealth-Lab, сразу стало понятно, что геморроя тут будет больше, чем в TSLabe. Конечно в последнем я тоже испытывал некоторые трудности, но не тратил столько времени на их преодоление.

1. Данные по фьючерсу РТС в Wealth-Lab мы импортировали.

2. Соответственно построили график. Как рисовать на графике или как построить индикатор — труда не вызывает. Более того, если потыкаться, можно даже увидеть код на языке программирования.

Язык в WLD почему-то называется Wealth-Script, а не C#. Ну это наверное как Stocksharp назвали свою библиотеку S#, то разработчики WLD назвали свой набор WealthScript, при этом используется семантика C#.

Если мы начнем ковырять все подряд пункты меню, то обнаружим возможность строить торговую стратегию на основе простых правил. Это для меня оказалось новостью, потому что я думал что в WLD можно только запрограммировать свою стратегию.

File->New->New Strategy From Rules (Ctrl+Shift+R).

Создание стратегии в Wealth-Lab. Первые проблемы.

Ну вот собственно об этом видео и о том геморрое, с которым я столкнулся. Видео для таких же лохов как я, либо для тех, кто вообще не работал с wealth-lab


Краткое содержание:
1. как быстро создать свою стратегию в Wealth-Lab из правил
2. как запустить стратегию в Wealth-Lab
3. как посмотреть код стратегии




Вот кусок полученного текста программы с моими попытками разобраться в нем:
Wealth-Lab

В целом, начать работу в TSlab конечно удалось намного быстрее.
Для этого было достаточно просмотреть 1 обучающий вебинар и поковырятсья с хелпом, который хоть и не совершенен, но все же написан на русском языке. 

С другой стороны, по велслабу я знаю, если что, где найти обучающий материал о том, как составить программу (тот же обучающий курс Дмитрия Власова и Игоря Чечета), а вот с TSLab'ом пока не знаю как выйти за рамки визуального составления алгоритмов из блок-схем.


Вопросы которые у меня есть на данный момент:

  • как связать код WLD с кодом VS? (ответ на этот вопрос получил из каментов, ссылка: http://anch-s-journal.livejournal.com/14388.html)
  • зачем нужен VS если в WLD есть встроенный компилятор?
  • непонятно где хранится код, который мы открыли в WLD и в каком формате он хранится...
  • а не сужает ли круг возможностей программирование в рамках т.н. wealth-Script?
  • чем Stocksharp лучше или ваще отличается принципиально от WLD и его возможностей
★48
60 комментариев
еще интересно как вписать gettime, чтобы торговался например с 11.00 до 19.00
avatar
Bacardi, до этого вопроса я пока еще не «дорос»:)))
Тимофей Мартынов, мне там в коментах дали наводку smart-lab.ru/blog/26254.php, только не ясно как и куда это вставить))
avatar
Bacardi, подсказка Date[bar].Hour
avatar
fau, это мне внизу уже подсказали, только у меня с программированием не особо, знаешь как полностью эту вещь вписать?
avatar
Bacardi, перед входом в сделку сделай проверку на время, типо
if(Date[bar].Hour >= 11 && Date[bar].Hour <= 19)…
avatar
fau, спасибо огромнейшее!!! все заработало)
avatar
непонятно где хранится код, который мы открыли в WLD и в каком формате он хранится…
В 5.4 хранился в файле на диске. Файл xml формата.

зачем нужен VS если в WLD есть встроенный компилятор?
В 5.4 vs можно использовать для отладки. Я вообще все страты пишу в vs — там удобнее. Wl только для отображения сделок На графике.
avatar
l-way, а ты знаешь как вписать gettime, чтобы тестировать с 11.00 до 19.00?
avatar
Bacardi, не очень понял задачу. Если смысл в том, что бы открывать и закрывать позиции толь с 11до 19, тогда просто добавить фильтр по времен текущего бара — date[n]
avatar
l-way, вот это надо с 11 до 19, а как это написать?
avatar
Bacardi, if date[bar].hour > 11…
avatar
l-way, а можешь эту строчку полностью написать?
avatar
Bacardi, Как вариант, в 5.4 можно вот так поступить
public int GetTime(int bar)
{
return Date[bar].Hour * 100 + Date[bar].Minute;
}
Затем использовать например так:
if (GetTime(bar)>=1100 && GetTime(bar)<=1840 )
{
//
}
avatar
jetta, спасибо, я эту проблему уже решил)
avatar
l-way, а как перебрасываешь написанный в VS код в WLD?

5.4 используешь хакнутый?
Тимофей Мартынов, anch-s-journal.livejournal.com/14388.html
avatar
Марсель Тазетдинов, спасибо! добавлю в топик
Марсель Тазетдинов, кстати прикольный ЖЖ в целом
Тимофей Мартынов, а я не перебрасываю — у меня все тесты в vs в своем фреймворке. И статистика вся там. Но графиков нормальных пока нет. Поэтому сделки из vs грузятся в файл, а программа в wl на графике их отображает.
Раньше просто в wl писал.

Иначе 6 использовал бы
avatar
l-way, а почему делаешь именно так, а не прямо в WL?
Тимофей Мартынов, недостатки — плохой редактор кода, не удобный для объемных стратегий, тормоза/медленная работа, глюки при формировании из минутных данных старших таймфреймов. Не удобство написания прикладных программ, нпример для обработки данных — типа склейки фьючей, доп статистики, которой нет в wl и т.д. с тиками там какие то проблемы были.
А преимущест по сути только удобные графики. По этому использую только их
avatar
l-way, спасибо
Мартик, только не оператор, а метод, все что красное в велсе это методы
avatar
Марсель Тазетдинов, да, да, о великий Марся. Кстати… Смотрел твой вебинар. Думаю, тебе лучше нада к нему готовиться, ибо ты тратиш много времени зрителей понапрасну.
Тимофей Мартынов, я к этому иду Мартик)
avatar
Марсель Тазетдинов, вопрос, который у меня возник и я надеялся получить из твоего вебинара — как в VS импортировать текстовый файл с финама с данными и обратить его в рабочий массив. У тебя вроде что-то было на эту тему, но так муторно, что я не выдержал
Тимофей Мартынов, неа я там не рассказывал, возможно сказал что такая возможность есть и все, я тебе линк выше кинул, там нормальная инструкция, под любой велс слаботает
avatar
Тимофей Мартынов, читаешь и парсишь файл. Можно напрямую загружать с финама, но тут надо парсить еще ответ сервера
avatar
1) зачем нужен VS если в WLD есть встроенный компилятор?
разница как между вордом и блокнотом, но если кодить что-то не сложное VS реально не нужен

2) непонятно где хранится код, который мы открыли в WLD и в каком формате он хранится…

C:\Users\<Твой юзер в винде>\AppData\Roaming\Fidelity Investments\WealthLabDev\1.0.0.0\Data\Strategies

хранится в формате XML, не знаю почему, и это, нужно скрытые папки сделать видимыми чтобы туда зайти

3) а не сужает ли круг возможностей программирование в рамках т.н. wealth-Script?

сужает немного, иногда выходится быдлокодить чтобы обойти это, но это все же лучше чем изобретание собственных велосипедов

4) чем Stocksharp лучше или ваще отличается принципиально от WLD и его возможностей

гибче и быстрее, S# это чистый C# без примесей :)
avatar
Марсель Тазетдинов, спасибо
Марсель Тазетдинов, только ради Intellisense имеет смысл использовать родной Майкрософтовской пакет :)

1)Если уже и вступать на путь .NET программирования, лучше это делать в «родной» среде, являющейся стандартом де-факто и де-юро :) Наверняка, совсем скоро, любому юннату захочется превратить свой код в настоящий проект, либо консольный, либо WinForms…

2)хранится в формате XML, не знаю почему...

«XML-файлы и файлы других расширений, основанные на языке XML, получили очень широкое распространение. В XML-файлах хранятся самые различные данные — от настроек приложений до баз данных. Файлы на основе XML используются для обмена информацией в Интернете и между программами (для этого данный язык разметки и был изначально задуман). Т.к. файлы формата XML содержат текстовые данные, их можно легко отредактировать в любом текстовом редакторе.»

3)Представим себе, что стратегия и её WL-код созданы, что дальше??? Разве не возникнет необходимости в создании настоящего приложения?
А где его создавать, как не в VS?

4)K VS можно подключить как WL, так и S#…
avatar
mio-my-mio, ну да согласен, в других редакторах дебага либо нет в принципе, либо что-то из серии, вывести в аутпут :)
avatar
«обнаружим возможность строить торговую стратегию на основе простых правил. Это для меня оказалось новостью, потому что я думал что в WLD можно только запрограммировать свою стратегию»

хм… я кстати раньше вам говорил (http://smart-lab.ru/blog/92537.php) про этот генератор скриптов, что писать роботов лучше учиться у него. Это самый эффективный путь.

avatar
С# можно вообще не изучать — хватит школьных знаний
avatar
S# — это просто библиотека в c# или нечто иное?
где подробнее почитать?
avatar
avatar
Не понятно вот что — неужели работа скрипта идет по анализу свечек, а не отдельных сделок. Если да, то это же… вопиюще
avatar
RuTicker.com,

Вообще то посвечное эквити стратегии — это правильно по сравнению со статистикой сделок и посделочной эквити.

Так что логика WLB в этой части правильная. Другое дело, что меня этот скрипт не устраивает из-за DataSeries, так как не каждый алгоритм ложится на операции с массивами, а выборка конечного подмассива из DataSeries на каждом шаге работы стратегии — это жуткие «тормоза».
avatar
А. Г., с чего бы? Свечки удобны для человека, но для алгоритма они совершенно не естественны.
avatar
RuTicker.com, полностью согласен, также есть еще один минус свечей: чтобы система дала сигнал на сделку нужно ждать окончания свечи, что в трендовых стратегиях совсем не айс.
avatar
HugoRu,

Вообще то в WLD можно и с тиками работать, а совершать сделку на поступившем тике с внесением его в условия совершения сделки — это заглядывание в будущее. Поэтому то, что совершить сделку можно только на следующем тике — это правильно.
avatar
HugoRu, необязательно ждать… зависит от стратегии.

просто дело в том, что большинство стратегий тестируется на истории… которая состоит только из свечей.
avatar
RuTicker.com,

У любого алгоритма есть решение сменить позицию (совершить сделку) и не менять позицию и эти решения

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

Именно отсюда и следует, что с точки зрения оценки качества торгового алгоритма надо смотреть на все такты поступления новой информации, а не только на те, когда совершались сделки.
avatar
RuTicker.com, очень правильное замечание…
avatar
LastPosition — последняя созданная позиция

Опять же повторюсь что писал вам раньше (http://smart-lab.ru/blog/92537.php), что полезно почитать хелп-велзлабовский (за 4 часа прочитаете всё, это полезный хелп польза/время). Заходите HELP -> WealthscriptQuickRef -> там это всё есть

про «Group1» — верно, это лишь метка ордера чтобы отличать одни от других
avatar
блин, это просто разрыв мозга, что Тимофей ушёл c рбк и теперь вот учится программировать на C#… так не бывает, не могу читать, не верю!
avatar
Тимофей, можно выкладывать не картинки кода, а постить его на pastebin.com, или на подобные сайты для code snippets,
a затем давать ссылку на сам код :)
avatar
О том, как связать Wealth-Lab c VisualStudio (в т.ч. видео): finlabportal.ru/2012/08/kak-ustanovit-svyaz-mezhdu-wealth-lab-i-visual-studio-dlya-otladki-torgovoj-strategii/
avatar
«зачем нужен VS если в WLD есть встроенный компилятор» VS это все равно, что мощный текстовый редактор. Да, текст можно писать и в блокноте (аналог редактора велсовского), но удобнее делать это все-же в Word. Помимо того VS позволяет отлаживать код, делать точки остановок, удобно хранить готовые стратегии, группируя их (Решение — Проект — Класс). Можно автоматизировать многие процессы при программированиии…
avatar
Для того, чтобы найти файлы стратегий велсовских на компе нужно сделать следующее:

1) Сначала открыть скрытые папки:
— В проводнике нажать «Alt»
— В появившемся меню выбрать «Сервис» — Параметры папок…
— Перейти на закладку «ВИд»
— Переместиться вниз и в самом низу выбрать «Показывать скрытые файлы, папки и диски, а также убрать флажок с „Скрывать защищенные системные файлы
— нажать “ОК».

2) Переходим: С:\Пользователии\<Конкретный пользователь>\AppData\Roaming\Fidelity Investments\WealthLabDev\1.0.0.0\Data\Strategies

В папках, которые увидите как раз и будут храниться файлы с расширением .xml — в которых находятся стратегии…

Кстати в папке С:\Пользователии\<Конкретный пользователь>\AppData\Roaming\Fidelity Investments\WealthLabDev\1.0.0.0\Data\

Можно найти папку с провайдерами данных (к примеру FinamProvider) — где хранятся файлы котировок…
avatar
Дмитрий Власов, Wealth-Script в Wealth-Lab раньше был языком… Теперь язык C#, а Wealth-Script — это по сути библиотека классов (или даже класс, находящийся в библиотеке WEalthLab.dll). От этого класса всегда наследуется класс создаваемой стратегии (:WealthScript). Как результат нам становятся доступны все методы (и не только методы), которые для нас создали разработчики велса (к примеру, такие как рисование на графике, приказы BuyAtMarket(), ShortAtClose() и т.п.). Как итог нам не нужно изобретать велосипед, а нужно просто взять его, научиться ездить и ехать.
avatar
Тимофей, попробую облегчить тебе жизнь (ничего, что на ты?)

1. В курсе есть переведенная инструкция по разработке от Дмитрия Власова. Адскую работу Дмитрий проделал, зато на выходе имеем 135 страниц качественно переведенного материала по разработке. Воспользуйся им, тогда будет легче разбираться в WLD.
2. Также в курсе есть отдельное видео по настройке связки между WLD и VS. Работает со всеми версиями WLD и VS.
3. В курсе есть учебные ТС. Посмотри их, разбери, погоняй. Потом сможешь любую ТС сделать сам.

Что касается вопросов:

1. C# — это стандартизованный по ISO язык программирования. На нем можно написать все, что угодно. Microsoft выдает .NET Framework. В нем много чего есть. Здесь нас больше интересуют уже готовые библиотеки классов. Например, хочешь ты поработать со временем — пожалуйста, есть класс DateTime. Хочешь поработать с математикой — тебе в помощь класс Math. Разработчикам WLD осталось только написать свою библиотеку, которую назвали WealthScript. С ней ты и будешь работать, чтобы получать данные из свечек, индикаторов, заходить в позиции и выходить из них. Как только потребуется еще что-то — весь .NET Framework к твоим услугам.
2. VS я использую для создания ТС, индикаторов и трейдерских компонент. Индикаторы и компоненты в исходных кодах выложены у меня на форуме, можешь их скачать и поизучать. Когда ты пишешь простые ТС, тогда все равно, где их писать. Если ТС посложнее с замысловатой логикой, тогда будет полезна отладка из VS. Ставишь точки останова, запускаешь свой проект, он подгружает WLD. В WLD запускаешь ТС, как она дойдет до точки останова, сразу откроется VS, где ты сможешь посмотреть все значения переменных, пройти код по шагам. Очень хорошо для нахождения ошибок кодирования. Вторая «фишка» VS — это представление твоих ТС в виде библиотеки. На выходе у тебя будет DLL файл. Можешь его спокойно переносить с компьютера на компьютер. Третья причина использования VS — это удобство разработки. Помощь в выборе переменных, свойств и методов (Intellisence), автоматическое форматирование кода, лучшая визуализация. Очень сильно сокращается время написания кода.

3. Почему ТС, написанные в WLD, хранятся в XML. Ответ прост. XML — стандарт для описания структуры данных и самих данных. Если в ТС есть параметры, то для каждого тикера можно задать Preferred Values. Проще всего взять код ТС, загнать его в XML, туда же заносить все значения параметров оптимизации для каждого тикера.
avatar
Тимофей, по поводу Group1. Тоже простая штука. Когда ты заходишь в позицию, то можешь каждой позиции дать метку. Затем из массива активных позиций ты можешь найти любую по ее метке. Хорошо для многопозиционных ТС, где ты определяешь, какую позицию прикрыть.

Здесь такая конструкция используется просто из-за того, что в WLD для правил писали универсальный код. Смысла для данной ТС он не имеет. Но вот если бы ты в правилах определил бы многопозиционную ТС, тогда по Group1 искалась бы позиция.
avatar

теги блога Тимофей Мартынов

....все тэги



UPDONW
Новый дизайн