Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Перед запуском Агента для торговли на рынке рекомендуем выполнить настройку скрипта, на основании которого создан Агент
Скрипт желательно настроить таким образом, чтобы агент пересчитывался всегда с одинаковым количеством баров. Стоит учитывать количество загружаемых в скрипт баров: чем их меньше, тем быстрее рассчитывается скрипт. Но к выбору нужного значения стоит подойти внимательно. В агенте всегда должно быть загружено как минимум два последних сигнала - один вход и один выход, если в скрипте используются данные с баров входов и выходов. Например, если скрипт для расчета стоп-лосс использует цену бара входа в позицию.
Количество баров, необходимые индикаторам рассчитываются по формуле:
ПериодСжатия * ПериодЕМА * 5
Пример:
Допустим, в скрипте используется:
Сжатие = 60
период EMA, взятый от Закрытия сжатого бара = 100
Тогда количество баров, необходимое для полного расчета индикатора:
60 * 100 * 5 = 30 000
Если сжатие не используется, то:
1 * 100 * 5 = 500
Это то количество баров, которое можно поставить в свойствах скрипта в графе "МаксБаров".
При такой настройке, если на вкладке Лог агента количество баров продолжает увеличиваться, то можно попробовать выполнить один из следующих пунктов:
догрузить недостающую историю через дополнительную настройку +ДобавитьИнструмент в Общих настройках Агента
подождать, когда количество баров станет одинаковым при пересчетах, т.е. накопится необходимое минимальное значение баров для Полного расчета индикаторов
прогрузить историю через простой График (Вид - График). Выберите инструмент в свойствах Графика. Выберите свойство "Дата перезагрузки", сохраните и закройте свойства Графика. Нажмите правую кнопку на Графике и выберите пункт контекстного меню - Перезагрузить данные. Перед последним действием настоятельно рекомендуем скопировать данные из сохраненного кеша данных инструмента (Инструменты - Папка с кешами). Сохраните папки НазваниеПоставщикаCahce и CahceTrade. При недостатке данных для полного расчета индикаторов, в эти папки можно положить данные. После перезагрузки и подключения, программа их увидит. Данные можно попросить на форуме или у друга, кто торгует инструмент достаточно давно.
Опция в агенте включается автоматически.
Опция "ДатаК" в агенте автоматически отключается.
Параметр "Торговать с бар", управляет пропуском определенного числа баров до генерации первого торгового сигнала, необходимого для стабилизации индикаторов.
Параметр применим только для скриптов, написанных в визуальном редакторе программы. При использовании скриптов, созданных во внешней среде, необходимо проверять номер свечи самостоятельно.
Если в данный момент, при запуске в агенте недостаточно баров для расчета индикаторов, то в свойствах нужно установить параметр "Торговать с бар". В этом случае агент начнет торговать только когда накопит минимально необходимое количество баров для расчета индикаторов.
В свойствах скрипта снимите флаг "Отключить генерацию позиций", если стоит. Его необходимо ставить только если скрипт написан на C# и управление позициями осуществляется из внешнего скрипта.
Какие из списка наборов параметров являются текущими? В лаборатории, в скрипте, Вы создаете несколько наборов параметров. Делается это в скрипте, во вкладке Оптимизация.
Теперь, или в самой лаборатории, или в агенте во вкладке Параметры, можно выбрать один из наборов и загрузить его.
Напротив выбранных параметров появится "галка". Однако, если в агенте или в скрипте Вы будете изменять параметры, например, на контрольной панели. То эти параметры уже не будут соответствовать загруженному набору и галка пропадет.
После того как вы провели оптимизацию скрипта, полученные результаты можно сохранить в качестве набора параметров (вкладка Параметры лаборатории). Эти наборы в дальнейшем можно использовать при настройке агентов. Например, если на базе вашего скрипта будут созданы несколько агентов, работающих с разными инструментами, вам будет проще выполнить настройку каждого из агентов.
Предположим, что оптимизация скрипта завершена и вы хотите сохранить результаты. Для этого нажмите на кнопку "Сохранить набор параметров" на вкладке Оптимизация либо на вкладке Параметры . Откроется окно для ввода названия набора. В нем вы можете указать, например, название тикера и дату создания набора.
Важно! В наборе будут сохранены данные из столбца Значение вкладки Оптимизация.
Вы также можете вручную заполнить значения оптимизируемых параметров. Тогда после ввода данных в столбце Значения необходимо Сохранить и Выполнить скрипт, для того чтобы выполнить пересчет скрипта и запомнить введенные параметры. Затем нажмите на кнопку "Сохранить набор параметров".
После того как набор параметров будет сохранен необходимо сохранить скрипт.
Обратите внимание! Вместе с набором параметров сохраняются и результаты оптимизации.
При нажатии на выбранный набор вы можете в соседней таблице увидеть результаты, полученные при оптимизации скрипта на заданном во время оптимизации отрезке времени и с заданным интервалом.
Откройте настройки Агента и отключите опции Исполнять входы и выходы сразу. Это необходимо для того, чтобы исключить случайный вход (выход) в позицию при первом запуске агента.
Запустите Агент.
Откройте окно Агента. Перейдите на вкладку Параметры в окне выбранного Агента.
На примере выше отмечены 2 таблицы:
Таблица набора параметров, сохраненных в скрипте, на основании которого был создан Агент.
Таблица набора параметров, сохраненных в Агенте. Сразу после создания нового Агента таблица будет пуста.
Обратите внимание! В таблице наборов параметров зеленой галкой отмечены выбранные (Текущие) наборы параметров.
В таблице наборов скрипта (1) зеленая галка всегда будет отображаться напротив набора, который был сохранен, как Текущий в скрипте. Тоесть если Вы выберите в Агенте один из наборов из этой таблицы, то Текущие параметры Агенты изменятся. После перезагрузки программы зеленая галка вновь будет отображаться напротив набора, который сохранен как Текущий в скрипте, хотя для Агента вы выбрали другой набор. При этом Текущие настройки Агента останутся прежнми - теми, которые вы выбрали до перезагрузки.
После того как текущие параметры будут заданы, Вы можете снова включить опции Исполнять входы и выходы сразу в настройках агента.
Обратите внимание! Если вы добавите в свой скрипт новые блоки, значение которых будет задаваться через окно Оптимизация, то при загрузке старых наборов параметров, в которые этот блок не вошел, для данного параметра будет установлено значение "по умолчанию" (например для числового значения может быть задано число 5)
Текущие параметры индикаторов из скрипта передаются во вновь запущенный агент автоматически. Если в скрипте сохранено несколько наборов параметров, то текущим в агенте устанавливается набор, выбранный текущим в скрипте.
При создании скрипта можно использовать блок Контрольная панель в редакторе, в котором параметры можно изменять непосредственно в самом агенте. Если контрольная панель не была создана, то параметр можно изменить на вкладке Параметры, в агенте. В этом случае, после изменения параметров, в агенте, из Контрольной панели или на вкладке Параметров, нужно сохранить агент по кнопке Сохранить.
Если вы хотите сразу применить сохраненный набор параметров к скрипту и использовать их как Текущий набор, то перейдите на вкладку Параметры. Выделите нужный набор и нажмите на кнопку Применить .
Выберите один из наборов параметров в таблице 1. Нажмите на кнопку Применить . Параметры, полученные во время оптимизации скрипта будут установлены как Текущие для Агента.
В таблице 2 Вы можете создать отдельные каталоги для хранения наборов параметров. Для этого используйте кнопку .
Создадим новый каталог Параметры Агента (не обязательный пункт, для удобства разделения наборов). Выберите строку Каталог в таблице 2 и нажмите на кнопку . Введите название нового каталога и нажмите ОК.
Напомним, что на предыдущем этапе Вы установили Текущими параметрами Агента набор параметров из таблицы 1. Далее нам необходимо сохранить Текущий набор параметров в таблицу 2. Выберите созданный каталог Параметры Агента и нажмите на кнопку Создать набор из текущих параметров . Введите название нового набора параметров и нажмите ОК. Выделите созданный набор и нажмите на кнопку Применить . Выбранный набор параметров буден задан как Текущий в Агенте.
Перед заменой скачайте файл. Настройте файл.
Пример создан на основе поставщика данных Transaq.
Наименования инструментов могут отличаться в разных поставщиках.
Настройте файл под своего поставщика данных.
Перед заменой остановите агенты.
Меняется только в выделенных агентах!
Для поставщика данных QuikLua тикеры указывайте с приставкой SPBFUT.
Например: SRZ3:SPBFUT.
То есть в файле должна быть такая запись:
SRZ3:SPBFUT;SBRF-12.23;SRH4:SPBFUT;SBRF-3.24
Все заявки на открытие позиций (Лимитные и Условные) снимутся автоматически, если Агент был остановлен. Заявки на закрытие позиции, после остановки агента будут активны.
Снять заявки можно из окна Позиции, из окна Свои заявки, из окна Менеджер заявок
https://support.binance.com/hc/en-us/articles/115000594711-Trading-Rule На примере XRPBTC, правила такие, минимум 1 XRP но общая сумма не ниже 0.001 BTC Если поставить заявку на 1 XRP , то будет данная ошибка, так как позиция менее 0.001BTC
This is the response from the Bitfinex team: The only requirement for the nonce is that it has a larger value than the previous nonce. The code used to generate a nonce used looks like it would produce a larger number each time, but perhaps a greater nonce was inadvertantly entered at some point. Is there anything else in the code that may conflict with this method of generating a nonce? Are there multiple processes running using the same API key? Due to the fact that the nonce needs to be increasing each time, if you are running multiple concurrent integrations it is recommended to use a different API key for each one.
The nonce that is generated in the library is by design bigger after each call. There should be no reason why it would suddenly not be bigger than the last. Do you maybe run some other application or 3rd party app which uses the same API key? The nonce is bound to the API key, so if you're using it for multiple purposes they might interfere with eachother.
Нежелательно использовать один API key в разных программах. Будет периодически проблема Nonce is too small при выставлении заявок.
При выставлении заявок, брокер снимает заявки и присылает сообщение.
08.10.2018 15:55:34 1801 IB: Order Canceled - reason:
08.10.2018 15:10:04 1801 IB: Order held while securities are located.
Остановите одного из агентов, обратитесь к брокеру, вероятнее всего агенты выставляют встречные заявки, но причину сообщения может сказать только брокер.
Мы настоятельно не рекомендуем торговать, когда на счете нет подушки безопасности в виде сободных средств. У любой сверхсистемы есть просадки. И при входе в рынок на счету всегда должно быть свободных средств(или средств, акций, которые принимаются в качестве маржи) Ниже приводится переписка с клиентом о возможной настройке работы агентов при нехватке свободных средств.
== User Торгуют 2 агента на разных инструментах. Бывает сигналы совпадают по времени и тогда не хватает ГО. Агент которому не хватило ГО пишет потом что нехватка по лимитам, пропущен сигнал и дальше не торгует. Мне нужно, чтобы он дальше торговал без моего вмешательства, а пропущенный вод забыл. Что нужно поменять в настройках? (у меня автозакрытие стоит 1, виртуальная позиция 0) ==
Support не очень понятно, как он будет торговать, если денег нет. Но, в принципе в автооткрытие и автозакрытие можете поставить по 100 баров , в этом случае агент будет пытаться выставить заявки в течении 100 баров. Как при этом могут повести себя биржа и брокер, лучше уточнять у них, спам они не любят. ==
User Агенты краткосрочные, время в позиции 5-10 минут, если торгуют по очереди то ГО хватает, но бывает сигналы одновременно поступают. Если сигнал пропущен то мне не нужно автоотркытие 100 баров, нужно чтобы он этот сигнал забыл и ждал следующий. PS автозарытие стоит 1 бар т.к. бывает заявка на продажу не срабатывает лимитка и тогда он по рынку выходит. Автооткрытия нет, лучше дождаться нового сигнала пропущенный вход всегда хуже.
== Support При использовании блоков "По рынку" можно поставить настройку "По рынку с фикс.ценой". Т.е. выставлять заявку не по рынку, где требуется большая маржа биржей, а лимитными заявками. Флаг "Игнорировать сигнал выход не на последнем баре" для выхода из позиции. то есть настройки будут такие: автооткрытие 1 виртуальная позиция 2 Виртуальная позиция, баров для входа в позицю. соответственно, если вход пропущен, то на след баре будет пробовать вход по рынку(или лимткой при включенном флаге "фикс ценой"), а через бар забудет этот сигнал.
Какой тикер отображается в таблице агентов в колонке тикер? Если в агенте несколько источников, то для управления агентами они все равные, поэтому выводится первый в списке. В не зависимости от того, какой источник отображается в данный момент, на работе агента это никак не должно сказываться.
Если у конкретного источника сама меняется бумага, то это повод обратиться в службу поддержки https://www.tslab.pro/support
В течении дня Вы накапливаете сделки по инструменту(тиковый кеш инструмента).
Позже, при отключении от поставщика он записывается в файл.
При подключении к поставщику данных могут перезапрашиваться сделки по инструменту за текущий день.
В этот момент могут приходить сигналы на бар и программа будет выдавать сообщение "Пропущен сигнал входа/выхода ..."
При этом Вы точно знаете, что данный сигнал был исполнен.
Как правило, это разовое сообщение, на логику торговли влиять не будет, если в настройках поставщика данных стоит Блокировка заявок, баров
20:14:56.95[12]INFO :101:Warning:Script::Не могу выполнить по рынку сигнал "ЗакПозПоStoLos2" для скрипта "2ma_traling1"
Это сообщение выдается, когда в Менеджере Команд нажимается кнопка "Выполнить по рынку", но активной условной заявки уже нет. Например она не принята, исполнена, отменена или не принята системой. Сначала нажмите "Выполнить", чтобы заявка стала активной и после этого "Выполнить по рынку".
Warning | Server returned an error: {"message":"Invalid order: not enough exchange balance for
Биржа Bitfinex присылает сообщение о нехватке средств при выставлении заявки
Алгоритм исполнения сигналов агентом, в зависимости от настроек:
При первом запуске агент берет ту историю, которая уже накоплена в кешевых данных. Ограничение "ДатаОт" в свойствах скрипта распространяется на агент
В программе установить ограничение "ДатаОт" можно только в настройках скрипта. У нас в планах сделать эту дату доступной в настройках агента.
Специальная загрузка истории в агент не требуется. Однако, бывают ситуации, когда новый инструмент загружен на график (Вид-График) но в агенте история не появилась. Просто перезапустите агент (стоп/старт) в окне Агенты.
Быстрый вызов нужного инструмента, с нужным для агента таймфреймом: Агенты | кнопка График, откроется график инструмента.
При создании агента, а так же по кнопке быстрого доступа в виде списка, открывается окно настроек агента. В данном окне выбирается инструмент. Там же при помощи кнопки "+ Добавить инструмент" можно подгрузить дополнительный инструмент, в котором есть глубокая история, например, свой инструмент из поставщика кешевых данных или поставщика текстовых данных:
Не рекомендуется осуществлять торговлю с двух компьютеров на одном счете.
Когда выставляется заявка, программа генерирует номер, передаваемый брокеру. Брокер возвращает этот номер вместе с номером заявки.
Таким образом на двух компьютерах может быть сгенерирован одинаковый номер и по этому номеру в агент может быть привязана заявка с другого компьютера. В том числе другой инструмент.
Два источника. В обоих один и тот же инструмент. Два субсчета. Вы хотите, чтобы агент выставлял заявки по одному инструменту с двух разных субсчетов. Такая конфигурация не поддерживается.
Все заявки в данном случае будут выставляться на один субсчет (по первому источнику), а не на два.
Если у Вас ДВА СУБСЧЕТА, то работа на них ОДНИМ и тем же ИНСТРУМЕНТОМ должна осуществляться из разных агентов.
Если агенту на основании этого скрипта указать два одинаковых инструмента, но с разных субсчетов, то он выведет в лог одинаковое значение баланса. Если инструменты будут разные, то баланс по счету покажет верный. То же самое с PortfolioName
Вы выбрали 50 акций/фьючерсов для торговли. Вам нужно, чтобы покупалась та акция, на которой выполнилось условие, и при определенных условиях продавалась нужная акция. Как лучше сделать, для меньшего расходования памяти и ресурсов компьютера?
Возможны варианты:
Сделать 50 агентов и в каждом агенте отдельная акция/фьючерс.
Сделать агента(скрипт) в котором будет, например, 5 источников (т.е. 5 акций). Агент будет их отслеживать, и для каждого источника свой алгоритм. Таких агентов будет 10, чтобы в сумме следить за 50 акциями
Сделать один агент, в котором будут торговаться все эти инструменты.
Все три варианта имеют право на жизнь.
Вариант №1.
При данном варианте нагрузка сильно ляжет на процессор. Возможно, что утром нужно будет запускать группы агентов вручную, по очереди. Так как мы еще не создали поддержку постепенного включения агентов. Если 50 агентов запустить одновременно, как это сейчас программа делает, то каким-то агентам может не хватить процессорных потоков. Была такая рекомендация, что для одного агента необходимо иметь одно свободное ядро (на самом деле, это утрировано, сейчас почти все процессоры имеют многопоточность(и гипертрейдинг). Рекомендация в документации дана как раз на такой случай, (одновременный запуск десятка и более агентов). Но программа TSLab полностью поддерживает многопоточность и многозадачность. Чем больше потоков у процессора, тем лучше.
Вариант №2,3.
Если рассматривать данный вариант при ограниченных ресурсах, то он более предпочтителен, но у данного варианта есть своя особенность.
Особенность заключается в построении дополнительных баров (фейковые бары) на неликвидных инструментах. Т.е. если в скрипте, например, есть ликвидный инструмент, у которого не бывает пропусков минутных баров и какой-нибудь малоликвидный инструмент, торгующийся раз в день, то программа заполнит на неликвидном инструменте все недостающие минутки фейковыми барами. По этой причине индикаторы могут работать не так, как если бы они работали в скрипте с одним неликвидным инструментом. С точки зрения оперативной памяти, при одинаковой настройке в свойствах МаксБаров и/или МаксДней и/или ДатаОт, оперативная память будет потреблена одинаково.
Каждый агент в своем потоке (ядра процессора имеют потоки).
Порядок пересчета не регламентирован, если ядер много - исполнение идет параллельно.
Скорее всего, в свойствах скрипта выбран пересчет Сделка или Покупка/Продажа. Агент торгует на не закрытом баре.
В свойствах скрипта необходимо поставить другой Интервал пересчета.
В большинстве случаев желательно использовать Интервал или Интервал+перв.сделка
Интервал - пересчет происходит по закрытию бара. Когда пришла пачка тиков, в которой есть тик со временем закрытия бара.
Интервал+перв.сделка - пересчет по открытию бара. Где "Сделка" это открытие бара. Когда пришла пачка тиков, в которой есть тик со временем начала текущего бара.
Прочтите статью: Виртуальная позиция Возможные варианты:
В настройках скрипта выбран интервал пересчета - "Сделка", по этому работа идет на не закрытой свече. Соответственно, виртуальная позиция появляется и исчезает. Выберите интервал пересчета "Интервал". При этом необходимо помнить, что тики биржа присылает пачками, размер пачек зависит от времени и инструмента. Например: Фьючерс РТС от 1 тика на вечерке, до 2000 при открытии торгов и выходе новостей.
Не стоят флаги автоматической торговли (Автооткрытие / Автозакрытие) в торговых настройках агента (Главное меню - Торговля - Агенты - значок шестеренки на выбранном агенте). Если флаги стоят, но скрипт все равно не торгует. В окне Менеджер команд появляются команды с отключенным флагом разрешено, то скорее всего скрипт пытается выставить команды "задним числом". Иными словами, команды появляются для прошедших баров, хотя в предыдущем расчете (когда этот бар был последний) команды не было. Ниже приведены случаи, которые уже встречались:
Используются неверно сделанные индикаторы, которые меняют свои значения в истории при появлении новых данных.
При использовании API функции открытия/закрытия позиции вызываются для i-го бара, а не i+1 (заглядывание в будущее)
Использование метода декомпресии 2.
При использовании API функции неправильно прописан торговый цикл (не идет расчет для последнего бара). Например, "i < barsCount-1".
Не установлен патч регионов и времени
Проверить довольно легко. Видим, что в лаборатории есть вход, а в реале он пропущен. В лаборатории ставим ограничение "Дата к" равным свече открытия пропущенного входа.
Если вход на этой свече исчез (она будет последней на графике), значит со скриптом(или индикаторами) что-то не так.
Желательно делать такую проверку до начала торгов.
Опасные индикаторы: ZigZag, Фрактал, тренд рисующие индикаторы, не имеющие историю изменения. И другие индикаторы, при создании которых были допущены ошибки.
Если Вы видите в очереди заявок контрагентов, а брокер присылает это сообщение, то обратитесь к брокеру. Возможно сообщение прислали по ошибке, а брокер имел ввиду что-то другое.
Но как правило сообщение означает именно то, что написано. Очередь заявок пуста или в ней не достаточно ликвидности.
20:36:00.37:206:Error:Агент 'XXX':111111111:[CGate:C001111]:Заявка 222222222 не может быть отменена.
Заявку, которая находится на исполнении у биржи, отменить нельзя.
Например, если были проблемы с интернетом или на слишком быстрых пересчетах, об исполнении заявки не пришла информация(еще не пришли сделки по заявке).
На пересчете скрипт посчитал, что необходимо снять заявку для выставления новой.
Если заявка уже исполнена или были проблемы с интернетом, придет такое сообщение.
Работы вызваны многочисленными просьбами пользователей.
Пользователям хотелось бы одновременно ставить несколько заявок закрытия и изменения одной позиции, к примеру войти в позицию по цене 100, по 90 добрать позицию, а по 80 закрыть всю позицию, при этом частично закрыть позицию по 110 (выше рынка продаем, ниже рынка покупаем) и одна заявка по стоп-лосс.
Мы начали работу в этом направлении, в связи с чем, в версии программы 2.1 можно выставлять несколько заявок ИзменитьПо на одну позицию.
Таким образом, в данный момент, если, например, при использовании блока Закрытие позиции(любой тип) и ИзменитьПо(На уменьшение позиции), выставить сигнал одновременно, то внутри бара образуется Переворот позиции двумя заявками, и программа может выдать сообщение
В окне сообщений: 16:17:51.62[580]DEBUG:Попытка перевернуть позицию на 19998 баре, хотя это не разрешено.
Сообщение означает, что скрипт выдает ДВА сигнала для одной позиции на ОДИН бар.
Сигнал на Изменение позиции и Закрытие позиции, что приводит к неверной работе программы.
Если появляется эта строка в лаборатории - это означает, что корректно скрипт работать не сможет.
Программа об этом сигнализирует, но парировать подобные вещи пока не умеет.
До начала работ, программа всегда выставляла только один сигнал на Бар, из всех выданных скриптом, сейчас пользователю рекомендуется следить за сигналами самостоятельно из скрипта и не выставлять на один бар множество сигналов, способных не только закрыть позицию, но и перевернуть.
Пример. Вы вошли в позицию Лонг по 100 на 5 лотов. Выставили заявку на уменьшение позиции на 5 лотов. Выставили заявку на закрытие позиции.
Единственный рабочий вариант внутри бара, пока такой: Частичный докуп. Вошли на 2 лота по 100, докупить 3 по 90 и закрыть позицию по 110 на 5 лотов.
Пока по прежнему Одновременно поставить две заявки закрытия одной позиции рекомендуется только если это будут две условные заявки из которых программа сделает связанную заявку. Обе условные (стоплосс и тейкпрофит), с одинаковым количеством. Только этот тип заявки полностью работает внутри одного бара.
Условная заявка по сигналу 'xL' может не сработать, т.к. текущая цена на рынке 65505 (Цена условия 65801)
Если сообщение приходит до начала торгов, сразу при подключении к брокеру, т.е. во время загрузки данных, то беспокоиться рано. После прогрузки всех данных по инструменту, сообщение может исчезнуть.
Сообщение означает именно то, что написано. Т.е. в данном примере выставляется условная заявка (стоп-лосс) на закрытие длинной позиции по цене 65801, когда цена на рынке уже 65505. Если сообщение пришло на открытии торгов, то это означает, что рынок открылся с гепом. Фактически, условная заявка на продажу, сразу становится лимитной на продажу(65801минус Указанное проскальзывание) и согласно очереди заявок не будет выполнена сразу, а будет стоять(пока сигнал ее выставления выдает Агент), до тех пор, пока до нее не дойдет очередь. Если сообщение пришло внутри дня, при очередном выставлении заявки, это означает, что в скрипте не продумано выставление условных заявок и они заведомо выставляются с худшей ценой(Плохие заявки). Можно намеренно выставлять такие заявки, чтобы воспользоваться встроенными механизмами программы TSLab, ниже рассмотрим, что можно настроить, что бы исполнить такую заявку. В торговых настройках агента (Управление агентами - кнопка Торговые настройки): "Автозакрытие" Данная настройка позволяет автоматически закрывать позицию, если заявка закрытия была не исполнена. В данном случае заявка будет стоять один бар, а на следующем баре пойдет замещающая заявка по рынку. "Проскальзывание" В данном случае, если бы проскальзывание стояло 300 шагов, то лимитная заявка на продажу бы выставилась по цене 65501(при условии, что шаг 1 пункт) и исполнилась бы незамедлительно. "Ждать исполнения закрытия", например, если бы Автозакрытие стояло 5 баров, а ждать исполнения 4 бара, то лимитная заявка бы простояла 4 бара, а на пятом баре была бы заменена на заявку по рынку.
Сообщение превышено время ожидания.
При выставлении заявки TSLab ожидает получить 2 сообщения: 1. подтверждение транзакции с номером заявки 2. информацию из потока заявок с данными заявки. Ждет TSLab по умолчанию 40 сек (время задается в Файл | Настройки программы | Торговля , параметр Таймаут заявки). Если хотя бы одно значение не пришло, появляется это сообщение. В результате неизвестно, к какой заявке принадлежит комментарий, а также состояние заявки. Более того, если из скрипта продолжает выдаваться сигнал, программа снова пошлет транзакцию брокеру. Таким образом может набраться не контролируемая позиция. Возможные причины:
Антивирус нужно настроить таким образом, чтобы он не проверял скаченные данные из интернета.
Брандмауэр необходимо поставить программу TSLabApp в исключения
Интернет или ошибки работы сервера брокера.
если не установлены обновления windows
Настройка автоматической синхронизации времени по интернету(актуально для крипто бирж).
Региональные настройки не соответствуют физическому месту нахождения компьютера. В лог файле программы есть похожие записи: 'Can't parse date-time: '9/19/2016 12:23:20PM. Решение: настроить региональные настройки, например, в России нет времени PM,AM . В России ЧЧ:ММ:СС Общие настройки компьютера для России Обновление регионов для России в 2016 А если компьютер физически находится в США, то настройка времени PM,AM будет верной.
Не хватает потоков процессора. В лог файле программы Инструменты | Папка с логами - файл tslab.log сопровождается сообщениями DEBUG:State 48. Try to recalc again... Can't recalc because calculation is in progress yet... Решение: поставить настройку больше, таким образом, чтобы процессор успевал обрабатывать все поставленные задачи.
При использовании коннектора QuikDDE, в первую очередь сообщение означает, что сломан DDE. Необходимо загрузить эталонную конфигурацию Quik Не допускаются какие-либо изменения в конфигурации Quik. Для данного коннектора Необходимо сначала проверить Конфигурацию, потом переходить к остальным пунктам поиска проблемы.
Сообщение при использовании QuikLua
Вероятно, в потоке котировок отсутствует нужный инструмент.
В Quik, в таблице "Текущие торги", есть колонка шаг цены.
Добавьте инструмент в таблицу, если до этого он не был добавлен, посмотрите, какой указан Шаг.
Если Шаг 0, зайдите в пункт меню Система/Настройки/Основные настройки/Программа/Получение данных/ и выберите пункт "Исходя из настроек открытых пользователем таблиц".
Если после этого действия в таблице 0, или есть правильное значение, но Вы продолжаете получать сообщение "Цена не кратна", нужен архив рабочего места QUIK без ключей доступа и файла chm. Закройте QUIK, сделайте архив и пришлите в центр поддержки https://www.tslab.pro/support или сразу на quiksupport@arqatech.com или брокеру.
Сообщение может выглядеть так: "В данном режиме торгов запрещено выставлять сделки по данному клиенскому счету". Или так "Неверный код клиента" при подключениях Quik. "Неизвестный код клиента" - чаще означает, что код клиента не указан на бирже, неактивен. В данном случае обратитесь к брокеру. С личными кабинетами данные сообщения никак не связаны. Ключ к программе работает сразу, как только появляется в личном кабинете.
Сообщение присылает брокер или биржа и оно чаще всего указывает, что именно данного инструмента нет на указанном счете. При выборе инструмента, инструмент выбирается именно со счета. При этом все инструменты сразу видны на всех счетах. Деньги могут быть видны только на одном из счетов(основном, например ИИС). В итоге это вносит некоторую неразбериху.
Самое правильное действие будет: позвонить брокеру и спросить: "по какому из счетов я могу торговать именно этим инструментом?" Узнав эту информацию дать своим счетам в программе TSLab, в таблице Торговля - Счета, имена, с помощью которых будет легко понимать, какой счет выбирается.
Скриншот с конечным вариантом: Сообщение так же может указывать, что данными инструментами Вам действительно запрещено торговать(или правильнее сказать, - не разрешено) по каким-то причинам, это стоит выяснить у брокера.
Для пользователей QuikDDE, сообщения могут означать, что из Quik в TSlab не приходят счета. Подгрузите в Quik конфигурацию и присвойте имена счетам.
Для пользователей SmartСom, Выставлять заявки на счете МО нельзя, деньги видны на нем. Счет MS - для торговли ММВБ(рынок акций). FR - для торговли на ФОРТС(Рынок фьючерсов).
Т.е. если резюмировать варианты:
Идёт попытка выставления заявки на счете, на котором нельзя торговать данным инструментом или код клиента не прописан на бирже. Сообщение присылает брокер или биржа. В зависимости от брокера сообщение может различаться.
Стандартное сообщение программы.
Самая высокая вероятность получить сообщение, если было отключение от сервера брокера/биржи.
При подключении, на загрузке, программа получает статусы своих заявок.
Одновременно, получаем сделки по инструментам и рисуем графики.
Агент, загружая график, вероятно, решил отменить заявку, но статус к заявке либо не пришел еще, либо был изменен.
Например, если стояла условная заявка, она могла стать активной, т.е. сработало условие и брокер направил уже лимитную заявку на биржу.
Или, например, заявка уже была исполнена, и на загрузке пришла заявка, а сделки к ней еще не загрузились.
После загрузки всех данных, сообщение должно пропасть.
В настройках поставщика данных есть параметр "Блокировка заявок, сек".
Убедитесь, что в параметре стоит несколько секунд, это задержка на старте подключения к брокеру, прежде чем будут отсылаться запросы брокеру.
Сообщение может встречаться и во время торговли, не только на загрузке данных.
У Вас уже стояла заявка, на пересчете скрипт выдает сигнал отмены, или перевыставить или сменить цену.
Т.е. любые изменения.
Но пока ваш скрипт считался, пришло с рынка уведомление о том, что заявка изменилась.
Например, могло измениться количество, т.е. уже начали исполнять. Или она уже была снята.
Чтобы скрипт не выдавал сигналы по уже несуществующей ситуации, в конце пересчета скрипта, сигналы, выданные скриптом по инструменту, отменяются и выдается это сообщение.
Если в окне не указано иного (т.е. не стоят дополнительные настройки, которые доступны у некоторых брокеров), то:
По умолчанию заявки из TSLab выставляются на два дня. Если сигнал выставления заявки действует на каждом баре, заявка перевыставляется с новой датой, при окончании срока.
Для ручной заявки из Менеджера заявок, по умолчанию, заявки выставляются до конца дня, но в интерфейсе менеджера заявок можно выставить любую дату.
В случае подключения Plaza II - TSLab самостоятельно обрабатывает условные заявки. Лимитные выставляются до конца сессии (ближайший клиринг).
В случае работы с Quik, лимитки ставятся всегда до конца сессии, условные переносятся, но нужно спрашивать своего брокера, переносит ли он их.
В других случаях TSLab всегда ставит условные заявки на два дня, если поддерживается брокером, если не поддерживается брокером, то до конца сессии (Алор).
В агентах срок выставления условных заявок можно изменить в торговых настройках агента.
Связанной заявкой становятся две заявки на закрытие одной позиции, когда:
одна из заявок это "Закрытие позиции по тейк-профит" без установленной настройки "Тейк-профит без проскальзывания" в торговых настройках агента
другая заявка это "Закрытие позиции по стоп-лосс".
Количество в обеих заявках должно быть одинаковым!
При выключенной или при недоступности опции (если брокер не поддерживает данный тип, например Алор) будет выставляться та заявка, цена которой ближе к текущей цене инструмента*.
*Текущая цена - зависит от пересчета агента:
Интервал - по Закрытию бара.
Интервал+сделка и Интервал (для событий) - по Открытию бара.
Сделка и Пок/Прод - каждая сделка на рынке.
Опция Связанных заявок включается автоматически на следующих поставщиках данных: Криптобиржи, QuikLua, Plaza.
В некоторых случаях, помимо использования блоков условных заявок, требуется включить настройку в поставщике данных, например в Transaq.
Важная особенность исполнения программой такого сигнала:
Название выхода из позиции в таблице сделок агента, при использовании данного типа заявки, может не совпадать с лабораторией.
Не рекомендуется применять блоки, использующие Имена выхода из позиции, при создании скриптов, если используются связанные заявки.
Чтобы отключить режим, достаточно поставить "Тейк-профит без проскальзывания" или выключить настройку в поставщике данных (для Transaq).
Брокер, в моменте, может не прислать цены сделок по заявке, так как данные о принятии транзакции, своих сделках, заявках поступают асинхронно. В этом случае программа возьмет цену заявки для дальнейших расчетов.
Если заявка выставлялась "По рынку", то цена заявки в этом случае будет равна "+-K%" от текущих цен, для всех рынков кроме рынка Фортс. Для рынка Фортс цена рыночной заявки будет равна цене верхнего и нижнего лимитов рынка (планки рынка). K = по умолчанию 4%, кроме брокера IB, где K регулируется в настройках поставщика данных. "+-" - направление заявки:
если покупка, то Цена последней сделки на рынке +K (значение верхнего лимита рынка для Фортс);
если продажа, то цена последней сделки на рынке -K (или значение нижнего лимита для рынка Фортс).
В итоге, на графике агента можно увидеть следующую картину:
Произошло следующее: вместо цен исполнения реальных сделок входа в лонг, использовалась цена рыночной заявки. (Рынок фортс, цена рыночной заявки в покупку = верхнему лимиту рынка). Если расчет стоп-лосс и/или расчет профита зависят от цены входа, то выставляться они будут по заведомо неверным ценам. Так как цена входа в позицию будет равна планке рынка или "+-K%" от текущих цен. Поэтому, в случае, если от цены входа зависит расчет цены стоп-лосс или профит, рекомендуется использовать блок "Цена входа (расчетная)".
Блок "Цена входа" в агенте дает цену, которую присылает брокер (средняя цена сделок по данной заявке).
Блок "Цена входа (расчетная)" в агенте дает цену, такую же как в лаборатории.
Расчетную цену рекомендуется использовать, когда цена выхода из позиции зависит от блока Цена входа (стоп-лосс или профит рассчитываются от цены входа).
Использование расчетной цены имеет ряд ограничений. Блок "Цена входа (расчетная)" (или в некоторых случаях настройка в блоках, например, трейлстоп) не сможет показать расчетную цену в агенте, если произошло одно из событий или включена настройка:
Включена опция "По рынку с фиксированной ценой" в Торговых Настройках (управление агентами, кнопка "шестеренка"). В данном случае блок "Цена входа расчетная" отдаст цену:
закрытия бара, если режим пересчета Интервал
открытия бара, если режим пересчета Интервал+сделка
Если был пропущен вход в позицию. Здесь под "пропущен" понимается следующее: Сигнал был выполнен вручную из менеджера команд или вручную с комментарием из менеджера заявок, или прошел по автооткрытию).
Если используются блоки входа в позицию "По рынку", то в этом случае блок "Цена входа (расчетная)" отдаст цену закрытия бара, после которого прошла сделка;
Если используются блоки "Открытие позиции, если Больше/Меньше", то в этом случае блок "Цена входа (расчетная)" отдаст цену условия.
Расчет не совместим при переносе заявки или сделки через таблицу свои заявки или свои сделки, по кнопке "Перенести".
Если сработала опция "Плохие по рынку", блок не сможет отдать расчетную цену первого сигнала.
При оптимизации не имеет значения, что используется, — "расчетная цена входа" или "цена входа".
Время, в случае выставления и снятия заявки, считается от подачи команды в поставщик данных и до получения ответа с сервера (из поставщика данных) с подтверждением выставления, снятия заявки.
В случае перевыставления (изменения) заявки, время складывается из времени снятия старой заявки и времени выставления новой.
Скорость выставления заявки зависит от:
Физическое место расположение торгующей машины (удаленность от торгового сервера или биржи)
Занятость потоков в процессоре (одновременное исполнение множества агентов или общая занятость процессора/компьютера).
Скорость работы самого сервера.
Скорость работы биржи (если речь уже о лимитках или по рынку).
Вы выставили заявку и она исполнилась частично. Как правило, нужно набрать позицию до заданного количества лотов.
Программа выставит рыночную заявку для того, чтобы набрать недостающее количество лотов в том случае, если стоят настройки "Автооткрытие" и "Автозакрытие". Но в этом случае программа сделает это заявками по рынку. Или лимитными заявками по цене закрытия бара, если стоит настройка "По рынку с фиксированной ценой". Однако, есть еще один способ. Можно не включать Автооткрытие. Можно в редакторе скриптов или в , получить Количество лотов, находящихся в данный момент в позиции, зная сколько должно быть, легко посчитать недостающие и подать это количество на блоки изменения позиции "ИзменитьПо..."
Таким образом можно написать свое управление позицией, не прибегая к настройке Автооткрытие.
Для блоков изменения позиции Автозакрытие не работает!
Автозакрытие при использовании "Изменить По" срабатывает только если была попытка закрыть позицию в 0.
Например. У Вас есть позиция 100 лотов в лонг. Вы выставили заявку выше входа по сигналу "Изменить По Лимитной цене" и подали в блок количество 90. Таким образом Блок "Изменить по лимитной цене" выставил заявку на продажу 10 лотов. Когда цена на рынке дошла до цены Вашей заявки, рынок использовал Вашу ликвидность только частично, купил у Вас 2 лота, и отскочил вниз. В данном случае Автозакрытие позиции не сработает!
При использовании частичного выхода блоками "Изменить По" Автозакрытие работает только если на блок изменения было подано количество переходящее через 0. Например, У Вас позиция Лонг те же 100 лотов. Вы подаете в блок "Изменить по лимитной цене" количество 0. Таким образом блок ИзменитьПо выставляет заявку продать с количеством 100. Рынок покупает у Вас 2 лота. В данном случае сработает Автозакрытие на 98 лотов.
Поэтому, в случае использования "ИзменитьПо" для частичного изменения позиции количеством необходимо управлять в самом скрипте.
Если произошло частичное исполнение выставленной заявки по сигналу "ИзменитьПо", то Автооткрытие не сработает. Поэтому, в случае использования "ИзменитьПо" для частичного изменения позиции количеством необходимо управлять в самом скрипте.
Ситуации бывают разные, но типичная проблема в слишком большом проскальзывании в условных заявках, когда заявка активируется и идет лимитная заявка на биржу.
Управление агентами - Кнопка Тн - посмотрите, какое проскальзывание стоит, уменьшите его. Если в настройках агента не установлено проскальзывание, посмотрите абсолютное проскальзывание непосредственно в блоке входа в позицию, указанное в блоке проскальзывание имеет приоритет, перед проскальзыванием всего агента, установленного в Торговых Настройках.
Лимиты инструмента (Лимит Верхний, Лимит Нижний) транслирует биржа в котировках. Вид | Котировки Лимиты изменяются в клиринг. Их еще называют "Планки рынка" максимальная и минимальная цена в текущей сессии для инструмента. Если сообщение "Цена сделки вне лимита" пришло при выставлении заявки с типом "По рынку" :
-Можно получить сообщение на старте торгов. Когда котировок еще нет(лимиты неизвестны). А программе нужно выставить рыночную заявку.
В этом случае программа берет последнюю известную цену лучшей покупки/продажи и добавляет к цене 4% - выставляя лимитную заявку.
Если очередь заявок еще не сформирована, используется последняя известная цена.
- Отдельный вариант, при использовании QuikLua Данное сообщение может означать, что в Quik не настроено получение котировок по этим инструментам. Проблема в следующем, тики будут идти все равно, так как есть обезличенные сделки, а котировки идут, только если в Quik был создан запрос на котировки.
Настройте в Quik таблицу: Пункт главного меню "Система" > Заказ данных > Поток Котировок
Котировки нужны для определения рыночной цены и значения планок рынка.
Опционы "Цена сделки вне лимита" теоретически можно получить по опциону У некоторых брокеров есть возможность ВКЛЮЧИТЬ проверку лимита цен. По умолчанию можно ставить любые цены. Через интерфейс Quik это не настроить судя по всему, по крайней мы не увидели. Там примерно такие правила: если цена заявки отличается на 10% от теор.цены -- тогда "Цена сделки вне лимита". К сожалению, теор.цены иногда настолько неадекватны, что это ограничение просто перекрывает "кислород". А иногда спасает от колоссальных убытков.
При подключении к брокеру загружаются сделки, которые могли быть исполнены, пока программа была выключена.
Или может идти загрузка старых сделок.
В обоих случаях время будет отличаться.
При подключении к брокеру совершаются сделки.
- Программа была отключена от брокера.
Вы подключились, при загрузке данных, агент насчитал сигнал и отправил запрос на транзакцию.
Таким образом, пока идет загрузка данных, могут отправляться несколько транзакций, как на выставление заявки, так и ее отмену.
Чтобы этого не происходило, в настройках поставщика данных включите "Блокировка заявок, сек"
По умолчанию блокировка установлена 20 секунд.
Запросы на транзакции будут блокироваться программой указанное время.
Если агент насчитает в этот момент сигнал, будет выводится сообщение "Заявка заблокирована по таймауту подключения".
А при подключении к поставщику "Выставление заявок будет доступно через N сек"
Сколько указывать,- Как правило 120-ти секунд хватает для загрузки сделок по инструментам за весь день.
Но, в случае с QuikLua и InteractiveBrokers, например, лучше увеличить параметр.
Для некоторых поставщиков данных данная настройка отсутствует, так как брокер или биржа присылает определенную информацию, по которой определяется, что все данные загружены.
Настройка работает только при нажатии на кнопку "Подключить" или при автоматическом подключении по расписанию.
Т.е. настройка работает только в момент подключения к поставщику, в другое время она не работает.
Ситуация: Агент показывает (на графике) что ведет позицию, маркер сделки желтого цвета, а реально сделки не было.
Описание: Это виртуальная (расчетная) позиция.
- Виртуальная позиция может появляться, если скрипт запущен позже, чем должен был (по расчету) открыть эту позицию. В этом случае в окне Торговля - "Менеджер команд", команда на вход в эту позицию будет без установленного флага разрешено. Необходимо либо войти в позицию вручную (нажать кнопку Выполнить в Менеджере команд), либо пропустить данный сигнал входа в позицию, дождавшись, когда данная виртуальная позиция исчезнет(будет закрыта по расчету скрипта). Для того, чтобы новый сигнал появился быстрее, можно поставить параметр "Виртуальная позиция, баров" , в этом случае сигнал будет рассчитываться более "свежий". При этом могут не совпадать сигналы лаборатории и агента. Сигнал для программы формирует Агент(Скрипт, созданный пользователем). При выдачи сигнала, TSLab создает Виртуальную позицию, с этого момента включается алгоритм ведения позиции, настроенный пользователем в (Если скрипт не написан в API, с использованием iOrder и настройкой "Отключить генерацию позиций" ). Под сигналом понимается расчет Агента нахождения расчетной позиции на определенном баре. - Подобная ситуация(Виртуальная позиция) будет возникать, если не включена автоматическая торговля. Необходимо открыть окно Торговля - "Агенты", нажать кнопку "Шестеренка", выставить флаги "Исполнять входы сразу" и "Исполнять выходы сразу". Контролировать сигналы можно через окно "Менеджер команд" - Виртуальная позиция может возникать, если был пропущен сигнал по каким-либо причинам, как правило, это потеря интернет соединения и нехватка проскальзывания.
Выставили условную заявку. Выключили программу. Вечером брокер исполнил заявку. Есть большая вероятность, что утром, подключившись к брокеру, комментарий к заявке уже не найдем. (Подключившись в тот же вечер, то комментарий скорее всего будет найден)
В этом случае будет сообщение о пропущенном сигнале. Прочитайте, как неизвестную заявку подвязать к агенту: Перенести заявки и сделки в агент
None
Статус не известен из-за проблем со связью с биржей
Watching
Ожидает наступления условия
Disabled
Прекращена трейдером
Expired
Время действия истекло
Denied
Отклонена Брокером
Forwarding
Выставляется на биржу
Rejected
Отклонена биржей
Failed
Не удалось выставить на биржу
Active
Активная
Cancelling
В процессе снятия
Cancelled
Снята трейдером
Removed
Аннулирована биржей
Executed
Исполнена
PartiallyExecuted
Частично исполнена
Refused
Отклонена контрагентом
Wait
Не наступило время активации
Inactive
Заявка не активна
Matched
Сработало условие
При выставлении из программы лимитной заявки или заявки по рынку, брокером сначала посылается запрос на биржу - Запрос на транзакцию, где клиринговая компания проверяет лимиты Вашего счета:
В случае превышения лимитов приходит ответ "Нехватка средств по лимитам клиента".
В случае успешной постановки заявки, в программу приходят Номер заявки (с биржи) и Номер транзакции (от брокера).
Из программы выполняется Запрос на транзакцию, в результате которого в программу поступает Номер заявки и Номер транзакции.
Порядок исполнения Запросов на транзакции определяет брокер, и как правило, он не отличается от биржевого.
Порядок исполнения заявок определяет биржа и это правило одинаково для всех. Все в очереди заявок.
В программе TSLab вводится понятие «Портфельная заявка». Оно обобщает стадии жизни заявки. Например, при постановке и срабатывании условной заявки, портфельная будет содержать брокерскую условную заявку и биржевую лимитную, созданную при срабатывании условия.
Также при операции изменении цены заявки, портфельная остается той же, но внутри будет содержаться старая отмененная заявка и новая активная по новой цене.
Портфельная заявка получает уникальный "Портфельный номер" при создании. Также портфельная заявка содержит комментарий с номером агента и сигналом. При поступлении ответов от брокера, к портфельной заявке привязывается номер транзакции и заявки.
Таким образом портфельная заявка в программе является "носителем" всей информации о движении транзакции как у брокера, так и на бирже и внутри TSLab.
И если Вы используете функцию переноса заявки (в таблице Свои заявки, кнопка "Перенести"), вместе с портфельным номером переносится всё и заявке присваивается новый комментарий ИмяАгента.Сигнал.
Портфельный номер заявки можно посмотреть, если непосредственно на графике Агента навести на бар сигнала входа в позицию (или выхода).
Номер заявки будет указан в круглых скобках. Также, номер можно посмотреть в таблицах "Свои заявки" и "Свои сделки" в колонке Номер заявки.
В программе нет отображения номера транзакции (Transaction ID). Данный номер можно посмотреть только в лог файле программы.
Лимитная заявка - Выставляется непосредственно в очередь заявок биржи.
Пример
В качестве примера возьмем инструмент с шагом, равным 5.
цена лучшей покупки равна 100
цена лучшей продажи равна 110 (лучшее предложение в очереди заявок на продажу)
Вы выставили заявку "Купить по цене 105". Теперь Ваша заявка является предложением с лучшей покупкой. Биржа регистрирует сделку, если кто-то совершает противоположную операцию по цене 105 или ниже (выставляет заявку в противоположную сторону).
Если Вы выставили лимитную заявку в противоположную очередь, например, цена ближайшей лучшей продажи равна 110 и Вы выставляете заявку "купить по цене 120", то таким образом биржа "Сведет" Вашу заявку с заявкой лучшей продажи.
Для выставления Лимитной заявки можно использовать блоки:
"Открытие лимитной ценой"
"Закрытие лимитной ценой"
"Открытие позиции если больше" с флагом "Открытие лимитными заявками" в торговых настройках Агента.
"Открытие позиции если меньше" с флагом "Открытие лимитными заявками" в торговых настройках Агента.
"Изменить лимитной ценой"
"Закрытие позиции по тейк-профит" с флагом "Тейк-профит без проскальзывания" в торговых настройках Агента.
Все блоки открытия и закрытия позиции "По рынку" с флагом "По рынку с фикс. ценой"
Подробную информацию о доступных настройках можно посмотреть в статье Торговые настройки агента.
Обратите внимание! Если торговля ведется Агентом, то Дата действия лимитной заявки в программе автоматически выставляется всегда на день. Изменить параметр нельзя.
Выставление срока действия заявки можно только в ручном режиме выставления заявок (Торговля - Менеджер заявок).
Есть особенность на бирже MOEX: во время вечернего клиринга все заявки снимаются. На каждом пересчете программа проверяет статус заявок, если заявка не найдена, программа выставит новую заявку.
У брокеров вид такой заявки называется Лимитная. Одним из видов может являться takeprofit.
У некоторых криптовалютных бирж есть особая настройка для лимитных заявок: Post-Only. Данная настройка доступна в настройках поставщика данных. Из программы: Данные - Поставщики - Выделить поставщика данных (выключить расписание, если включено) - Настройки.
В программе настройка Post-Only работает только для лимитных заявок. При использовании настройки лимитная заявка никогда не попадет в противоположную очередь заявок.
Пример
В качестве примера возьмем инструмент с шагом, равным 5.
цена лучшей покупки 100
цена лучшей продажи 105
Вы выставили лимитную заявку, купить по цене 110. Заявка выставится по цене 100, это не точное число, о правилах таких заявок читайте в документации биржи. Если кратко - это режим выставления лимитных заявок только в очередь своего направления.
У брокеров такой вид заявки называется Рыночный или Маркет заявка.
Некоторые биржи могут принимать и рыночные заявки, например рынок акций на MOEX.
А на рынке фьючерсов и деривативов ФОРТС рыночными заявками считаются лимитные заявки на верхний или нижний лимит рынка (планки рынка).
Например заявка "Купить". Для того чтобы совершить такую операцию, брокер выставляет такую заявку на верхний лимит инструмента. Биржа "сводит" Вашу заявку с заявками, которые стоят в Очереди заявок (в стакане) на продажу, пока не реализует весь объем вашей заявки.
Планки определяются биржей и являются максимальной и минимальной ценой, по которой можно выставить заявку между двумя клирингами. Эти данные можно увидеть в программе в окне Котировки (Вид - Котировки).
При подключении через брокера, как правило, используется одноименный тип заявки и брокер сам выполняет такие заявки. По каким-либо причинам, реализация может быть такой (например, при прямом подключении Plaza2):
Если на момент выставления заявки, котировки не известны, т.е. планок еще нет, например, это возможно до начала торгов (на классических биржах), когда еще не совершено на рынке ни одной сделки, программа выставит Лимитную заявку по цене равной Последняя известная цена в очереди заявок +-4%.
"+-" - зависит от направления. Купить по цене + 4%, Продать по цене -4%. Результатом редко, но может стать сообщение "Цена сделки вне лимита". Как только пойдет первая котировка, заявка выставится на пересчете.
Не касается рынка акций, где используется одноименный тип заявки самой биржи.
Для выставления заявки по рынку можно использовать блоки:
"Открытие позиции по рынку"
"Закрытие позиции по рынку"
"Изменить по рынку"
При использовании указанных выше блоков следует учесть, что в торговых настройках агента не должен использоваться флаг "По рынку с фикс.ценой", иначе любая заявка будет выставляться лимитной.
Более того, данный флаг используется для настроек Автооткрытия и Автозакрытия. Но у них, при этом есть свои собственные настройки, отключающие данный режим.("Блокировать настройку "по рынку с фикс ценой", для автооткрытия/автозакрытия"). Подробнее в статье Торговые настройки агента.
Под условной заявкой понимается несколько разнообразных "Видов" (как это называется у брокеров) заявок. Самое распространенное использование, это выставление стоп-лосс - заявка ограничивающая убыток позиции.
В качестве примера возьмем инструмент с шагом, равным 5.
цена лучшей покупки 100
цена лучшей продажи 110
Вы вошли в позицию Лонг (купили) по цене 105 и выставили стоп-лосс по цене 100 с проскальзыванием 2 шага.
Когда на рынке кто-либо произведет сделку по цене 100 (или очередь заявок будет ниже этой цены), сработает условие, которое выставит лимитную заявку Продать по цене 90.
Полное наименование транзакции в данном случае звучит так:
"Продать по цене = Цена Условия Минус Проскальзывание, если на рынке произошла сделка по цене Условия"
Точно такой же смысл несет в себе и заявка стоп-лосс для ограничения позиции Шорт, "Купить по цене = Цена Условия Плюс Проскальзывание, если на рынке произошла сделка по цене Условия (или очередь заявок выше цены условия)"
Как правило, брокеры рассчитывают все условные заявки на своей стороне. Исключение составляет подключение PlazaII и криптовалютные подключения. При этих подключениях программа ведет условные заявки на стороне клиента (на машине, внутри TSLab и отправляет лимитную заявку, когда условие сработало). Для некоторых криптовалютных подключений в настройках поставщика данных есть параметр "Усл.заявки средствами TSLab", который и определяет, кто следит за условной заявкой - программа или биржа. Если выключен, то биржа.
Например, "Проскальзывание = 0" означает: "Выставить лимитную заявку по цене Условия".
У брокеров такой вид может называться stoploss-limit.
Здесь нужно учесть, что в очереди заявок должна быть заявка с такой ценой, т.е. должен быть контрагент по этой цене, иначе заявка не исполнится и будет пропуск сигнала, программа выдаст сообщение "Агент Имя, требуется ручное вмешательство, пропущен сигнал входа/выхода из позиции номер".
Несколько слов о проскальзывании: Проскальзывание.
Проскальзывание это параметр условной заявки, отражающий отклонение от цены условия, в худшую для Вас сторону.
Если брокер видит, что заданного проскальзывания не хватает на выполнение данной операции, то он такую заявку отклоняет:
"Заявка номер может не исполнится, так как цена заявки такая-то, а на рынке цена такая-то"
Это предупреждение от программы, и в любой момент можем получить от брокера "Заявка номер Отклонена".
В лучшую (в Вашу сторону) проскальзывание не работает, и может быть исполнена даже по рынку, если цена уже убежала.
В массе брокеры это делают автоматически, такое исполнение является стандартным. В торговых настройках агнта есть параметр "Плохие заявки по рынку", по идее это касается брокера Финам и всех криптобирж, это именно включение такого режима, для тех, кто его не поддерживает. Тоесть вы говорите Купить по цене 100, а лучшая продажа в очереди заявок уже с ценой 90.
У некоторых брокеров существует параметр "Условные по рынку". Параметр доступен в программе в настройках поставщика данных. Если параметра нет, значит при данном подключении такой вид заявки не доступен.
Для выставления условной заявки, можно использовать следующие блоки:
"Открытие позиции, если больше". В торговых настройках агента должен быть ВЫключен флаг "Открытие лимитными заявками"
"Открытие позиции, если меньше". В торговых настройках агента должен быть ВЫключен флаг "Открытие лимитными заявками"
"Закрытие по стоп-лосс" с указанным проскальзыванием Проскальзывание
Закрытие по Тейк-профит" с указанным проскальзыванием Проскальзывание и без флага "Тейк-профит без проскальзывания" в торговых настройках управления агентами.
"Изменить по стоп-лосс"
"Изменить по тейк-профит"
Если торговля выполняется Агентами, то Дата действия условной заявки, в программе, автоматически выставляется на 2 дня, изменить параметр можно в торговых настройках агента.
Выставить срок действия заявки также можно в ручном режиме в окне Менеджер заявок (Торговля - Менеджер заявок). На каждом пересчете программа проверяет статус заявок. Если заявка не найдена, программа выставит новую заявку.
По умолчанию выставить одновременно две заявки на закрытие одной позиции нельзя. В программе это сделано намеренно и является защитой от двойного исполнения. Таким образом, если Вы выставляете две заявки с сигналами "Закрыть по стоп-лосс" и "Закрыть по тейк-профит" (с флагом "тейк-профит без проскальзывания"), программа выставит на пересчете только одну заявку, цена которой будет ближе к текущей цене на рынке. Но, в свойствах скрипта есть параметр "Множество сигналов выхода". Данный параметр позволяет отключить режим выставления только одной заявки на закрытие позиции. Работает и в лаборатории на истории и в при торговле.
При выключенном "Множество сигналов выхода" есть особенность очередности исполнения стопа и профита в самом редакторе (в лаборатории), если обе заявки попадают на один бар. В этом случае в лаборатории внутри одного бара исполняться будет тот сигнал, блок которого в редактор попал первым. Дополнительно по теме прочитайте статью Показывать номер блока.
У брокеров условные заявки могут называться:
stoploss - обычная условная заявка. Цена условия +- проскальзывание = Цене лимитной заявки.
stoploss-limit (не смотря на название, необходимо наличие контрагента, поэтому все же правильнее отнести к условным заявкам, а не лимитным) - условная заявка с Ценой условия = Цене лимитной заявки. То есть условная заявка с проскальзыванием 0.
stoploss-market - условная заявка при которой меняется тип заявки на заявку по рынку. По факту равноценна Условной заявке +- большое проскальзывание. Доступна у некоторых поставщиков.
takeprofit - изначально Закрытие позиции по тейк-профит это условная заявка, то есть только при достижении цены условия выставляется лимитная заявка с ценой ЦенаУсловия +- Проскальзывание.
Особый режим условных заявок. Дополнительно прочитайте статью Связанные заявки С некоторой особенностью работает в поставщике данных Transaq, без дополнительных тестов малым лотом не рекомендуется использовать настройку в этом поставщике. Связанная заявка - это способ выставления двух условных заявок одновременно на Закрытие одной позиции. Связанной заявкой становятся две заявки на закрытие одной позиции, когда одна из заявок "Закрытие позиции по тейк-профит" без установленной настройки "Тейк-профит без проскальзывания" в торговых настройках агента и одна заявка "Закрытие позиции по стоп-лосс".
В случае если опция выключена или недоступна (если брокер не поддерживает данный тип, например Алор) будет выставляться та заявка, цена которой ближе к текущей цене инструмента.
Опция Связанных заявок включается автоматически на следующих поставщиках данных:
При прямом подключении (Плаза2)
При работе на серверах через Quik (QuikLua и QuikDDE)
Криптовалютные биржи
ITinvest - SmartCOM
В некоторых случаях, по-мимо использования условных заявок, требуется включить настройку поддержки связанных заявок, в поставщике данных, справедливо для Transaq(Финам). В программе Данные - Подключения - Выделить поставщика данных - Настройки.
Важная особенность исполнения Связанных заявок
Название выхода из позиции в таблице сделок агента, при использовании данного типа заявки может не совпадать с лабораторией. Не рекомендуется использовать Имена выхода из позиции в редакторе, при создании скриптов, если используются связанные заявки.
В лаборатории, на истории, выход из позиции будет показан относительно того блока, который был добавлен редактор лаборатории первым, так как невозможно сказать, что сработало первым внутри бара (если были задеты обе цены от двух заявок на одном баре). При реальной торговле может браться любой комментарий или стопа или тейка, после исполнения заявки.
Чтобы отключить режим, достаточно поставить "Тейк-профит без проскальзывания" или выключить настройку в поставщике данных (для Transaq). Брокер воспринимает такую заявку как одну с двумя ценами. (За исключением, тех случаев, когда программа ведет связанную заявку самостоятельно и посылает только конечную лимитную заявку брокеру или на биржу) Если одно из условий цены срабатывает, происходят сделки, второе условие связанной заявки опускается и связанная заявка считается исполненной.
Окно "Позиции" является ключевым в оценке текущих позиций. Кратковременное расхождение (секунды) информации в окне "Позиции" и остальных окнах как правило не сигнализирует о возникновении особой ситуации. Постоянное расхождение информации в окне "Позиции" и окне "Управления агентами" сигнализирует о возникновении особой ситуации (ОС).
В окне "Позиции" 0 (нет открытых позиций), но агент ведет открытую позицию. Причина - ручное закрытие позиции. Для решения проблемы есть два варианта:
Остановить Агент. Задать агенту новое торговое имя. Управление агентами - кнопка АН -Торговое имя. Запустить агент.
Остановить Агент. В менеджере заявок выделить заявку, с помощью которой был произведен выход из позиции. Нажать кнопку Перенести. Подвязать заявку к этому агенту и наименованию сигнала. Запустить агент.
Агент сигнализирует о двойном выходе из позиции соответствующим сообщением в журнале сообщений. Автоматическое исполнение торговых команд, генерируемых агентом, останавливается. Причиной данной ситуации может являться сбой внутри программы, либо на сервере брокера. Для решения проблемы есть два варианта:
Необходимо остановить агент, скорректировать позицию к расчетной вручную. Изменить торговое имя и запустить торговлю заново. Торговля начнется "с чистого листа".
В Управлении агентами, выделив агента, нажать кнопку "
Появление системного сообщения "Нет свечи для привязки заявки номер №№№№" в журнале системных сообщений. Данное сообщение вызвано совершением сделки на незакрытой свече. Особой ситуацией данное сообщение не является и специальных действий не требует. Генерация данного сообщения прекратится по закрытию свечи. До закрытия свечи генерация торговых сигналов прекращается для избегания сбоев.
Сообщение: "Пропущен сигнал выхода "имя сигнала" из позиции для заявки №№№№". Требуется вмешательство через "Менеджер команд". Данное сообщение появляется в случае перерыва в работе агента, в течении которого должен был быть осуществлен выход из позиции. Для осуществления ручного выхода из позиции, в окне "Менеджер команд" необходимо выполнить команду "выполнить", находящуюся в контекстном меню, вызываемом по нажатию правой кнопки мыши на строке с соответствующей командой. Заявка станет активной, после этого дождаться исполнения или нажать кнопку "Выполнить по рынку".
Сообщение "Не могу создать заявку с нулевым количеством". Данное сообщение вызвано нехваткой средств, делегированных под управление агента и доступная сумма денег меньше цены одного лота/контракта по инструменту. Данное сообщение может означать прекращение поступления информации от брокера о состоянии счета(Например, при поломке конфигурации QuikDDE)
Особая ситуация пропуска открытия позиции вследствие перерыва в исполнении агента, либо при его начальном запуске. Данная ситуация не генерирует сообщений. В окне "Менеджера команд" генерируется команда на исполнение пропущенного сигнала с отключенным флагом автоматического исполнения. Пользователь должен принять самостоятельное решение об исполнении входа в позицию через контекстное меню данной команды, доступное по нажатию правой кнопки мыши, либо о его пропуске. В случае неисполнения вручную, команда будет удалена в момент наступления расчетного выхода из позиции или при окончании действия "Виртуальная позиция, баров" в Торговых настройках агента. До выхода из позиции, на графике будет отображаться наличие , моделирующее ведение ее агентом, цвет виртуальных позиций желтый.
Нулевое, либо существенно малое значение проскальзывания, часто осложняет исполнение заявки от частичного исполнения и до полного её неисполнения. Как результат заявка остается активной до следующего цикла пересчета агента и, как следствие, будет отменена (См. особую ситуацию №6). В случае частичного исполнения заявки позиция будет рассчитываться в объеме данного частичного исполнения.
При наличии настройки проскальзывания отличной от нулевой, цена входа в позицию может отличаться от расчетной. Стратегии ведения позиции, чувствительные к таким различиям, должны принимать во внимание такую возможность. Также, необходимо принять во внимание, что моделируемое в лаборатории и фактическое поведение агента могут отличаться вследствие возникновения такой разницы.
Стоп не сработал, хотя в "Менеджере команд" напротив заявки стоят галочки "вход", "разрешено", "выполнено". Это сообщение означает, что цена ниже или выше коридора торгов по фьючерсу(планки рынка). Такие заявки биржа не принимает. Необходимо дождаться расширения коридора или уменьшить проскальзывание или изменить скрипт таким образом, чтобы цены попадали в "планки" рынка.
Эта ситуация возникает, когда есть открытая позиция, но сигнала на закрытие нет (и в скрипте нет условных заявок на закрытие). В таком случае программа сама создает сигнал (без отметки разрешено), по которому позицию можно в любой момент закрыть вручную.
Означает, что с прошлого пересчета разница больше, чем на 1 бар. Это случается на коротких интервалах (секунды) в случае плохого соединения или задержек со стороны сервера. На тиковых интервалах сообщение не выдается. Сообщение может возникать при подключении к серверу, на загрузке пропущенных данных. Получение данных может зависеть от настроек брандмауэра и антивируса.(Настройка, отвечающая за проверку интернет данных в режиме реального времени).
Если в процессе торгов приходится вынуждено перезапускать программу после ее нештатного завершения, то, прежде, чем производить соединение с сервером, необходимо остановить все агенты в окне "Управление агентами", соединиться с сервером, и только после того, как программа подгрузит все потерянные исторические данные, запустить агенты. Если в управлении скриптами включено расписание подключения к поставщику данных, то заблаговременно убедитесь, что включена настройка "Блокировать заявки, сек". Перед запуском агентов, желательно открыть менеджер заявок и снять все заявки по инструментам, с которыми работают агенты. Менеджер заявок удобно открывать из окна "Свои заявки" или окна Котировки(котировки должны быть заблаговременно настроены), по правой кнопке из контекстного меню. В момент внештатного завершения программы(например при выключении из диспетчера задач windows) программа не может записать накопленный кеш из оперативной памяти в файлы, таким образом могут потеряться как кешевые данные торгов на рынке(тики), так и данные о своих сделках и заявках.
Для уменьшения потребления оперативной памяти рекомендуется устанавливать ограничение "МаксБаров" в свойствах скрипта при работе в агентах или с установленным флагом "Обновлять в режиме реал.времени"., в режиме Лаборатории