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

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

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

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

rutube

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

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

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

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

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

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

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

Чтобы добавить торгуемый инструмент необходимо выполнить следующие действия:

Если известен код инструмента, допустим SBER (Сбербанк), то необходимо спозиционироваться с помощью указателя в поле sec_code первой пустой строки. Поле окрасится в желтый цвет, тем самым сигнализируя готовность ввода значения. Далее необходимо ввести значение SBER с сохранением регистра, предварительно очистив содержимое поля клавишей “BACKSPACE”.

После необходимо нажать команду “Enter” (Ввод) на клавиатуре, тем самым подтверждая ввод символов.

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

Второй способ ввода инструмента — это выбор команды “[…]” в первой пустой строке. (Здесь и далее по тексту выбор - это двойное нажатие указателем по полю содержащему значение “[…]”. Все поля, содержащие в своем значении текст “[…]” - команды, выбираемые указателем). Появится окно выбора инструмента. Данным способом удобно пользоваться если код торгуемого инструмента неизвестен.

В данном окне можно прямо начать писать текст фильтра (как в данном примере введены фразы “ГА” и “Рос”). Тем самым фильтруя инструменты по имени или по коду. Или просто визуально найти требуемый инструмент. После того как инструмент найден необходимо выбрать его. В результате выбранный инструмент будет добавлен в список инструментов. Если вводится новая строка инструмента, то окно выбора не будет закрыто, что позволит подобрать несколько инструментов за один раз.

Если у Вас открыто несколько счетов/субсчетов, то необходимо выбрать его, выполнив команду выбора в поле “account”. Появится форма выбора счета/субсчета, где необходимо выбрать необходимый счет/субсчет:

ОБЩИЕ ПОЛОЖЕНИЯ

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

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

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

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

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

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

РАЗДЕЛ: ОБЩИЕ НАСТРОЙКИ

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

РАЗДЕЛ: ТОРГОВЫЕ НАСТРОЙКИ

РАЗДЕЛ: СТУПЕНИ ВХОДА

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

МОДУЛЬ АКТИВАЦИИ|РАЗВОРОТА СЕТКИ

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


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

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

Индивидуальные настройки алгоритмов:

НАСТРОЙКИ АКТИВАЦИИ СЕТКИ MA

НАСТРОЙКИ АКТИВАЦИИ СЕТКИ LEVEL

НАСТРОЙКИ АКТИВАЦИИ СЕТКИ MACD

НАСТРОЙКИ АКТИВАЦИИ СЕТКИ REG

НАСТРОЙКИ АКТИВАЦИИ СЕТКИ KREG

НАСТРОЙКИ АКТИВАЦИИ СЕТКИ BOL

НАСТРОЙКИ АКТИВАЦИИ СЕТКИ KELTNER

НАСТРОЙКИ АКТИВАЦИИ СЕТКИ MURR

Уровни Мюррея задаются как дробь -2/8, 0/8, 4/8, +2/8 и т.д.

Для всех осцилляторов и уровней Мюррея вариант условия выбирается:


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

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


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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

В этом окне можно отредактировать количество, цены уровней, что приведет к перестановке ордера на уровне. В режиме динамической сетки задаются динамический уровни, а не конкретные цены. Также можно добавить новый уровень. Для нового уровня можно указать, что необходимо установить ордер закрытия, а не ордер открытия позиции. Например, уже есть открытая позиция и надо часть уровней указать как уровни закрытия. При добавлении нового уровня по цене в середине диапазона сетки, произойдет сортировка уровней при запуске. Если указать параметр 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, реализованную через библиотеку библиотеку