Для того, чтобы эффективно конкурировать с более опытными, быстрыми и крупными игроками желательно научиться получать преимущества от различного софта и технологий, комбинируя их так, как выгодно именно Вам. Инструменты с которыми Вы работаете должны быть удобными и по возможности не дорогими.
Стараясь дергать эти преимущества отовсюду мы часто можем частично работать с самописным софтом(проторговщики, тестировщики и т.д.), который дает нам максимальную гибкость, но разрабатывать стратегии в сторонних программах, и несомненно можем столкнуться с проблемами несовпадения значений индикаторов, сделок и со сложностью отладки стратегий.
Как многие из Вас знают, я разрабатываю, тестирую и всячески анализирую стратегии на Wealth-lab, а проторговываю с использованием библиотек S#+Plaza2.
Соответственно мне часто приходится бороться с шероховатостями совместимости данных орудий труда современного трейдера, чтобы получить удобный инструмент для работы.
Я описывал уже один из примеров такой шероховатости — это несовпадение стандартных индикаторов. Благо С# позволил довольно безболезненно перенести индикаторы из WealthLab и использовать их в реальной работе.
Сегодня я расскажу Вам про 2 другие шероховатости с которыми Вы, возможно столкнетесь — это отладка стратегий и отрисовка сделок.
При переводе стратегий из Wealth-lab в системы автоматической торговли нужно эти стратегии отлаживать, смотреть, чтобы сделки совпадали. Делать это по логам — не удобно(вообще текстовые файлы это не наглядно), но к счастью у WLD есть компонент, который якобы может нам помочь. Суть его в том, что если у нас есть файл с записанными сделками, мы можем его загрузить в Wealth и все посмотреть.
Все бы было круто — если бы этот компонент работал, однако все оказалось сложнее.
Мне было известно, что в библиотеке компонентов их сообщества есть такая возможность, которой пользовались в основном ручные трейдеры торгующие на NinjaTrader6, для того, чтобы получить статистики по своей торговле.
С одной стороны код написанный кем-то из сообщества, не обязан быть идеальным, но он оказался хуже, чем я себе представлял, вкратце я расскажу о том, как я решил эти проблемы, как я использую данную компонент и с чем Вам придется столкнуться, если Вы захотите воспользоваться оригиналом, а в качестве бонуса я поделюсь исправленным кодом компонента!
Править оригинальный код пришлось несколько раз, проблемы были различны..
1-ая — это то, что при эмуляции сделок S# генерирует стаканы(при отладке и тестировании), если вы тестируете стратегию на тиках, в связи с чем сделка может очутиться немного выше или ниже на 1-2 тика. Так получалось, что иногда сделка на 1 тик находилась выше или ниже сделки из-за чего сделка не отображалась. Особенно это заметно, если подтягивать данные из FinamDataFeed, часто их котировки оставляют желать лучшего, потом они конечно их правят, в общем, несовпадения случаются.
Код компонента был улучшен. Как видно на рисунке, когда имеет место несовпадение цены входа и бара, BackGrownd окрашивается в светло розовый цвет. При этом, если цена выше бара будет браться High, если цена ниже бара, будет браться Low.
После того, как Вам будет доступен исправленный компонент, Вы сможете изменить цвет BackGrownd, выделить бар как-то иначе, либо вообще его закомментировать, чтобы он не смущал.
2-ая — это то, что ExitAtStop (эмуляция выхода по определенной цене) почему-то не работал. Поэтому пришлось отовсюду его выкинуть и заменить на ExitAtlimit — не понятно почему разработчики Wealth не исправили это сами, ведь, если цена есть на баре, по лимиту ее и откроет и закроет без проблем.
Еще одна проблема с которой мне пришлось встретиться -это то, что Wealth изначально ориентирован на дневки, и когда приходят сделки с конкретными минутами, а тем более секундами — сделка просто не засчитывалась.
Этот момент, конечно тоже удалось решить…
Теперь в зависимости от тайм-фрейма он берет начло свечи. Ведь если у нас сделка прошла в 53 минуты, то ее захватывает свеча, которая началась в 50 мин.
Теперь работает! =)
Многие опытные алго советуют не объединять визуализацию и торговлю, и я в этом вопросе солидарен с знатоками. То есть я использую внешнюю отрисовку сделок. Внешняя отрисовка нужна дабы не нагружать сервер лишними задачами и проторговщик, чтобы работал стабильнее. Не удивительно, что отрисовывать сами сделки мне привычнее и удобнее прямо в Wealth-lab(Однако, что Финам делает с котировками сейчас — это караул).
Для того, чтобы такое можно было применить в реальной жизни нужно выполнить следующие действия:
- В программе с помощью которой торгуете настроить сохранение сделок по образцу, в формате CSV
- Настроить папку сохранения в SkyDrive
- Иметь Dll, собранную из исправленных компонентов WealthLab Community
- Вписать волшебную строчку в коде стратегии в WLD
- Практически в реальном времени смотреть через WLD как торгуется каждая стратегия из портфеля по-отдельности!
Критики могут заявить, что сделки, которые проходят через плазу, видно, и в Quik… но
а) Quik показывает консолидированную позицию по тому или иному инструменту — это неудобно.
б)статистику квик не считает, ну и визуалайзеров там нет.
в)С Qpile я не знаком, да и не хочется… из-за чего сохранять сделки и воспроизводить их не представлялось возможности. Да и индикаторы, из Wealth в Quik перекидывать проблематично, а некоторые оригинальные индикаторы вообще невозможно.
- Алгоритм, который нужно прописать в окно стратегии. Туда также можно накидать индикаторов для удобства.
Название тикера должно совпадать с названием тикера, прописанном в текстовом файле.
Для наглядности, очень помогает вывести индикаторы на график — благо с индикаторами проблем нет)
- И Пересобранная Dll в папке C:\Program Files\MS123\Wealth-Lab Developer 6
1)Для начала нужно скачать сами исходники
http://www.wealth-lab.com/Wiki/
Конечно, они доступны только для зарегистрированных пользователей
2)Заменяем, выложенные мной код, вместо оригинального SimTradeFile2:
(814 строка PositionEx.cs)
Копируем вместо стандартного компонента, тот который можно скачать под статьей.
Пользуйтесь на здоровье!
Как-нибудь, я хотел бы рассказать и про отрисовку своих индикаторов, я очень люблю все уникальное например индикаторы, которые могли бы описать некие принципы, найденные мной в книгах и статьях, которые мне хотелось бы протестировать.
Конечно, такие индикаторы часто просто невозможно воспроизвести в WLD, зато их можно создать c помощью иных средств и более точных данных, но как их тестировать, да и просто посмотреть на графике? Для этого тоже можно использовать WLD там же можно провести достаточно точное и быстрое тестирование и оптимизацию с комиссиями, проскальзыванием, а главное со сложными стопами и фильтрами без особых хлопот. Конечно при загрузке есть достаточно много подводных камней )
Так, что
если эта статья будет достаточно популярна, то поделюсь и этим опытом)
ТЫ ПОСТАВИЛ ПЛЮС И Я ТЕБЕ БЛАГОДАРЕН!
Код компонента
Начать развиваться
я давно отказался от всех стандартных индикаторов, точнее — никогда их не использовал вживую.
Wealth применяю больше для offline визуализации, но любую информацию коплю и с благодарностью «складываю в папочку», спасибо.
Возможно, когда рынок станет более шумоподобным, тоже полюблю стандартное отклонение.