У вас не стоит Flash Player
Настройки
#10940 - Thu Aug 26 2010 04:48 PM Стратегия Channel Breakout - RealTime
Laber Offline
journeyman

Registered: Mon Jun 28 2010
Записи: 59
После публикации подборки типовых статегий стало понятно,
что пользователи часто сталкиваются с трудностями
при практической работе со скриптами.
Я и сам немало попыхтел, прежде чем выяснил
некоторых технические подробности.
Для наглядности я публикую порядок работы
с конкретным скриптом на практике,
комментируя наиболее важные моменты.

Итак, реализуем стратегию "пробой канала" (Channel breakout),
называемую некоторыми High-Low.
Ее логика проста, ее описание есть в одной из публикаций.

Принципиальным моментом было заставить теоретические сигналы
превращаться в реальные сделки.
Для этого в самом скрипте ничего переделывать не потребовалось.
В TSLab я сделал следующее.

1. Создал и настроил скрипт через "Управление скриптами".
Как обычно, в редакторе я добавил блок внешнего скритпа
и указал в нем путь к файлу на C# (breakout_rt.cs).
Проверил - на истории работает.
Оптимизацию пока отложил.
Дело в том, что этот алгоритм работает на таймфремах от 15 минут.
А для проверки работы мне нужно было погонять скрипт
на минутном тайфрейме на учебном счете.

2. Создал портфель DemoPortfolio,
указал в нем инструмент (Газпром),
привязал к нему нужный счет
(в нашем случае учебный счет).
При подключении скрипта к портфелю
для параметра "Тип управления лимитами"
указал значение"Управление скриптом".
Мне проще контролировать ситуацию не "по умолчанию",
а, так сказать, указывать определенно то, что мне нужно.
Тем более в нашем примере мы продемонстрируем
как задавать размер позиции в лотах.

3. Для задания размера позиции в лотах
я использовал отдельный параметр,
значение которого можно менять без изменения в коде скрипта.
Этот параметр PositionVolumeParam - последний в списке параметров.
Его значение 2 - это чтобы убедиться, что не 1 (типа как-то по-умолчанию).
Поля Мин, Макс, Шаг для этого параметра 1 лишь для того,
чтобы он не участвовал (даже случайно) в оптимизации.

4. Открыл окно "Управление торговлей скриптами".
В нем отображен созданный мной портфель DemoPortfolio.
Нажимаю кнопку Старт - торговля началась.
Порядок торговли скриптами подробно описан
в документации, углубляться не стану.

Для работы в скрипте лучше использовать
завки "по рынку" или условные
(они тоже при срабатывании исполняются по рынку).
Если использовать лимитированне заявки,
то гипотетически возможна ситуация частичного исполнения,
а в таком случае довольно не просто согласовать
размер позиции "по сигналам" с размером фактической позиции.
Этот вопрос требует дополнительного исследования,
и пока я никак не могу его прокомментировать.

Вопрос применения сигналов стоп-лосс (фиксирование убытков),
тэйк-профит (фиксирование дохода), трэйл-стоп (скользящий стоп)
сводится к алгоритму скрипта.
Механизм отработки таких сигналов ничем не отличается
от отработки заявок по обычным сигналам.

Контролировать "теоритическую" позицию в алгоритме
совсем не сложно при помощи соответствующих переменных
(для примера загляните в файл с кодом скрипта).
Что же касается объема фактической позиции,
то TSLab довольно четко следит за тем,
есть ли реально что закрывать и сколько лотов.
Также для большей уверенности
можно использовать флаг "Автозакрытие позиции".

Вопрос с дробными позициями.
Вы можете открыть позицию с заданным объемом.
Например, на половину лимита (который Вы указали
через мараметр PositionVolumeParam.
Или открыть несколько позиций, объем каждой из которых
определятся алгоритмом скрипта.
Однако скрипт должен отвечать за ведение множества позиций.
Например, с помощью массива,
каждая ячейка которого указывает на отдельную позицию.
И, соответственно, скрипт определяет когда и какие из них закрывать.
Закрыть же произвольный объем от позиции невозможно
просто потому что позиция закрывается целиком.
То есь чтобы продавать накупленные бумаги частями,
надо сначала накупить этой бумаги этими самыми частями.

Очевидно, что для реализации более сложных алгоритмов
пользователь должен обладать достаточными навыками в программировании.
Необходимый инструментарий в платформе (TSLab) имеется.
Правильно его применить - дело человка.


На графике отображены заходы в позиции:





В прикрепленных файлах можно найти всю необходимую информацию по этой стратегии.


Attachments
breakout_rt_chart.png (3293 downloads)
Description: сриншот графика

breakout_rt_scheme.xml (477 downloads)
Description: блок-схема в xml-формате

breakout_rt_script.cs (552 downloads)
Description: скрипт на C#




Отредактировано Laber (Thu Aug 26 2010 04:51 PM)

Наверх
#10954 - Thu Aug 26 2010 07:05 PM Re: Стратегия Channel Breakout - RealTime [Re: Laber]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Содержательно ... smile
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#10957 - Thu Aug 26 2010 07:54 PM Re: Стратегия Channel Breakout - RealTime [Re: Laber]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Заданные здесь вопросы, более не актуальны и удалены.

Наверх
#10958 - Thu Aug 26 2010 08:48 PM Re: Стратегия Channel Breakout - RealTime [Re: Craft]
profit Offline
Pooh-Bah

Registered: Wed Jan 13 2010
Записи: 1835
Просадка считается от одного лота что ли?Если поставить 100лот то очень большой %
_________________________
Делаю простые вещи.

Наверх
#11071 - Fri Aug 27 2010 01:23 PM Re: Стратегия Channel Breakout - RealTime [Re: profit]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Laber, добрый день.

Сегодня было время опробовать в жизни предложенный Вами пример скрипта "реал-тайм" (почему в кавычках, думаю, дальше станет понятней). В связи с этим появился ряд вопросов, итак:
1. Почему для исполнения приказов реал-тайм Вы использовали методы: source.Positions.BuyIfGreater(bar+1, PositionVolume, BuyPrice, "LN") и source.Positions.SellIfLess(bar+1, PositionVolume, ShortPrice, "SN"), а не специально разработанные для реал-тайм: source.NewOrder(TSLab.DataSource.OrderType.Growth, true, BuyPrice, PositionVolume, "LN") и source.NewOrder(TSLab.DataSource.OrderType.Fall, false, ShortPrice, PositionVolume, "SN")???
2. Какое реал-тайм может быть с bar+1???

Далее, что мы имеем:
1. Условные заявки не выставляются при открытии бара и следовательно не исполняются по факту, как в случае использования методов TSLab.DataSource.OrderType.Growth и TSLab.DataSource.OrderType.Fall.
2. Условные заявки исполняются по маркету по закрытию бара.
В качестве зарисовки:









andy, стоило городить огород с написанием ТЗ, чтобы результат исказил заложенную идею. Результат:

1. работа в режиме реальных торгов (реал-тайм) - не реализовано.
2. отработка условных и рыночных заявок - псевдо обработка с исполнением по маркету на закрытии бара.
3. контроль текущей позиции - не реализован.
4. механика работы с дробными позициями, то есть не «на все», а заданными частями - не реализован.
5. реализация стоп-лосс - хорош стоп-лосс с реал-тайм по маркету на закрытии бара.
В качестве базового алгоритма будет использован Hi-Low (пробой канала).

Честно говоря всё больше и больше удивляет отношение вашего коллектива к просьбам клиентов. andy, в переписке Вы указали, что реал-тайм для ваших молодых специалистов - новый аспект освоения функционала программы и обучаем происходит на лету. В процессе обучения, думаю, без консультаций более опытных специалистов не обошлось. Ваши опытные специалисты не знают, что для реал-тайма существуют методы OrderType.Growth, OrderType.Fall и другие включая маркет внутри бара, а не псевдомаркет на закрытии???
Думаю - знают, но решили посчитать клиентов за дураков, предоставив лажу!!! Так, проще.

Последний вопрос: Можно ожидать от вашего коллектива когда-нибудь реализацию примера реал-тайм с использованием методов реал-тайм OrderType.Growth, OrderType.Fall и других, заложенных в возможностях программы для этих целей?

Наверх
#11072 - Fri Aug 27 2010 01:35 PM Re: Стратегия Channel Breakout - RealTime [Re: Craft]
profit Offline
Pooh-Bah

Registered: Wed Jan 13 2010
Записи: 1835
Коряга получилась что ли?
_________________________
Делаю простые вещи.

Наверх
#11073 - Fri Aug 27 2010 01:41 PM Re: Стратегия Channel Breakout - RealTime [Re: profit]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Мне иной раз хочется посмотреть в глаза разрабов.

Наверх
#11119 - Fri Aug 27 2010 04:57 PM Re: Стратегия Channel Breakout - RealTime [Re: Craft]
Laber Offline
journeyman

Registered: Mon Jun 28 2010
Записи: 59
Добрый день, уважаемый Craft.

Спешу ответить на Ваш "крик души".
Мне знакомы Ваши проблемы - хочется чтобы все работало,
и хорошо работало, и чтобы сразу,
но приходится приложить немало усилий
и потратить массу времени.

Для адекватного разговора хотел бы уточнить,
что не являюсь сотрудником TSLab,
и не мне отвечать за сотрудников
этого замечательного проекта.
Моя активность базируется на личной заинтересованности
как пользователя TSLab в развитии платформы,
обмене опытом - считаю долгом любого
помогать тем кто идет следом,
в ответ на получаемую помощь
от более опытных товарищей.

Теперь по-существу вопросов.

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


По контролю текущей позиции.
Позиция по сигналам контролируется внутри скрипта
с помощью переменных.
Фактическая позиция согласовывается с позицией по сигналам
посредством встроенных в платформу TSLab средств.
Не идеально - только потому, что полностью
подогнать реальную торговлю под теоретические сигналы
просто невозможно - это при тестировании на истории
заявка исполняется сразу, в полном объеме
и по заданной цене сигнала.

Торговля частями - я расписал
свой опыт решения этой проблемы вполне подробно.
Осталось только сесть и сделать.
Может есть причины сделать это за Вас?
Мне такие причины неизвестны - сообщите, если они есть.

Мое отношение к Вашим "просьбам" основано
на актуальности темы для других пользователей.
Поэтому в моих ответах затронуты наиболее важные
для других (а не только для Вас) темы.
В последних Ваших сообщениях мало нового
или интересного для других.
А эмоции - не в счет, на них ничего не заработать )))

Успехов в торговле!

Наверх
#11122 - Fri Aug 27 2010 05:10 PM Re: Стратегия Channel Breakout - RealTime [Re: Craft]
andy Offline

Pooh-Bah

Registered: Mon Feb 16 2009
Записи: 2130
Originally Posted By: Craft
Думаю - знают, но решили посчитать клиентов за дураков, предоставив лажу!!!


По существу вопроса Laber ответил.

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

Наверх
#11134 - Fri Aug 27 2010 06:52 PM Re: Стратегия Channel Breakout - RealTime [Re: andy]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Господа, суть проблемы предложенного примера "реал-тайм" описана в моём предыдущем посте. Да, пост получился несколько резок (думаю, причина этого ясна, т. к. результат превзошёл все ожидания...), но актуальности от этого не потерял.
В связи с этим, позволю себе повторить последний вопрос: Можно ожидать от вашего коллектива когда-нибудь реализацию примера реал-тайм с использованием методов реал-тайм OrderType.Growth, OrderType.Fall и других, заложенных в возможностях программы для этих целей?

Честно говоря, не могу понять в чём проблема? Laber, признателен Вам, за Ваш альтруизм по продвижению программы и эти вопросы относятся ни к Вам. Разговор о примере применения OrderType.Growth, OrderType.Fall идёт уже не первый месяц (если мне не изменяет память с апреля).
Это большая тайна, показать пример торговой логики из разработанных алгоритмов? Или вы не сталкивались с необходимостью использования этих методов? Тогда зачем их вводили в библиотеку своих скриптов, если в них не было необходимости?
Настолько прагматичны? ТЗ сформулировано, цели и задачи его ясны, назовите цену, сколько будет стоить блок торговой логики - готов заплатить вам чтобы потом выложить пользователям в свободный доступ на форуме, если иначе этого сделать никак нельзя.

P. S. Ещё одна большая загадка для меня - это невозможность реализации закрытия части позиции, нежели как через дублирование поз и закрытия части из них.

Во всех Лабах для этого необходим только метод определения количества имеющихся акций/контрактов на начало бара.

1. Открытие позиции = Количество заданных пользователем акций + Реальное кол-во имеющихся акций в начале бара = позволяет перевернуться на раз-два.
2. Промежуточное закрытие = Количество заданных пользователем акций - Выбранное пользователем кол-во акций для частичного закрытия позиции. На открытии следующего бара уже будет известно Реальное кол-во имеющихся акций, закрылось что-то или нет и что можно делать внутри бара.
Как видите, никаких массивов.

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

Наверх
#11137 - Fri Aug 27 2010 08:00 PM Re: Стратегия Channel Breakout - RealTime [Re: Craft]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Если вы заметили, то эти функции были введены в API, как раз по просьбе "трудящихся", для низкоуровнего контроля заявок. Официальный API основан на использования позиций, которые позволяют тестировать алгоритмы в лаборатории.
Когда были введены эти функции, было сказано, что используйте их на свой страх и риск, если они вам очень нужны. Так же было сказано, что для программирования с помощью этих функции необходимы навыки программирования превышающие навыки начинающих. Судя по реакции, нашлись люди, которые во всем разобрались, т.к. в данном случае функциональность сравнима с низкоуровневым API любого терминала.
Если вам не по силам написать код контроля заявок самостоятельно - наймите программиста.

Наверх
#11143 - Fri Aug 27 2010 10:08 PM Re: Стратегия Channel Breakout - RealTime [Re: Nektodron]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
э-э-э-х ! frown
Вроде программа позиционировалась для всех и каждого?! Разве нет? А получается, что опять кто-то пытается выделить толпу программистов, которым позволено нечто большее, чем нам, небольшой кучке трейдеров... Ну и правильно! Обуем эту толпу на бабло! grin
Craft не унывайте, посидим, покумекаем и будем умнее!
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#11144 - Fri Aug 27 2010 10:46 PM Re: Стратегия Channel Breakout - RealTime [Re: Nektodron]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Originally Posted By: Nektodron
Если вам не по силам написать код контроля заявок самостоятельно - наймите программиста.
Код учёта заявок мне написать как раз-то по силам и кажется я его доделал, проверю в понедельник.

Наверх
#11145 - Fri Aug 27 2010 10:55 PM Re: Стратегия Channel Breakout - RealTime [Re: 777]
Craft Offline
enthusiast

Registered: Thu Jan 21 2010
Записи: 319
Спасибо, 777, что приободрили.

Наверх
#11147 - Sat Aug 28 2010 12:15 AM Re: Стратегия Channel Breakout - RealTime [Re: 777]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Originally Posted By: 777
э-э-э-х ! frown
Вроде программа позиционировалась для всех и каждого?! Разве нет? А получается, что опять кто-то пытается выделить толпу программистов, которым позволено нечто большее, чем нам, небольшой кучке трейдеров... Ну и правильно! Обуем эту толпу на бабло! grin
Craft не унывайте, посидим, покумекаем и будем умнее!

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

Наверх
#11149 - Sat Aug 28 2010 12:30 AM Re: Стратегия Channel Breakout - RealTime [Re: Nektodron]
Frend Offline
Pooh-Bah

Registered: Sat Jan 09 2010
Записи: 2054
Это можно делать в API ? или я упустил где то и сделали уже с блоков?
_________________________
Помогу с реализацией вашей идеи, оценкой системы. Консультации
frendwork@rambler.ru

Наверх
#11152 - Sat Aug 28 2010 01:18 AM Re: Стратегия Channel Breakout - RealTime [Re: Nektodron]
777 Offline
Carpal Tunnel

Registered: Thu Apr 01 2010
Записи: 2564
Loc: г. Дзержинский
Nektodron, да я знаю! Я человека хотел приободрить. А то Вы его послали так сразу - к программистам... grin
_________________________
«Существует 3 типа лжи: ложь, наглая ложь и статистика»
Дизраэли.

Наверх
#11162 - Sat Aug 28 2010 09:49 AM Re: Стратегия Channel Breakout - RealTime [Re: 777]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
В принципе, последовательный вход частями можно сделать и блоками, никто не мешает. Только довольно громоздко получится.

Наверх
#11880 - Mon Sep 06 2010 12:03 AM Re: Стратегия Channel Breakout - RealTime [Re: Nektodron]
serg Offline
Pooh-Bah

Registered: Fri May 14 2010
Записи: 1663
Loc: Россия
я вот был бы рад если появиться блоки дробного открытия закрытия позиций....увы, не программист )), хотя признателем господам разаработчикам за их TSLаб )))))

Наверх
#11940 - Mon Sep 06 2010 01:50 PM Re: Стратегия Channel Breakout - RealTime [Re: serg]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Про дробное закрытие уже обсуждали. В ближайшее время не будет, но в планах стоит. Просто это довольно сложно сделать в поддержке с лабораторией.

Наверх


Moderator:  ViL, sar