После публикации подборки типовых статегий стало понятно,
что пользователи часто сталкиваются с трудностями
при практической работе со скриптами.
Я и сам немало попыхтел, прежде чем выяснил
некоторых технические подробности.
Для наглядности я публикую порядок работы
с конкретным скриптом на практике,
комментируя наиболее важные моменты.
Итак, реализуем стратегию "пробой канала" (Channel breakout),
называемую некоторыми High-Low.
Ее логика проста, ее описание есть в одной из публикаций.
Принципиальным моментом было заставить теоретические сигналы
превращаться в реальные сделки.
Для этого в самом скрипте ничего переделывать не потребовалось.
В TSLab я сделал следующее.
1. Создал и настроил скрипт через "Управление скриптами".
Как обычно, в редакторе я добавил блок внешнего скритпа
и указал в нем путь к файлу на C# (breakout_rt.cs).
Проверил - на истории работает.
Оптимизацию пока отложил.
Дело в том, что этот алгоритм работает на таймфремах от 15 минут.
А для проверки работы мне нужно было погонять скрипт
на минутном тайфрейме на учебном счете.
2. Создал портфель DemoPortfolio,
указал в нем инструмент (Газпром),
привязал к нему нужный счет
(в нашем случае учебный счет).
При подключении скрипта к портфелю
для параметра "Тип управления лимитами"
указал значение"Управление скриптом".
Мне проще контролировать ситуацию не "по умолчанию",
а, так сказать, указывать определенно то, что мне нужно.
Тем более в нашем примере мы продемонстрируем
как задавать размер позиции в лотах.
3. Для задания размера позиции в лотах
я использовал отдельный параметр,
значение которого можно менять без изменения в коде скрипта.
Этот параметр PositionVolumeParam - последний в списке параметров.
Его значение 2 - это чтобы убедиться, что не 1 (типа как-то по-умолчанию).
Поля Мин, Макс, Шаг для этого параметра 1 лишь для того,
чтобы он не участвовал (даже случайно) в оптимизации.
4. Открыл окно "Управление торговлей скриптами".
В нем отображен созданный мной портфель DemoPortfolio.
Нажимаю кнопку Старт - торговля началась.
Порядок торговли скриптами подробно описан
в документации, углубляться не стану.
Для работы в скрипте лучше использовать
завки "по рынку" или условные
(они тоже при срабатывании исполняются по рынку).
Если использовать лимитированне заявки,
то гипотетически возможна ситуация частичного исполнения,
а в таком случае довольно не просто согласовать
размер позиции "по сигналам" с размером фактической позиции.
Этот вопрос требует дополнительного исследования,
и пока я никак не могу его прокомментировать.
Вопрос применения сигналов стоп-лосс (фиксирование убытков),
тэйк-профит (фиксирование дохода), трэйл-стоп (скользящий стоп)
сводится к алгоритму скрипта.
Механизм отработки таких сигналов ничем не отличается
от отработки заявок по обычным сигналам.
Контролировать "теоритическую" позицию в алгоритме
совсем не сложно при помощи соответствующих переменных
(для примера загляните в файл с кодом скрипта).
Что же касается объема фактической позиции,
то TSLab довольно четко следит за тем,
есть ли реально что закрывать и сколько лотов.
Также для большей уверенности
можно использовать флаг "Автозакрытие позиции".
Вопрос с дробными позициями.
Вы можете открыть позицию с заданным объемом.
Например, на половину лимита (который Вы указали
через мараметр PositionVolumeParam.
Или открыть несколько позиций, объем каждой из которых
определятся алгоритмом скрипта.
Однако скрипт должен отвечать за ведение множества позиций.
Например, с помощью массива,
каждая ячейка которого указывает на отдельную позицию.
И, соответственно, скрипт определяет когда и какие из них закрывать.
Закрыть же произвольный объем от позиции невозможно
просто потому что позиция закрывается целиком.
То есь чтобы продавать накупленные бумаги частями,
надо сначала накупить этой бумаги этими самыми частями.
Очевидно, что для реализации более сложных алгоритмов
пользователь должен обладать достаточными навыками в программировании.
Необходимый инструментарий в платформе (TSLab) имеется.
Правильно его применить - дело человка.
На графике отображены заходы в позиции:
В прикрепленных файлах можно найти всю необходимую информацию по этой стратегии.