Найти в Дзене

Создаем пошагово скрипт стратегии в TSLab ч.1

Добрый день.
Сегодня мы начнем создавать скрипт для тестирования стратегии в TSLab Скрипт будет стоить канал в зависимости от максимумов и минимумов, и на определенных уровнях этого канала выставлять лимитные заявки на покупку. О скрипте стратегии: в канале генерируется 3 сигнала на покупку на разных уровнях и выставляются тейки и стоп-лосс.
Для сигнала 1 тейк равен 4 ATR (в среднем 4 дня)
Для сигнала 2 тейк равен 5 ATR (в среднем 5 дней)
Для сигнала 3 тейк равен 10 ATR (в среднем 10 дней) Пример сделок данного скрипта: Итоговый скрипт: Константы мы пока не будем добавлять, их можно будет добавить при желании позже (но можно и добавить - они есть на некоторых скринах, но в вычислениях пока не используются, оставим на потом). Итоговый график доходности: Итак, будем стоить его с нуля.... Добавляем блоки и соединяем их между собой. Блоки добавляются через поиск и перетягиванием мышкой на область скрипта. Блоки соединяются между собой нажатием мышки на входе или выходе блока и перетяги

Добрый день.

Сегодня мы начнем создавать скрипт для тестирования стратегии в
TSLab

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

О скрипте стратегии: в канале генерируется 3 сигнала на покупку на разных уровнях и выставляются тейки и стоп-лосс.
Для сигнала 1 тейк равен 4 ATR (в среднем 4 дня)
Для сигнала 2 тейк равен 5 ATR (в среднем 5 дней)
Для сигнала 3 тейк равен 10 ATR (в среднем 10 дней)

Пример сделок данного скрипта:

Итоговый скрипт:

-2

Константы мы пока не будем добавлять, их можно будет добавить при желании позже (но можно и добавить - они есть на некоторых скринах, но в вычислениях пока не используются, оставим на потом).

Итоговый график доходности:

-3

Итак, будем стоить его с нуля....

Добавляем блоки и соединяем их между собой.

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

Блоки соединяются между собой нажатием мышки на входе или выходе блока и перетягиванием мыши до другого блока. Если все делаете верно, блоки автоматически соединяются линией.

1. Добавляем блок Торгуемый инструмент. Далее в блоке выбирается торгуемый инструмент (например акция или фьючерс)

-4

2. Добавляем Относительная комиссия. И соединяем его с Блоком торгуемый инструмент.

-5

3. Добавляем Панель графика. И соединяем его с блоком Торгуемый инструмент.

-6
-7

4. Далее находим блок Максимум и блок Минимум. Перетягиваем их на область скрипта и соединяем с блоком Торгуемый инструмент. Блок максимум и минимум на выходе будут выдавать значение максимума и минимума свечи.

-8

5. Далее добавляем блок закрытие. Блок закрытие на выходе будут выдавать значение закрытия свечи. Соединяем его с блоком Торгуемый инструмент.

-9

Теперь у нас есть:
- Источник где выбирается торгуемый инструмент
- Относительная комиссия в % от оборота
- Максимум, Минимум, Закрытие свечи для построения скрипта

6. Добавляем блоки Максимум За и Минимум За.
Блок Максимум соединяем с блоком Максимум За.
Блок Минимум соединяем с блоком Минимум За.

Блок Максимум за, выдает самый большой максимум свечи за указанное количество свечей.
Блок Минимум за выдает, выдает наименьший минимум свечи за указанное количество свечей.

-10

7. Добавляем блок индикатор ATR. Он будет считать средний диапазон свечи за указанное количество свечей. В данном примере считается средний диапазон за 20 свечей. Это значение мы будем использовать например для выставления тейк-профита от точки входа. Соединяем блок ATR с блоком Торгуемый инструмент.

-11

8. Далее добавляем блок Формула. Блок формула соединяем с блоком Максимум За.

-12

Можно добавить сразу несколько блоков, чтобы потом их соединять с нужными блоками. Добавляем сразу 10 блоков формула. Каждый блок будет называться Формула, Формула1, Формула2, Формула3 и так далее.

Для информации. При добавлении Блоков они автоматически получают название, но его можно переименовать, например чтобы понимать что данный блок делает.

-13

9. После того, как мы добавили 10 блоков Формула, мы перетягиваем мышкой блок Формула1 под блок Формула, и блок Формула 2 под блок Формула1. Блоки Формула1 и Формула2 соединяем с блоком Максимум За.

-14

Таким образом, максимальное значение из 480 свечей (это значение можно поменять в любой момент) будет попадать в блоки: Формула1, Формула2 и Формула3.

Далее блоки: Формула1, Формула2 и Формула3 будем соединять с другими блоками.

В блоках: Формула1, Формула2 и Формула3 мы будем писать простые команды на языке C#
Подробнее
о знаках и символах написано тут

10. Далее постараюсь подробно описать какие блоки нужно соединять и как они делают расчет и формируют сигнал.

-15

а) Блок с названием Формула6 , является формулой, поэтому в нем пишем название блоков и символ, в данном случае из Блока называемого МаксимуЗа вычитаем блок МинимумЗа . Формула для вставки: МаксимуЗа-МинимумЗа
Вычисляемое значение будет передаваться в блок называемый Формула8
По сути это динамичный канал за 480 максимумов и 40 минимумов
б) Далее в блоке Формула8 полученное значение умножается на 0,6
Что является 60% значением ширины канала. Данное значение передается в блок называемый Формула
в) Далее в блоке Формула производится вычисление. Формула для вставки:
МаксимуЗа-Формула8 . Эта формула вычисляет цену для лимитной заявки.
Т.е из МаксимуЗа вычитается Формула8 и получается что лимитную заявку выставляем на уровне 40% от МинимумЗа
Это 60% коррекция по Фибо к восходящей волне

11. Далее добавляем блоки для открытия позиции

-16

а) Открытие позиции лимитной ценой
- Соединяем блок с блоком Источник
- Соединяем блок с блоком Формула. Блок Формула задает цену выставления лимитной заявки
- Соединяем блок с блоком Логическая формула (у меня название блока ЛогичесФормула) .
Блок ЛогичесФормула имеет формулу сравнения
Минимум[-10]<Минимум
Это значит что он сравнивает минимум 10-й свечи назад с минимумом текущей свечи.
Т.е условно когда цена доходит до нашей лимитной заявки, дополнительно сравнивается, чтобы минимум текущей свечи был больше, чем минимум 10-й свечи назад. Чтобы не покупать на сильно падающем рынке. Т.е после падения, рынок растет 10 дней, прежде чем происходит покупка. Если же на 10-й день после падения , минимум обновляется, то покупка не происходит.

-17

12. Далее добавляем блоки для закрытия позиции и соединяем их между собой как на рисунке

-18

а) ЦенаВхода - блок запоминает цену входа в позицию
б) Закрытие позиции лимитной ценой (на рисунке блок называется ЗакрПозиЛимиЦено2) - блок выставляет лимитную цену закрытия позиции
в) Закрытие позиции по рынку (на рисунке блок называется ЗакрПозиПоРынк) - блок закрывает позицию по рынку
г) Формула (на рисунке блок называется Формула3) - В блоке формула:
ЦенаВхода+ATR+ATR+ATR+ATR
Блок осуществляет вычисление цены для выставления лимитной заявки на продажу, так называемый тейк.
Данное количество ATR можно потом поменять на константу, например формула:
Константа3*ATR+ЦенаВхода
Это может быть полезно при тестировании стратегии и улучшении ее показателей.
д) Логическая формула (на рисунке блок называется ЛогичесФормула1) -
МинимумЗа[-1]>МинимумЗа
Как только обновляется минимум в канале, срабатывает логическое условие и выставляется заявка закрытия позиции по рынку.

-19

Итоговая схема по которой происходит вход №1 и закрытие позиции по тейку либо по стопу будет выглядеть так.

-20

Связи распишу подробнее:

-21
-22
-23
-24
-25

По итогу будем искать варианты улучшения данной системы.

Продолжение будет в следующей статье.

Последние улучшения и доработки

Если Вам понравился материал, Вы можете поддержать меня поставив лайк или Донатом нажав кнопку поддержать внизу данной статьи.