# 5. Описание параметров
# 5.1. Параметры транзакционных подключений
При добавлении нового транзакционного подключения необходимо заполнить ряд полей. Количество и тип полей зависят от биржи/рынка, к которым выполняется подключение. Далее дано описание полей для поддерживаемых бирж и рынков.
# 5.1.1. Московская биржа: фьючерсы и опционы
В настоящее время для подключения к рынку фьючерсов и опционов Московской биржи используются только подключения по протоколу TWIME, проколы FIX и Plaza II не поддерживаются.
# 5.1.1.1. Name
Поле для задания имени подключения. Это значение пользователь задаёт для своего удобства, чтобы потом в списке транзакционных подключений ему было проще ориентироваться. Разрешенные символы: _ a-z A-Z 0-9
# 5.1.1.2. Conn type
Тип подключения. Поддерживаются TWIME.
# 5.1.1.3. TWIME server
Адрес TWIME-сервера биржи, к которому будет выполняться подключение.
# 5.1.1.4. TWIME credentials
Credentials предоставляются брокером.
# 5.1.1.5. Trading account(s)
Торговый счёт, его можно найти в привязанном к счёту терминале или запросить у брокера.
# 5.1.1.6. TWIME comment
Уникальный идентификатор для всех заявок для данного подключения, задаётся пользователем для собственного удобства (если не используется, оставляйте пустым).
# 5.1.1.7. Round robin
Включение и выключение режима Round robin
для данного подключения.
Подробнее о Round robin
- здесь.
# 5.1.1.8. Max trans
Лимит транзакций в секунду. В анкете пользователя указана производительность логина в единицах производительности, где 1 единица равна 30 транзакциям в секунду.
# 5.1.1.9. Reserved trans
Количество зарезервированных транзакций в секунду для заявок на удаление. Использование данного параметра уменьшает количество выставлений заявки, доступных за одну секунду, но позволяет увеличить вероятность того, что робот успеет отдернуть (снять) заявку при уходе цен.
# 5.1.1.10. Move order
Разрешить или запретить использование приказов на переставление (изменение) заявки для данного подключения.
# 5.1.1.11. Bind IP
IP-адрес, с которого будет проходить подключение к бирже. IP должен быть указан в договоре. Если не указан, то обратитесь в поддержку.
# 5.1.2. Московская биржа: фондовый и валютный рынки
В настоящее время для подключения к фондовому и валютному рынкам Московской биржи используются подключения по протоколу FIX и TWIME, другие протоколы не поддерживаются.
# 5.1.2.1. Name
Поле для задания имени подключения. Это значение пользователь задаёт для своего удобства, чтобы потом в списке транзакционных подключений ему было проще ориентироваться. Разрешенные символы: _ a-z A-Z 0-9
# 5.1.2.2. Conn type
Тип подключения. Поддерживаются варианты FIX и TWIME.
# 5.1.2.3. Server
Адрес FIX-сервера биржи, к которому будет выполняться подключение.
# 5.1.2.4. SenderCompID
Значение данного параметра предоставляется брокером.
# 5.1.2.5. Password
Пароль для данного FIX-подключения. Если не меняли, то используйте стандартный, указанный в поле для ввода.
Важно: при создании нового подключения, если пароль не удовлетворяет определенным критериям, робот может автоматически сменить пароль. Информацию о смене пароля можно найти в логе робота. Текущий пароль подключения находится в “дереве” по адресу: ID: XX -> Connections -> astsxxxx_send_XXXX -> Params.
Для транзакционных подключений Московской биржи робот автоматически меняет пароль не чаще, чем один раз в месяц. Уведомление о смене пароля можно найти в логе робота.
# 5.1.2.6. Trading account(s)
Торговый счёт, предоставляется брокером, так же можно посмотреть в терминале.
# 5.1.2.7. Round robin
Включение и выключение режима Round robin
для данного подключения.
Подробнее о Round robin - здесь.
# 5.1.2.8. Client code
Код клиента можно посмотреть в привязанном к счёту терминале (нажать F7 и открыть таблицу "Позиции по деньгам") или запросить у брокера.
# 5.1.2.9. Firm level account
Указание на то, что аккаунт является аккаунтом уровня фирмы. Неверное задание данного параметра приводит к ошибкам снятия и переставления заявок.
# 5.1.2.10. Number of movable orders
Количество заявок, которые робот будет держать по краям стакана, чтобы при необходимости использовать для переставлений. Этот параметр задает количество заявок на инструмент. В случае, если все заявки в данный момент использованы, то робот будет бросать по алгоритму Round robin.
# 5.1.2.11. Min steps to pull
Отступ от цен, на которых стоят заявки для перемещения по краям стакана, при достижении которого лучшей ценой, эти заявки снимаются чтобы избежать их исполнения. Если все же они исполнятся, то сделки по ним не будут учтены в алгоритме, и произойдет расхождение позиции в роботе и на бирже.
# 5.1.2.12. Bind IP
IP-адрес, с которого будет проходить подключение к бирже. IP должен быть указан в договоре. Если не указан, то обратитесь в поддержку.
# 5.1.3. Санкт-Петербургская биржа
# 5.1.3.1. Name
Поле для задания имени подключения. Это значение пользователь задаёт для своего удобства, чтобы потом в списке транзакционных подключений ему было проще ориентироваться. Разрешенные символы: _ a-z A-Z 0-9
# 5.1.3.2. Server
Адреса для подключения к серверу биржи.
# 5.1.3.3. Login
Логин для доступа к бирже, берется из договора с биржей.
# 5.1.3.4. Password
Пароль для доступа к бирже, берется из договора с биржей.
# 5.1.3.5. Memder ID
Идентификатор участника торгов, берется из договора с биржей.
# 5.1.3.6. Trading account(s)
Идентификатор торгово-клирингового счёта участника, берется у брокера. Можете добавить несколько через запятую.
# 5.1.3.7. Client ID
Идентификатор клиентского кода, берется из договора с биржей.
# 5.1.3.8. Bind IP
IP-адрес, с которого будет проходить подключение к бирже. IP должен быть указан в договоре. Если не указан, то обратитесь в поддержку.
# 5.1.4. Криптовалютные биржи
На большинстве криптовалютных бирж для подключения достаточно одной или нескольких пар ключей (API Keys). Пара ключей - это публичный и секретный ключи. На разных биржах они могут называться немного по-разному. Сгенерировать пару ключей обычно можно самостоятельно на сайте биржи. Раздел управления ключами чаще всего можно найти в Настройки - Безопасность - API. На некоторых биржах у пар ключей есть понятие разрешений/привилегий, при создании ключей не забывайте указывать ключам разрешение на выполнение торговых операций.
# 5.1.4.1. Name
Поле для задания имени подключения. Это значение пользователь задаёт для своего удобства, чтобы потом в списке подключений ему было проще ориентироваться.
# 5.1.4.2. API Key/API/ID/Access Key/Public Key/Key
Публичный API-ключ для доступа к бирже, берется на бирже. Находится чаще всего в Настройки - Безопасность - API.
# 5.1.4.3. API key secret/Secret/Access Secret/Private Key/Secret Key
Секретный API-ключ для доступа к бирже, берется на бирже. Находится чаще всего в Настройки - Безопасность - API.
# 5.1.4.4. Bind IP
IP-адрес, с которого будет проходить подключение к бирже. Можете оставить Automatic или, при необходимости, установите определенный IP для подключения.
# 5.1.4.5. Margin account
Указатель на то, что ваш аккаунт является маржинальным. Применяется не на всех криптобиржах.
# 5.1.4.6. Passphrase
Фраза-пароль для доступа к бирже, применяется только для Kukoin.
# 5.1.4.7. Flood timeout
В данном параметре указывается время, которое мы будем выжидать и не выставлять заявки после получения ошибки REASON_FLOOD (только для биржи Cex.io).
# 5.1.4.8. User ID
Это ID пользователя (только для биржи Cex.io).
# 5.1.4.9. COD
Cancel on disconnect - включить механизм снятия заявок при разрыве связи (только для биржи Cex.io).
# 5.1.4.10. Create fast data connection
Поставьте данный флаг, если хотите создать быстрое маркетдата подключение с той же парой ключей (только для биржи Deribit).
# 5.1.4.11. Subaccount
В данном поле указывается имя субаккаунта. Если суббакаунты не используются, то поле нужно оставить пустым.
# 5.1.4.12. Single ADDING order
Для каждой бумаги разрешить только одну заявку в статусе ADDING, при попытке выставления еще одной заявки возвращать ошибку выставления. (Только для биржи Cex.io).
# 5.2. Параметры портфеля
Далее дано описание параметров портфеля. Все параметры являются редактируемыми, если прямо не указано иное. Описания некоторых параметров портфеля объединены в группы для удобства восприятия.
# 5.2.1. Name
Имя портфеля. В данном поле можно использовать латинские буквы и цифры, максимум 30 символов. У существующего портфеля имя не редактируется. Для изменения имени можете выключить торговлю, склонировать портфель, задать желаемое имя у склонированного портфеля и удалить предыдущий портфель.
# 5.2.2. re_sell/re_buy
Разрешена продажа/покупка (при взведении флага включает робот на продажу/покупку).
Важно : при снятии галок re_sell
и re_buy
происходит сброс счетчика ошибок робота.
# 5.2.3. Type
Тип торгового алгоритма портфеля:
Arbitrage
- обычная арбитражная торговля с использованием всех заданных параметров. Сначала выставляется заявка по Is first инструменту, при её сведении в сделку выставляются заявки по остальным инструментам портфеля.Option hedge
- арбитражная торговля с использованием опционов и автоматическим подсчетом Count для обеих ног. Предполагается, что торговля будет вестить парой опцион и базовый актив. У такой пары главная нога это опцион и Count опциона вычисляется автоматически с использованием модели Блека-Шоулза таким образом, чтобы delta у Count опциона равнялась единице. Count второй ноги задается автоматически всегда единицей. Пример: (если дельта 1 лота опциона равна 0.5, то для первой ноги (опцион) count = 2, для второй ноги (базовый актив) count = 1 )TP algo
- режим работы с выставлением "take profit" заявки по главному инструменту. По главному инструменту держится только одна TP заявка, после прохождения не TP заявок в сделку, заявка TP снимается и выставляется новым объёмом. Заявки по второй ноге при этом не выставляются.TP algo 2
- режим работы с выставлением "take profit" заявки по главному инструменту. После каждой сделки по не TP заявке, выставляется новая TP заявка. У выставленной заявки есть Timer и SL. Заявки по второй ноге выставляются так же, как и в режимеArbitrage
.
Важно: Если включен Hedge (sec), то каждые Hedge (sec) секунд если позиция по главному инструменту портфеля ненулевая и нет выставляющихся или стоящих заявок, сводящих эту позицию к нулю, будет выставляться заявка, сводящая позицию к нулю; описанное выше распространяется и на позиции, открытые кликером; закрытие по Hedge (sec) возможно только после того, как были сделки по главной бумаге по алгоритму (не по кликеру). Пока сделок не было, нет цен от которых откладывать тейк.
# 5.2.4. Type trade
Тип торговли, используется при расчете цен Sell/Buy, Price_s/Price_b:
Price
- режим торговли с использованием цен инструментов (bid и offer).IV - режим торговли волатильностью (implied volatility) вычисленной по ценам инструментов с использованием модели Блека-Шоулза.
# 5.2.5. Type price
Тип определения цены инструмента:
Bid/offer
- использовать лучшую цену на покупку и лучшую цену на продажу.Orderbook
- параметр позволяет искать цену в стакане, таким образом, чтобы набрать необходимый объем. Цены на покупку и продажу набираются среди цен в стакане, начиная от лучшей цены в нужном направлении и далее в глубине стакана. Поиск необходимого объема происходит с помощью данной формулы:
Orderbook+filter
- аналогично Orderbook, но вычитать из набираемого объема цены своих заявок (если на соответствующих ценах присутствуют свои заявки).
Глубина стакана определяется значением параметра инструмента портфеля Depth OB.
# 5.2.6. Quote
Параметр позволяет котировать инструмент. Если включен, то заявка всегда держится в стакане, если выключено, то заявка на продажу выставляется когда Sell ≥ Lim_sell , а заявка на покупку выставляется когда Buy ≤ Lim_buy.
Видео объясняющее работу данного параметра:
# 5.2.7. Order ID
Идентификатор всех заявок портфеля, так же определяет приоритет вызова торгового алгоритма портфеля.
Пример:
Пусть есть несколько портфелей и во всех этих портфелях есть один и тот же инструмент. При изменении цены или объема лучшей цены на покупку или продажу по данному инструменту вызывается алгоритм торговли по всем портфелям, в которых этот инструмент присутствует. Торговый алгоритм портфелей будет вызываться в порядке возрастания Order ID, т.е. самым первым вызовется торговый алгоритм портфеля с Order ID = a, а самым последним с Order ID = z. При совпадении Order ID у разных портфелей порядок вызова торгового алгоритма портфелей НЕ определен и будет произвольным.
# 5.2.8. Hedge (sec)
Интервал времени в секундах по прошествии которого автоматически хеджировать незахеджированную позицию в случаях, когда заявка по второй ноге не выставилась по алгоритму (случаи связанные с техническими проблемами на самой бирже, ограничениями по рейтлимиту и другими не рыночными ситуациями). Если задать значение "-1", то проверка по таймеру на незахеджированность не осуществляется.
Неочевидный момент:
Если позиция, с учетом прохождения текущих активных заявок, расходится больше чем на значение Overlay (активные заявки могут быть), то подравняется позиция не трогая текущих активных заявок. Если подравнивающая заявка выставилась, то скинется счетчик ошибок для данной бумаги. Расхождение считается отдельно для каждого из инструментов второй ноги. Выравнивание также осуществляется по каждому из инструментов второй ноги отдельно. В один момент времени на каждом из инструментов второй ноги может висеть не более одной выравнивающей заявки. Выравнивающая заявка, в случае если она не прошла в сделку, переставляется раз в секунду.
# 5.2.9. Only maker
Выставлять котирующие (т.е. при включенном режиме Quote) заявки по Is first бумаге с признаком "снять если заявка будет taker" (при условии что биржей поддерживается работа этого типа заявки).
Важно: Если вы используете данный параметр, то вероятнее всего вам понадобится взвести флаг Simply first. Для избежания избыточного числа неэффективных заявок (в случаях когда заявка ставится и отклоняется т.к. попадает на встречную), что в итоге может привести к санкциям со стороны биржи.
# 5.2.10. Simply first
Если параметр включен, то когда цены Price_s/Price_b попадают в широкий спред или на противоположную сторону стакана, то они всегда будут выставляться не глубже, чем на один шаг цены в спред:
где bid
, offer
, step
- это бид, оффер и шаг цены по Is first бумаге, нижний индекс "0" означает текущее значение параметра, нижний индекс "1" означает новое значение параметра.
Если у Is first бумаги взведен флаг Maker
и текущий спред в стакане равен одному шагу цены, то заявка на продажу будет выставлена по цене offer
, а на покупку по цене bid
(в противном случае заявка просто не смогла бы выставиться и "спамила" бы биржу).
Важно: если наша заявка является бидом или оффером и при этом является единственной заявкой на данном ценовом уровне, то в качестве бида и оффера в предыдущей формуле используются бид и оффер без учета нашей заявки в стакане.
# 5.2.11. Equal prices
Если галка не стоит, то цена второй ноги определяется исходя из цен, которые были на момент сигнала на выставление заявки по is first
инструменту. Если галка стоит, то заявка по второй ноге будет выставлена по такой цене, чтобы Sell = Lim_sell и Buy = Lim_buy (работает только для портфелей с двумя бумагами).
Таким образом цены в заявках будут строго соответствовать Lim_sell, даже если в моменте были лучшие цены.
Включение параметра способствует меньшему числу проскальзываний по второй ноге, но и уменьшает количество положительных проскальзываний (когда купили по цене лучшей, чем хотели).
Пример: в первой ноге стоит цена 100, в второй цена 95. Мы хотим купить в первой ноге по 100, если в второй тоже будет цена сто, т.е. раздвижка будет ноль. В моменте во второй ноге резко рынок дергается вверх и достигает 110. Если галка стоит, то мы купим первую ногу по сто, и попытаемся продать вторую по 100 (т.к. нас устраивала раздвижка ноль). Если галка НЕ стоит, то мы кинем на цену которые дали сигнал к сделке , т.е. первую также купим по сто, вторую попытаемся продать по 110.
Формула для цены второй ноги для покупки:
для продажи:
Знак ± - зависит от того, какое выставлено значение параметра On_buy на 2-й ноге (если Buy, то "+", если Sell, то "-").
# 5.2.12. Volumes
Группа параметров отвечающих за объем выставляемых заявок. Группу можно разделить на две пары параметров: v_in_left/v_in_right и v_out_left/v_out_right, а так же параметры Virt_0_pos и n_perc_fill.
# 5.2.12.1. v_min/v_max
Минимальная/максимальная разрешенная позиция по портфелю. Измеряется в штуках портфелей.
# 5.2.12.2. v_in_left/v_in_right
Отвечает за минимальный/максимальный разрешенный объем для однократного входа в позицию (в штуках портфелей);
Если тип определения цены Type price выбран Orderbook
или Orderbook+filter
то в качестве объема для однократного входа в позицию v_in_right
не используется.
# 5.2.12.3. v_out_left/v_out_right
Отвечает за минимальный/максимальный разрешенный объем для однократного выхода из позиции (в штуках портфелей);
Если тип определения цены Type price выбран Orderbook
или Orderbook+filter
то в качестве объема для однократного выхода из позиции v_out_right
не используется.
# 5.2.12.4. Virt 0 pos
Параметр позволяет Is first заявке, выставленной по алгоритму, по бумаге с направлением в сторону закрытия позиции не только сводить позицию к нулю, но и сразу открывать новую позицию с противоположным направлением, кроме того объем заявки никогда не может быть меньше v_in_left и v_out_left.
Важно: если установлен флаг To0, то можно получить такое поведение робота, что позиция никогда не попадает ровно в 0, а все время переворачивается то в одну, то в другую сторону. При включенном параметре Virt 0 pos
робот может не дойти до позиций v_min/v_max, т.к. “упираемся” в v_in_left/v_in_right и v_out_left/v_out_right (робот не ставит меньше этих значений).
# 5.2.12.5. n_perc_fill
Параметр отвечает за связь позиции по главной бумаге и позиции по портфелю. Исходя из этого параметра осуществляется округление отношения позиции (Curpos) по главному инструменту к параметру Count того же инструмента. Значение n_perc_fill
равное нулю отключает механизм округления, в результате позиция всегда округляется по модулю вниз. Во всех остальных случаях работают следующие правила:
если при изменении позиции по главному инструменту портфеля целая часть позиции не изменилась, а остаток от деления нацело Curpos на Count находится в диапазоне от
(100 - n_perc_fill)
доn_perc_fill
процентов от Count, то позиция по портфелю не меняется, если остаток слева от диапазона, то округление идет по модулю вниз, если остаток справа от диапазона, то округление идет по модулю вверх. Параметрn_perc_fill
может принимать значения только от 50 до 100;если при увеличении позиции целая часть от деления нацело Curpos на Count увеличилась, а модуль остатка от деления нацело Curpos на Count больше или равен
n_perc_fill
процентов от Count, то позицию по портфелю округляем по модулю вверх, иначе вниз;если при уменьшении позиции целая часть от деления нацело Curpos на Count уменьшилась, а модуль остатка от деления нацело Curpos на Count меньше или равен
(100 - n_perc_fill)
процентов от Count, то позицию по портфелю округляем по модулю вниз, иначе вверх.
# 5.2.13. Delta
Минимальное отклонение Price_s и `Price_b от цены выставленной заявки на продажу или покупку, соответственно, при превышении которого робот может переставить котируемую заявку, то есть заявку по Is first инструменту (используется только при включенном режиме Quote);
Пример:
Delta = 10, выставлена котирующая заявка на продажу по цене 95 (т.е на момент выставления этой заявки Price_s = 95). Как только Price_s станет меньше 85 или больше 105, заявка переставится по новой цене
# 5.2.14. First delta
Задается в процентах (%), это один из параметров, который ведет к перевыставлению заявки с новым объемом если ее текущий не исполненный объем стал меньше, чем First delta
процентов от первоначального выставленного объема (используется только при включенном режиме Quote). Таким образом можно поддерживать максимально необходимый объем в котируемой заявке.
Пример:
First delta = 20. Вы котируете на продажу объёмом 100 и вашу заявку начинают выкупать по частям. Заявка висит до тех пор, пока её неисполненный объём больше или равен 20. Как только он становится меньше 20, заявка снимается и, если может, выставляется новая по цене Price_s
в полном объёме.
# 5.2.15. Market volume
Данный параметр ограничивает выставление заявки по Is first инструменту в случаях,
если в очереди в стакане перед предполагаемой ценой выставления уже есть объем больший чем указан в Market volume
.
Пример:
Важно: для отображения на сайте используется lot_size
.
# 5.2.16. Price check
Если предполагаемая цена выставления заявки по Is first бумаге попадает в стакан глубже, чем на Price check
пунктов, то заявка не выставляется.
То есть, если offer + Price check < Price_s
, где offer
– лучшая цена на продажу Is first инструмента, то заявка выставлена не будет.
Для покупки аналогично.
# 5.2.17. Max not hedged
Значение равное сумме допустимых незахеджированных открытий по Is first инструменту (т.е. когда по любому из не Is first инструментов "висит" в рынке не менее, чем Max not hedged
активных заявок) и ошибок выставления (все ошибки, кроме кроссов), после которой торговля по Is first инструменту будет остановлена до тех пор пока хотя бы одна из незахеджированных позиций не захеджируется или не сбросится счетчик ошибок.
Важно: необходимо использовать параметр Max not hedged
в связке с Hedge (sec), так как иначе при накоплении определенного количества ошибок произойдет остановка торговли.
Используя в портфеле инструменты некоторых площадок с типами инструментов "купить/закрыть покупку", "продать/закрыть продажу" Max not hedged может иметь значение только "1".
# 5.2.18. Overlay
Хеджировать только если разница (в портфелях) между Is first бумагой и остальными инструментами портфеля больше или равна значению данного параметра (в штуках портфелей, то есть в той же размерности, что и v_in_left/v_in_right).
# 5.2.19. Lim_sell/Lim_buy
Lim_Sell
– сигнальная цена на продажу, заявка по Is first бумаге выставляется если Sell ≥ Lim_Sell
вне зависимости от того включен или нет режим Quote.
Lim_Buy
– сигнальная цена на покупку, заявка по Is first бумаге выставляется если Buy ≤ Lim_Buy
вне зависимости от того включен или нет режим Quote.
Работа данных параметров наглядно продемонстрирована в этом видео:
# 5.2.20. Threshold
Параметр будет использоваться в алгоритме, только если Threshold > 0
. Если Sell ≥ Lim_Sell + Threshold
или Buy ≤ Lim_Buy - Threshold
, то при сильном движении раздвижки на размер Threshold
при расчете цен Price_s, Price_b, соответственно, параметр отключает Simply first, а при выставлении заявки по Is first бумаге отключает Only maker. Под "отключает" имеется в виду "не использует". Видимые пользователю настройки портфеля не будут изменены.
Важно: нельзя переставить заявку на бирже, изменяя флаг Only maker заявки, уже стоящей на этой бирже, поэтому при выполнении условий на Threshold
, переставление всегда заменяется на отдельные снятие и выставление завки.
# 5.2.21. Trading signal shift
Группа параметров, отвечающих за создание арбитражного канала.
# 5.2.21.1. K
Коэффициент сдвига заявки, что улучшает цену для каждого последующего входа.
На параметр К
будут сдвинуты заявки Lim_sell в случае продажи или Lim_buy в случае покупки при наборе позиции. Другими словами, на сколько улучшится положение заявки после удара на вход (ударом считается сделка объемом не меньше v_in_left).
Видео объясняющее работу параметра К
:
# 5.2.21.2. ТР
Уровень противоположной заявки после удара. С помощью параметра ТР
вы указываете где будет выставлена противоположная заявка после удара (работает только после первого удара).
Если нас ударили по Lim_sell = 150, то при 'ТР' = 50, Lim_buy будет выставлен на 150 – 50 = 100.
Видео объясняющее работу параметра ТР
:
# 5.2.21.3. K1
Коэффициент указывает на сколько будет сдвинута противоположная заявка после второго удара.
Lim_buy = 100 из предыдущего примера, при К1
= 5, будет установлена на 100 + 5 = 105, после второго удара по Lim_sell, после того как пройдет еще одна сделка, Lim_buy будет увеличен еще на 5 и прмиет значение 110, после очередной сделки по Lim_sell, Lim_buy примет значение 115 и т.д.
Видео объясняющее работу параметра К1
:
# 5.2.21.4. K2
Коэффициент сдвига заявки, что улучшает цену заявки каждого последующего выхода.
На параметр К2
будут сдвинуты заявки Lim_sell или Lim_buy в случае продажи или покупки, соответственно, при выходе из позиции. Другими словами, на сколько улучшится положение следующей заявки на выход после предыдущего удара (ударом считается сделка объемом не меньше v_out_left).
Из примера ранее где Lim_buy = 105 при К2
= 3. При ударе по Lim_buy его значение станет равным 105 - 3 = 102.
Видео объясняющее работу параметра К2:
# 5.2.22. Limits timer
Время таймера (задается в секундах) по истечению которого происходит сдвиг обоих параметров Lim_sell и Lim_buy на значение K. Таймер включается если торговля включена и проходит сигнал на покупку или продажу, но торговля запрещена из-за того, что робот уже набрал максимальную позицию (по v_min/v_max). Таймер выключается при значении Percent > 100%.
Пример: значения Limits timer
= 10 сек, Percent
= 60. Возьмем временное окно 10 сек: допустим, сигнал был 2 сек, потом на 3 сек пропал, потом 4 сек был и снова на 1 сек пропал. За 10 сек сигнал был суммарно 6 сек, что больше или равно 60% от 10 сек, следовательно условие выполнено, сдвиг выполняется.
# 5.2.23. Percent
Процент от Limits timer после которого происходит сдвиг. Если сигнал на торговлю продержался указанный процент времени от значения Limits timer, то Lim_sell/Lim_buy) передвигаются на K, не смотря на отсутствие сделок по Is first бумаге.
# 5.2.24. Always timer
Включенный Always timer
позволяет всегда использовать Limits timer, даже когда позиция портфеля не достигла значений v_min
или v_max
. При выключенном Always timer
смещение уровней Lim_sell и/или Lim_buy происходит только когда происходят сделки или когда позиция портфеля достигла значений v_min
или v_max
. Включение этого параметра позволяет двигать уровни, даже если сделка не совершилась, но робот только попытался выставить заявку.
# 5.2.25. Pos
Текущая позиция портфеля (в штуках портфелей), вычисляется по формуле:
где Curposfirst и Countfirst - это параметры Curpos и Count для инструмента портфеля с взведенным флагом Is first, и округляется вверх или вниз в зависимости от значения параметра n_perc_fill. Изменяется роботом, но может быть отредактирована пользователем вручную.
# 5.2.26. Timetable
Использовать торговлю по расписанию. Расписание состоит из списка дней недели (с понедельника по воскресенье, параметр TradingDays
), из которых неодходимо выбрать те дни, в которые будет осуществляться торговля, и списка торговых периодов (периоды одни и те же для всех торговых дней), для каждого из периодов задаются свои параметры:
Begin
- начало торгового периода.
End
- окончание торгового периода.
re_sell
- что делать с re_sell в течение данного интервала: всегда включать, всегда выключать, "ручной" режим.
re_buy
- что делать с re_buy в течение данного интервала: всегда включать, всегда выключать, "ручной" режим.
Close
- попытаться закрыть позицию сразу после окончания торгового периода (в течение 10 секунд).
To market
- попытаться выровнить позицию сразу после окончания торгового периода (в течение 10 секунд).
To0
- что делать с To0 в течение данного интервала: всегда включать, всегда выключать, "ручной" режим.
Save history
- сохранять ли историю изменения некоторых параметров портфеля в течение данного интервала.
Если текущее локальное время на сервере (curTime
) попадает в один из периодов, т.е. , то управления параметрами портфеля, описанными выше, переходит к расписанию, в противном случае (если текущее время не попадает ни в один из периодов) параметры портфеля, описанные выше, автоматически выключаются.
"Ручной" режим означает, что данный параметр портфеля на данном временном интервале НЕ контролируется расписанием, т.е. пользователь может изменять значения данного параметра "руками" даже при включенном расписании.
Расписание торговых дней недели можно также установить сразу для нескольких портфелей, выделив их в виджете Portfolios
и выбрав пункт TradingDays
в меню Actions
.
Важно: текущее время определяется временем на сервере, где находится робот. В данный момент для роботов, торгующих на криптовалютных биржах, это UTC, для всех остальных это UTC +3 (МСК). Текущее время на сервере отображается в виджете Robots
в столбце Robot time
, настоятельно рекомендуется ориентироваться именно на это время.
# 5.2.27. To0
Использование данного параметра позволяет вести торговлю только в сторону закрытия позиции. Когда позиция портфеля достигнет нуля, торговля остановится.
Важно: если установлен флаг Virt_0_pos, то можно получить такое поведение робота, что позиция никогда не попадает ровно в 0, а все время переворачивается то в одну, то в другую сторону.
# 5.2.28. Opened
Параметр, используемый для подсчета финансового результата, вычисляется по формуле:
где tradePricei - цена сделки;
tradeAmounti - количество лотов в сделке;
lotSizei - множитель для перевода целых объемов в дробные;
bought - список сделок на покупку;
sold - список сделок на продажу;
Multi - Fin res multiplier инструмента портфеля.
# 5.2.29. Commision sum
Сумма комиссии по всем сделкам портфеля, используется для подсчёта финансового результата.
# 5.2.30. Decimals
Параметр, определяющий сколько знаков после десятичной точки отображается в параметрах, значение которых является дробным числом.
Стоит отметить, что робот использует настоящие цены, пришедшие с биржи, в то время как в интерфейсе, при использовании параметра Decimals
, может отображаться округленное значение.
# 5.2.31. Custom trade
Позволяет использовать Trade formula
для подсчета раздвижки в таблице с финансовыми результатами.
# 5.2.32. Trade formula
Формула на языке программирования C++ для подсчета раздвижки в таблице с финансовыми результатами, вы пишете только тело функции и должны вернуть значение типа double
. Функция вызывается в момент когда получены все необходимые сделки для подсчета раздвижки и добавления
ее в таблицу (при этом сделки могут быть НЕ по всем бумагам портфеля). На каждый финансовый инструмент портфеля будет доступно не больше одной сделки, если по какой-либо бумаге прошло несколько сделок, относящихся к данной раздвижке, то будет доступна только одна сделка, но с суммарным количеством
и со средней ценой.
# 5.2.33. Extra formulas
Флаг, включает расчёт Extra field#1
и Extra field#2
.
# 5.2.34. Extra field#1 и Extra field#2
Поля для дополнительных формул на языке программирования C++, вы пишете только тело функции и должны вернуть значение типа double
.
# 5.2.35. Disable portfolio
Полностью выключить портфель из всех расчетов и торговли, не удаляя его.
Важно: при снятии этой галки и восстановлении работы портфеля возможно переоткрытие торговых стаканов и, как следствие, приостановка торговли во всех портфелях, использующих то же дата подключение, на время переоткрытия стаканов.
# 5.2.36. Sell/Buy clicker
"Кликер", выставить заявку на продажу/покупку заданного количества портфелей. Заявки выставляются сразу по всем инструментам портфеля. Ручной способ совершения сделок всем портфелем сразу не дожидаясь срабатывания сигналов Sell
>=Lim_sell
и Buy
<=Lim_buy
.
# 5.2.37. To market
"Кликер" позволяет принудительно захеджировать позиции, не дожидаясь срабатывания автохеджа и др параметров. Происходит снятие всех заявок, кроме заявок первой ноги, выставленных по алгоритму и обратное выставление их по рыночным ценам (с учетом параметра k_sl) (по каждому инструменту второй ноги ставится не более одной выравнивающей заявки).
# 5.2.38. Place order
Позволяет выставить заявку по одному из инструментов портфеля, не дожидаясь срабатывания настроенных условий портфеля, в т.ч. при выключенной торговле портфеля. Для того, чтобы воспользоваться этой опцией необходимо сделать клик по голубой ячейке в столбце Place order
в таблице Portfolios table
и выбрать необходимые параметры заявки, далее нажать на кнопку Place order
.
При включенной торговле выставленная таким образом заявка может привести к срабатыванию параметров:
Hedge (sec)
, SLE
, TE
.
Для удаления выставленной таким способом заявки потребуется биржевой терминал, где вручную снимается заявка или это можно сделать в роботе с помощью кнопки Hard stop
(описание в п.3.4. Управление_портфелями)
# 5.2.39. Sell/Buy
Sell
– расчетная цена на продажу. Нередактируемый параметр.
Buy
– расчетная цена на покупку. Нередактируемый параметр.
Упрощенная формула для двух бумаг:
Формулы расчета Sell
и Buy
для любого количества ног:
Наглядно продемонстрирована работа данных параметров в этом видео:
# 5.2.40. Price_s/Price_b
Price_s
– цена выставления заявки на продажу по Is first бумаге, вычисляется как обратная функция для Sell, где цена Sell заменяется на Lim_Sell. Нередактируемый параметр.
Price_b
– цена выставления заявки на покупку по Is first бумаге, вычисляется как обратная функция для Buy, где цена Buy заменяется на Lim_Buy. В общем случае это та цена, по которой робот "хочет" купить и продать по Is first инструменту.
Нередактируемый параметр.
Формулы расчета Price_s
и Price_b
для двух бумаг:
Формулы расчета Price_s
и Price_b
для любого количества ног:
Видео, наглядно объясняющее работу параметров Price_s/Price_b
:
# 5.2.41. Sell/Buy status
Статус заявки на продажу/покупку по Is first инструменту. Существуют следующие статусы:
running - (тут должно быть краткое описание)
free - (описание)
Для того чтобы освободить "зависшую" заявку, необходимо сделать двойной клик на ячейке таблицы. Ручная смена статуса может привести к потере заявки роботом, данную операцию рекомендуется делать только в крайних случаях.
# 5.2.42. Return first
Оборот по Is first бумаге, вычисляется с момента старта серверной части робота как сумма модулей количества лотов в сделках по Is first инструменту. Можно установить ноль двойным кликом.
Важно: для отображения на сайте используется lot_size
.
# 5.2.43. Fin res
Предполагаемый финансовый результат портфеля, вычисляется по формуле:
где secBidi - лучшая цена на покупку инструмента портфеля;
secOfferi - лучшая цена на продажу инструмента портфеля;
lotSizei - множитель для перевода целых объемов в дробные;
Curposi - текущая позиция инструмента портфеля;
Mult - Fin res multiplier инструмента портфеля;
secs - список инструментов портфеля.
Инструкцию по расчету и настройке вывода финансового результата можно посмотреть здесь Fin res manual (opens new window))
# 5.2.44. Fin res wo C
Fin res
без учета комиссии. Вычисляется по формуле:
где secBidi - лучшая цена на покупку инструмента портфеля;
secOfferi - лучшая цена на продажу инструмента портфеля;
lotSizei - множитель для перевода целых объемов в дробные;
Curposi - текущая позиция инструмента портфеля;
Multi - Fin res multiplier инструмента портфеля;
secs - список инструментов портфеля.
# 5.2.45. Comment
При необходимости к каждому порфтелю можно добавить свой комментарий. Максимально допустимое число символов для комментария 100.
# 5.2.46. Color
При небходимости можно выделить портфель цветом в поле color
.
# 5.3. Параметры инструментов портфеля
Далее дано описание параметров инструментов портфеля. Все параметры являются редактируемыми, если прямо не указано иное.
# 5.3.1. SecKey
Уникальный идентификатор инструмента портфеля. Нередактируемый параметр.
# 5.3.2. SecBoard
Режим инструмента портфеля. Нередактируемый параметр.
# 5.3.3. SecCode
Код инструмента портфеля. Нередактируемый параметр.
# 5.3.4. Exchange
Название биржи, на которой торгуется данная бумага. Нередактируемый параметр.
# 5.3.5. Curpos
Текущая позиция робота по данному инструменту в лотах.
Важно: для отображения на сайте используется lot_size
.
# 5.3.6. Count type
Параметр позволяет выбрать константное значение Count или использовать Count formula
# 5.3.7. Count
Количество лотов инструмента в одном портфеле.
Важно: для отображения на сайте используется lot_size
.
Важно: для многих криптовалютных бирж данный параметр указывается "как бы в сатошах", т.е. чтобы купить/продать 1 лот на бирже необходимо указать количество 100 000 000 (соответственно, 0.1 лота сооветствует значение 10 000 000 и т.д.). При добавлении бумаги в портфель обращайте внимание на столбец Price to lot mult
.
Важно: при включенном Virt 0 pos Count
– это минимальное количество, которым торгует робот по соответствующему инструменту, в противном случае может быть выставлена заявка в количестве меньшем чем Count
(в случае закрытия позиции и чтобы "попасть" в v_min/v_max).
# 5.3.8. Count formula
Количество лотов инструмента в одном портфеле, задаётся как код на языке программирования C++. Вы пишете только тело функции, и должны вернуть значение типа double
.
Важно: значения Count или Count formula определяют соотношение именно между позициями инструментов портфеля (соотношение в конкретной сделке может отличаться). По этой же причине значение Count formula не зависит от направления выставляемой заявки.
Важно: настоятельно рекомендуется для Is first бумаги никогда не возвращать значение 0, если вы хотите не торговать, используйте Ratio formula
и задавайте необходимые значения для раздвижки. Если вы все-таки получили Count
равный 0 для Is first бумаги, то портфель не будет торговать ни одной бумагой и для подсчета позиции портфеля в том месте, где необходимо поделить на Count Is first бумаги (который в вашем случае равен 0) будет делиться на 1.
# 5.3.9. On buy
Определяет будем ли мы покупать или продавать инструмент при срабатывании сигнала на покупку по главному инструменту. Данный параметр настраивается только для второй ноги. Для первой ноги по умолчанию всегда On Buy
= Buy
. При срабатывании сигнала на продажу робот возьмет противоположное значение.
Пример:
Для is_first
инструмента On Buy
= Buy
Для второй ноги On Buy
= Sell
При таких настройках при срабатывании сигнала на покупку робот будет стремиться купить первую ногу и затем продать вторую.
При таких настройках при срабатывании сигнала на продажу робот будет стремиться продать первую ногу и затем купить вторую.
Для is_first
инструмента On Buy
= Buy
Для второй ноги On Buy
= Buy
При таких настройках при срабатывании сигнала на покупку робот будет стремиться купить первую ногу и затем тоже купить вторую.
При таких настройках при срабатывании сигнала на продажу робот будет стремиться продать первую ногу и затем тоже продать вторую.
# 5.3.10. Is first
Определяет, является ли бумага главным инструментом портфеля. Позиция портфеля считается по главному инструменту. On buy такого инструмента всегда указывается как Buy.
# 5.3.11. k
Задает размер искусственного проскальзывания (отступ от рыночной цены, т.е. при покупке цена выставления offer
+ k
, при продаже цена выставления bid
−k
, где bid
и offer
– лучшие цены на продажу и покупку, соответственно).
# 5.3.12. k_sl
Аналог параметра k
, но используется только во время перестановок заявок по SLE и TE. Задает размер искусственного проскальзывания (отступ от рыночной цены, т.е. для заявки на покупку цена выставления offer
+ k_sl
, для заявки на продажу цена выставления bid
−k_sl
, где bid
и offer
– лучшие цены на продажу и покупку, соответственно).
# 5.3.13. SLE
Включить/выключить функцию переставления по стоп-лоссу.
# 5.3.14. SL
Значение стоп-лосса, при достижении которого необходимо снимать заявку, если она не прошла до этого момента и бросать снова по новой рыночной цене (стоп-лосс откладывается от первоначальной цены выставления заявки).
# 5.3.15. TE
Параметр отвечает за включение/выключение функции переставления по таймеру.
# 5.3.16. Timer
Параметр, определяющий через сколько времени снимать заявку, если она не прошла до этого момента и бросать снова по новой рыночной цене.
# 5.3.17. Percent of quantity
Если на бирже в объеме лучшей цены на продажу или покупку (или в найденном объеме в стакане если Type price = Orderbook
или Type price = Orderbook + filter
), соответственно, есть нужное количество процентов (%) от объема заявки инструмента, не являющегося Is first, и это условие выполняется для всех не Is first инструментов, то можно выставляться по Is first инструменту. Таким образом если во второй ноге не достаточно объема для хеджирования, то заявка по первой ноге не выставляется даже если есть сигнал на покупку или на продажу.
# 5.3.18. Ratio sign
Знак используемый перед коэффициентом Ratio при расчете цен Sell и Buy, ”+” или ”×”.
# 5.3.19. Ratio
Коэффициент, используемый при расчете цен Sell и Buy.
# 5.3.20. Fin res multiplier
Fin res multiplier
- множитель, используется для подсчета финансового результата, чтобы привести все цены к одной размерности.
# 5.3.21. Commission type и Commission
Comission type
- gараметр, определяющий тип расчёта комиссии. Позволяет задать фиксированную сумму списания или процент об объема сделки.
Commission
- комиссия по инструменту. Если Commission type
указан как %
, то комиссия указывается в процентах от цены сделки, а если как pt
, то комиссия указывается в той же размерности, в которой считается финансовый результат по портфелю (например, для акции Сбербанка комиссия указывается в процентах и для большинства брокеров она равна 0.01 %, а для фьючерса на акцию Сбербанка комиссия указывается в пунктах и равна 0.25 пункта для скальперских сделок).
# 5.3.22. Client code
Код клиента с которого надо выставлять заявку по данной бумаге или пустая строка если необходимо выставлять с "кода по умолчанию", отображает все коды, которые доступные для торговли соответствующим инструментом, код virtual означает торговлю "в файл" и может быть использован для тестирования стратегий; код, начинающийся с Round robin, означает использование режима выставления заявок Round robin.
Важно: Режим Round robin означает выставление и снятие заявок через все подключения к бирже с заданным клиентским кодом по некоторому алгоритму, при этом поведение этого алгоритма для Московской биржи и для криптобирж различается. Это связано с особенностями торгов и типом подключений на биржах. На криптобиржах при использовании режима Round robin происходит поочередное выставление и снятие заявок через подключения с одинаковым клиентским кодом. Все подключения из списка используются равномерно. Для криптобирж (не всех) это позволяет поднять общую пропускную способность клиентского счёта с помощью использования нескольких подключений с разными парами ключей. На рынках Московской биржи все подключения с одним кодом клиента держатся в очереди, порядок подключений в очереди зависит от скорости выставления заявок через эти подключения (кто в данный момент быстрее, тот первый в очереди, порядок подключений в очереди меняется не чаще раза в секунду, кроме того каждую секунду движение по очереди начинается заново, т.о. загрузка подключений НЕ равномерная). При измерении скорости (Round trip-а) выставления заявок учитывается только скорость некоторых заявок, назовём их важными. Важными заявками считаются заявки, выставленные по первой ноге по алгоритму (т.е не кликером, не стопом и прочими способами), причём только в случае если котирование отключено. Так же важными заявками являются заявки по второй ноге, выставленные по основному алгоритму, т.е. после сделки по первой ноге. Значения Round trip'a обнуляются раз в час, чтобы снова была возможность оценить скорость каждого из подключений и выбрать быстрейшее. Таким образом, для Московской биржи выбирается быстрейшее подключение и по возможности заявки выставляются с него.
Важно: код клиента не может быть пустым для бумаг с Count отличным от нуля.
# 5.3.23. MM
Флаг, если взведен, то все заявки по инструменту выставляются с признаком "заявка маркет-мейкера" (работает не для всех подключений). Требуется обязательное согласование использование этого признака с самой биржей.
# 5.3.24. TP
Величина тейк-профит, используется при Type равном TP algo
или TP algo 2
, откладывается от цены сделки по заявке Is first инструмента.
# 5.3.25. Ratio type
Позволяет настроить использование константного значения Ratio
или результат вычисления Ratio formula
при расчёте значений Sell и Buy.
# 5.3.26. Ratio buy formula
Параметр, используемый при расчете цены Buy, задается как код на языке программирования C++. Вы пишете только тело функции и должны вернуть значение типа double
.
# 5.3.27. Ratio sell formula
Параметр, используемый при расчете цены Sell, задается как код на языке программирования C++. Вы пишете только тело функции и должны вернуть значение типа double
.
# 5.3.28. FUT move limits
Флаг, если взведен, то при каждой смене дня, а именно в 00:00 МСК, будет осуществляться автоматическая подвижка лимитов по формулам:
где days_to_expiry - целое количество дней до экспирации данной бумаги;
days_to_expirySPOT - целое количество дней до экспирации бумаги, отмеченной флагом SPOT move limits
или 1, если такая бумага не указана;
нижний индекс 0 означает текущее значение параметра;
нижний индекс 1 означает новое значение параметра.
Отметим, что при взведенном флаге FUT move limits
, автосдвиг при каждой смене дня сработает в том числе при выключенных re_sell, re_buy.
# 5.3.29. SPOT move limits
Флаг, если взведен, то данная бумага используется в формулах для FUT move limits
.
# 5.3.30. Depth OB
Максимальный уровень глубины стакана до которого включительно вычислять цены и объемы (в штуках шагов цены, считая от бида/оффера), доступен только для не Is first, используется только в режимах Type price = Orderbook
и Type price = Orderbook + filter
.
Если у Вас выбран режим Type price = Orderbook
и Type price = Orderbook + filter
, то необходимо следить за значением Depth OB
, при слишком низких значениях параметра робот не сможет высчитывать цены и объемы, у вас будут нули в параметрах Sell
и Buy
.
# 5.3.31. Calc price OB
Тип цены, используемой для расчета Sell, Buy, Price_s, Price_b. Доступен только для не Is first бумаг, используется только в режимах Type price = Orderbook
и Type price = Orderbook + filter
:
- Deepest – цена того уровня в стакане, на котором набрали искомый объем;
- Weighted avg. – средневзвешенная цена до того уровня в стакане включительно, на котором набрали искомый объем.
# 5.3.32. Trading price OB
Тип цены, используемой при торговле, доступен только для не Is first бумаг, используется только в режимах Type price = Orderbook
и Type price = Orderbook + filter
:
- Deepest – цена того уровня в стакане, на котором набрали искомый объем;
- Weighted avg. – средневзвешенная цена до того уровня в стакане включительно, на котором набрали искомый объем.
Пример:
Trading price OB
- Deepest:
Допустим, вы ищете в стакане на покупку 1000 лотов, по цене 100 стоит 500 лотов, потом по цене 99 стоит 490 лотов и по цене 5 стоят оставшиеся 10 лотов. При таком раскладе искомая цена будет равна 5.
Trading price OB
- Weighted avg:
Из примера выше (500 * 100 + 490 * 99 + 5 * 10)/1000 = 98.56 - искомая цена. Перед выставлением заявки робот округлит цену в соответствии с шагом цены данного инструмента. Для продажи выполняется округление вверх, для покупки - округление вниз. Т.е. если шаг цены в данном примере равен 1, то продавать будем по цене 99.
# 5.3.33. Level to0
Если хотя бы для одной бумаги портфеля модуль разности Mark price и Liquidation price строго меньше данного значения, то взвести флаг To0 и НЕ давать его снять пока условие выполняется, когда условие перестанет выполняться - снять флаг To0 (имеет смысл только для бумаг с BitMEX, Deribit, некоторых других). Таким образом для заданного портфеля можно запретить увеличивать позицию пока текущая цена находится в опасной близости с ценой ликвидиации.
# 5.3.34. Level close
Если хотя бы для одной бумаги портфеля модуль разности Mark price и Liquidation price строго меньше данного значения, то взвести флаг To0 и НЕ давать его снять пока условие выполняется (когда условие перестанет выполняться - снять флаг To0), раз в 5 секунд выставлять заявку в направлении закрытия позиции в объеме v_out_left портфелей до тех пор пока описанное выше условие не перестанет выполняться или позиция по портфелю не станет равно 0 (имеет смысл только для бумаг с BitMEX, Deribit, некоторых других). Таким образом позиция для заданного портфеля уменьшается с соблюдением правил хеджирования до тех пор, пока цена ликвидации не примет безопасное значение.
# 5.3.35. Leverage
Параметр определяющий плечо для выставляемой заявки (имеет смысл только для бумаг с HBDM).
# 5.3.36. Decimals
Параметр, определяющий сколько знаков после десятичной точки отображается в параметрах, для которых значение является дробным числом.
Важно: данный параметр так же отвечает за число знаков после десятичной точки в ценах сделок по данной бумаге в таблице раздвижек. При смене значения, число знаков у уже добавленных в таблицу сделок НЕ изменится.
# 5.3.37. Max trans time
Максимально допустимое время Round trip'a (в микросекундах) при котором вы хотите продолжить торговать текущим портфелем. Если это время будет превышено, то активируется Ban_period.
# 5.3.38. Ban period
Период, на протяжении которого робот перестает выставлять заявки по первой ноге.
# 5.4. Параметры уведомлений
Робот умеет уведомлять пользователя о наступлении определенных событий. Например, при резком падении финансового результата. Так как понятие "резкое падение" сильно зависит от выбранной стратегии и настроек портфеля, то для каждого портфеля настройки уведомлений задаются отдельно. Кроме чисто сигнальной функции некоторые уведомления могут выключать торговлю по соответствующему портфелю. При наступлении соответствующего события, уведомление появляется в браузере, а так же в Telegram-бот, если он подключен и настроен. Обращаем ваше внимание, что данные уведомления работают только при включенной торговле на портфеле. Также существуют уведомления, которые настраиваются для конкретного транзакционного подключения к бирже, они описаны в разделе Параметры позиций.
# 5.4.1. FinRes fall
Уведомление о падении финансового результата.
Fall
(%) - процентное изменение финансового результата о достижении которого необходимо уведомить пользователя, если оно достигнуто за Time
(sec) секунд. При этом это изменение должно быть больше Min fall
(pt)
Stop trading
- вместе с уведомлением выключить торговлю по портфелю (расписание также будет выключено).
# 5.4.2. Lim_Sell change и Lim_Buy change
Уведомлять об изменении Lim_Sell/Lim_Buy портфеля если за Time
секунд оно больше, чем на Value
;
Time (sec)
- период времени в секундах;Value
- сигнальное значение изменения Lim_Sell/Lim_Buy;Stop trading
- вместе с уведомлением выключить торговлю по портфелю (расписание также будет выключено).
# 5.4.3. Severe sell change и Severe buy change
Уведомлять о "резком" изменении Sell/Buy портфеля ≥ Value
за Time
секунд (только когда портфель включен):
Time (sec)
- период времени, за который считать изменение Sell/Buy (откладывается назад от текущего времени) как разницу между текущим Sell/Buy и Sell/Buy 'Time` секунд назад;Value
- сигнальное значение изменения Sell/Buy.
# 5.4.4. Too much running orders
Уведомлять о слишком большом количестве активных заявок по не Is first инструментам портфеля (max (число активных заявок по каждому из не Is first инструментов портфеля) ≥ Percent * Max not hedged * 0.01, где Max not hedged по умолчанию равен 30).
Percent (%)
- сигнальный процент.
# 5.4.5. Too much not hedged
Уведомлять о слишком большой не захеджированной позиции по Is first инструменту портфеля:
Limit portfolios
- сигнальное значение не захеджированной позиции (вычисляется в штуках портфелей).
# 5.4.6. Severe pos change
Уведомлять о "резком" изменении позиции Pos
по портфелю ≥ Value
за Time
секунд:
Time (sec)
- период времени, за который считать изменение позиции (откладывается назад от текущего времени) как разницу между текущей позицией и позициейTime
секунд назад;Value
- сигнальное значение изменения позиции.
# 5.5. Параметры позиций
# 5.5.1. Параметры позиций по инструментам
Параметры позиций по инструментам отображаются отдельно для каждого подключения во вкладке Positions/Balance данного подключения и представляют собой таблицу. Строчки таблицы - это инструменты данного подключения, используемые в портфелях робота. Если через данное транзакционное подключение доступны несколько клиентских кодов, то строчка будет соответствовать паре (код клиента, инструмент). Инструменты с нулевой позицией могут быть скрыты (для этого нужно снять флаг Show_zero_poses
). Далее приведены описания столбцов таблицы, предполагается что параметры являются редактируемыми, если прямо не указано иное.
# 5.5.1.1. SecKey
Уникальный идентификатор инструмента. Соответствует параметру инструментов портфеля SecKey. Нередактируемый параметр.
# 5.5.1.2. SecCode
Код инструмента. Соответствует параметру инструментов портфеля SecCode. Нередактируемый параметр.
# 5.5.1.3. Pos
Позиция на бирже по инструменту. Нередактируемый параметр.
# 5.5.1.4. Robot pos
Суммарная позиция инструмента в роботе со всех портфелей, торгующих через данное подключение указанной бумагой с данным кодом клиента. Нередактируемый параметр.
# 5.5.1.5. Mark price
"Сигнальная" цена инструмента. Нередактируемый параметр.
Если Mark price
достигнет Liquidation price
, то позиция по инструменту будет принудительно закрыта биржей.
# 5.5.1.6. Liquidation price
Цена ликвидации по инструменту. Нередактируемый параметр.
Если Mark price
достигнет Liquidation price
, то позиция по инструменту будет принудительно закрыта биржей.
# 5.5.1.7. Pos lag
Значение с которым будет сравниваться разница между Pos
и Robot pos
, само сравнение и дальнейшие действия определяются параметром Check equality.
# 5.5.1.8. Check equality
Если флаг взведен, то в случае, если произойдет следующая ситуация:
в логе вам будут приходить оповещения о том, что позиция на бирже и позиция в роботе не совпадают.
(pos
- позиция на бирже, а robot_pos
- позиция в роботе по портфелям, торгующим данной бумагой на данном подключении)
Если флаг не взведен, то оповещения будут приходить только в случае, если:
$
# 5.5.1.9. Tgr notify
Если флаг взведен, то отправлять уведомления о несовпадении позиции робота и биржи в Telegram.
# 5.5.1.10. Pos leveling
Выставить заявку с заданными направлением, ценой и объёмом. Направление и объём по умолчанию задаются такими, чтобы выровнить позицию биржи относительно позиции робота (эта заявка не изменяет позиции по бумагам в портфелях робота).
# 5.5.2. Параметры позиций по валютам
Параметры позиций по валютам отображаются отдельно для каждого подключения во вкладке Positions/Balance данного подключения и представляют собой таблицу. Строчки таблицы это валюты/криптовалюты, входящие в состав инструментов, торгуемых с помощью данного подключения и используемых в портфелях робота. Если через данное транзакционное подключение доступны несколько клиентских кодов, то строчка будет соответствовать паре (код клиента, валюта). Валюты с нулевым балансом могут быть скрыты (для этого нужно снять флаг Show zero poses). Далее приведены описания столбцов таблицы, предполагается что параметры являются редактируемыми, если прямо не указано иное.
# 5.5.2.1. Currency
Краткое наименование валюты/криптовалюты.
# 5.5.2.2. Limit
Лимит по валюте.
# 5.6. Список проверок параметров портфеля при создании/редактировании портфеля/бумаги
Если условие в списке ниже ИСТИННО, то такие настройки НЕ валидны:
# 5.6.1. Для портфеля
Параметр Quote выключен, а Simply first включен;
Сборка робота без поддержки стаканов и включен параметр Simply first;
Сборка робота без поддержки стаканов и значение параметра Type price = bid/offer;
Выключен параметр Quote и включен Only maker;
Значение параметра Max not hedged > 1 и позиция по бумаге на бирже стоит отдельно на покупку и на продажу;
Значения параметров v_min/v_max имеют разные знаки (или одно из них = 0) и позиция по бумаге на бирже стоит отдельно на покупку и на продажу;
# 5.6.2. Для инструмента
Для бумаг OKEX-SPOT: Сlient code не оканчивается на "/cash", "/cross_base", "/cross_quote", "/isolated" и не должен быть “virtual”;
Для бумаг OKEX-FUT: Сlient code не оканчивается на "/cross" или "/isolated" и не должен быть “virtual”;
Для первой ноги Count type = constant и Count = 0;
Для первой ноги On_by = Sell;
Выбрано пустое значение для Сlient code и Count не 0;