Скрипт SmartAlgoNet (Сеточник)

[ скрипт  lua  qlua  квик  quik  сеточник  SmartAlgoNet  ]

Скрипт позволяет установить сетку ордеров на вход (выход) в позицию. Работает как с фондовой, так и на срочной, валютной секциях. Скрипт написан на языке LUA. Среда исполнения - торговый терминал Quik.

Видео настроек, работы скрипта

Основные возможности скрипта

Установка сетки ордеров на вход и выход. Динамическая сетка, алгоритмический шаг уровней. Стоп-лосс, контроль прибыли. Оповещения. Журнал сделок.

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

Для каждого запуска формируется файл лога в каталоге /logs. Если в процессе работы скрипта возникнут ошибки, то будет дополнительно сформирован файл лога ошибок. Если ошибок будет слишком много, то скрипт принудительно остановится.

Основное окно скрипта.

Главное окно содержит колонки вывода и управления информацией:

Дополнительное окно состояния сетки содержит поля:

Окно настроек скрипта.

Для настройки торговых параметров по инструменту необходимо выполнить команду “[…]” в поле “Set”. В результате будет показана форма настроек.

Если включить настройку отображения окна настроек с закладками (параметр WINDOW_TABS = 1 в файле ), то окно будет показано в таком виде:

Большинство параметров содержат описание. Его можно вызвать по кнопке “?”.

Раздел “ОБЩИЕ НАСТРОЙКИ” содержит настройки:

Окно формы редактирования позиции:

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

Раздел “ТОРГОВЫЕ НАСТРОЙКИ” содержит настройки:

Раздел “СТУПЕНИ ВХОДА”

МОДУЛЬ АЛГОРИТМИЧЕСКАЯ АКТИВАЦИЯ

Команада “Выбрать алгоритмы Активиции|Разворота сетки” - Режим активации сетки по событиям алгоритма. Если выбраны алгоритмы, то сетка ордеров будет устанавливаться(разворачиваться) автоматически по рассчитанным сигналам. Сигнал - это когда все выбранные алгоритмы выдают сигнал одного направления. Например, выбраны алгоримты MACD, PSAR. Сигнал на ЛОНГ - это когда оба алгоритма переходят в направление ЛОНГ. Переход может быть не одновременным. В данном режиме также можно управлять сеткой ручными командами. Если текущее направление по алгоритмам ЛОНГ, можно открыть сетку в направлении ШОРТ ручной командой. Одновременно можно выбрать несколько алгоритмов:

Виды алгоритмов активации:


Пример окна настроек активации сетки алгоритмов MACD KELTNER STOCH:

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


МОДУЛЬ ДИНАМИЧЕСКАЯ СЕТКА

Алгоритм динамических уровней сетки - В данном режиме происходит расчет канала по выбранному алгоритму. Его ширина и одна из границ (для ЛОНГА - нижняя, для ШОРТА - верхняя) - это база расчета. Для ЛОНГА уровень задается как, например, 30% (значение не ограничено, можно вводить и отрицательные значения и значения больше 100) ширины от нижней границы. Т.о. по мере изменения канала будут смещаться ордера и уровни на новую расчетную точку = 30% от ширины. Для ШОРТ, наоборот, от верхней границы. В данном режиме уровни заполняются не в ценах инструмента а в процентах от ширины канала.


Пример окна настройки динамических уровней:

В режиме динамических уровней по умолчанию тип цены закрытия задается как “% dynamic range”. Но также доступны и базовые типы “Steps, %, Pips”. В таком случае, при заполнении уровней, динамический шаг будет рассчитан исходя из заданной величины шага, т.е. обратный расчет. При работе сетки уже будут учитываться только динамические уровни.

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


Модуль АЛГОРИТМИЧЕСКИЙ ШАГ УРОВНЯ

Пример окна настройки алгоритмического шага уровня для алгоритма ATR:


Дополнительный модуль “ТРЕНДОВАЯ СЕТКА”

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

Трейл сетки в таком режиме работает против направления сетки. Для примера, мы установили сетку в лонг, установив ордера, ожидая движения вверх. Но если цена пойдет против, сетка будет смещаться вниз, подтягивая уровни за ценой. И когда нисходящее движения закончится начнут исполняться ордера.

Если заданы настройки для установки стоп-ордера, то после исполнения уровня на открытие позиции будет установлен стоп ордер. Т.о. в таком режиме, если движени не подтвердится, то исполнится стоп-ордера, установленный на объем входа. Т.е. риск в таком режиме меньше чем в обычном, т.к. число исполненных ордерв на вход будет меньше.


Дополнительный модуль “ЗАКРЫВАТЬ УРОВНИ ОТ СРЕДНЕЙ”

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

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

Для примера: Есть 4-е уровня на покупку. При исполнении первого уровня будет установлен ордер на выход 1. При исполнении 2-ого уровня будет установлено два уровня 1+2 на новой средней позции первого и второго уровней. И т.д. пока не будут исполнены все уровня, закрывающиеся от средней.

Если указать число уровней закрытия от средней больше нуля, то только это количество уровней будет закрываться от средней, остальные будут работать в обычном режиме. Например, указано 3 уровня для закрытия по средней, всего уровней 5. Уровни 4, 5 будут закрываться индивидуально, а первые три уровня от средней.


НАСТРОЙКИ УСТАНОВКИ СЕТКИ

ПОДРАЗДЕЛ РЕЖИМЫ
ПОДРАЗДЕЛ ОБЩИЕ

Примеры окон редактирования активной сетки:

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

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


ПОДРАЗДЕЛ ПАРАМЕТРЫ

Пример окна настроек уровней вручную в режиме “Manual”.

Окно настроек уровней вручную в режиме Тип цены шага уровней равный Currency.

В этом случае уровни - это конкретно заданная цена в валюте цены инструмента.


ПОДРАЗДЕЛ ЗАКРЫТИЕ

Режим Вида сетки уровней “Fix net” рассчитывает уровни с заданным шагом в параметре Шаг сетки с учетом Коэфф. шага сетки. Т.е. будут установлены ордера, пока не будет достигнут заданный объем входа в позицию или не будет достигнута глубина сетки, если она задана.

Режим Вида сетки уровней “Distribution” рассчитывает уровни от глубины и числа шагов сетки. Т.е. шаг сетки - это частное от деления глубины на число шагов. Если задан Коэфф. шага сетки, то расчет производится по формуле суммы геометрической последовательности. Рассчитанный шаг округляется по правилам округления. После расчета шага производится расчет уровней сетки пока не будет достигнут торговый объем. В этом режиме важно соотносить число шагов сетки и торговый объем, т.к. может возникнуть ситуация, когда объем будет выбран раньше, чем достигнуто заданное число уровней.

Раздел “СТУПЕНИ ВХОДА. ПРОФИТ-ТРЕЙЛ” содержит настройки:

В данном режиме контролируется уровень общей прибыли которая складывается из прибыли зафиксированных уровней и текущей прибыли открытых уровней. Если сформирован уровень отсечки прибыли, то при снижении прибыли ниже уровня отсечки, происходит закрытие текущей позиции и снятие активной сетки.

Пример: Задано контрольное значение прибыли 2000 руб. Интервал контроля 10 минут. Шаг прибыли 500 рублей. Как только прибыль достигнет 2000 рублей активируется трейл и запускается таймер. Если в течении таймера прибыли так и останется выше 2000, то установится уровень фиксации прибыли 2000 рублей. Либо, если уровень прибыли поднимется 2000 + 500 = 2500 рублей, то установится уровень фиксации прибыли 2000 рублей. И так далее 3000 -> 2500, 3500 -> 3000 … Т.о. достижение очередного уровня прибыли сдвигает уровень фиксации. Либо, если прибыль держится выше текущего контрольного уровня прибыли дольше заданного временного интервал, то уровень фиксации также устанавливается на текущий контрольный уровень.

Раздел “СТУПЕНИ ВХОДА. ВЫКУП” содержит настройки:

В данном режиме по команде “Установить сетку уровней” будет открыта позиция по рынку (или по конкретной цене) в объеме, заданном в параметре “Торговый объем шага объема выкупа”. На этот объем будет установлена сетка ордеров закрытия позиции, а на остаток объема будет установлена основная сетка уровней. Т.о. будет сразу осуществлен вход на объем выкупа и установлены ордера выхода, а на остаток установлена основная сетка.

Раздел “СТУПЕНИ ВХОДА. ТРЕЙЛ” содержит настройки:

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

Режим недоступен для активированного режима Динамическая сетка.

Раздел “СТУПЕНИ ВХОДА. ОТЛОЖЕННАЯ АКТИВАЦИЯ” содержит настройки:

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


Дополнительный модуль “ОТЛОЖЕННОЕ ИСПОЛНЕНИЕ”

Цена опускается за уровень 1 на укзанный шаг открытия, в этот момент активируется уровень 1 и начинается отслеживание “отката” цена. Как только цена достигает уровня “отката”, рассчитанного как минимум цены + размер отступа, происходит исполнение активированных ордеров. Заеркально происходит активация-исполнение ордеров закрытия: Цена поднимается за уровень закртыия 1 на укзанный шаг закрытия, в этот момент активируется уровень закрытия 1 и начинается отслеживание “отката” цена. Как только цена достигает уровня “отката”, рассчитанного как максимуцм цены - размер отступа, происходит исполнение активированных ордеров закрытия.

Если цена двигается без “откатов”, то могут одновременно активироваться несколько ордеров. В омент “отката” на указанный шаг, исполнятся все активированные ордера. Т.о. цена исполнения одера может быть заметно ниже-выше по сравнению с физическим лимитным ордером на уровне.


Раздел “НАСТРОЙКИ СТОПА” содержит настройки:

Раздел “КОНТРОЛЬ СДЕЛОК” содержит настройки

В скрипте (и в окне настроек) действуют следующие правила редактирования значения параметров:

Скрипт поддерживает горячие клавиши:

Работа скрипта.

Для запуска торговли по инструменту необходимо изменить состояние строки по инструменту, исполнив команду в поле “state”. Таким же образом происходит остановка торговли по строке скрипта. Для удаления строки из скрипта необходимо выбрать команду “Del” в первой колонке […]. При изменении позиции по инструменту скрипт выведет значение в поле “Position”. Это происходит даже при остановленной торговле по инструменту.

Если строка находится в состоянии “Run” и введены настройки установки стоп-ордеров и сетки ордеров, то по команде установки сетки ордеров произойдет автоматическая постановка соответствующих ордеров.

Если происходит дальнейшее изменение позиции, то скрипт отслеживает изменение позиции и перевыставляет ордера в соответствии с новой позицией и новой средней ценой.

Если происходит закрытие позиции, то скрипт автоматически снимает установленные стоп ордера.

При подаче команды на установку сетки ордеров происходит анализ настроек. Если включен режим выкупа, устанавливается ордер на торговый объем выкупа (вход по рынку). При его исполнении происходит заполнение уровней сетки и установка ордеров сетки.

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

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

Для каждой строки можно контролировать сетку уровней через дополнительное окно сетки уровней:

В этом окне можно быстро выключить активность уровня, что приведет к снятию ордера.

В этом окне можно быстро выключить активность уровня, что приведет к снятию ордера.

Если выполнить команду “Калькулятор инструмента” из окна настроек или команду “+/-“ из основного окна, то откроется окно калькулятора по инструменту:

В этом окне можно рассчитать взаимные значения между введенными параметрами. Также выводится справочная информация по инструменту.

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

Также скрипт поддерживает отправку сообщений в Телеграм, E-Mail, реализованную через библиотеку библиотеку