После того как вы провели оптимизацию скрипта, полученные результаты можно сохранить в качестве набора параметров (вкладка Параметры лаборатории). Эти наборы в дальнейшем можно использовать при настройке агентов. Например, если на базе вашего скрипта будут созданы несколько агентов, работающих с разными инструментами, вам будет проще выполнить настройку каждого из агентов.
Предположим, что оптимизация скрипта завершена и вы хотите сохранить результаты. Для этого нажмите на кнопку "Сохранить набор параметров" на вкладке Оптимизация либо на вкладке Параметры . Откроется окно для ввода названия набора. В нем вы можете указать, например, название тикера и дату создания набора.
Важно! В наборе будут сохранены данные из столбца Значение вкладки Оптимизация.
Вы также можете вручную заполнить значения оптимизируемых параметров. Тогда после ввода данных в столбце Значения необходимо Сохранить и Выполнить скрипт, для того чтобы выполнить пересчет скрипта и запомнить введенные параметры. Затем нажмите на кнопку "Сохранить набор параметров".
После того как набор параметров будет сохранен необходимо сохранить скрипт.
Обратите внимание! Вместе с набором параметров сохраняются и результаты оптимизации.
При нажатии на выбранный набор вы можете в соседней таблице увидеть результаты, полученные при оптимизации скрипта на заданном во время оптимизации отрезке времени и с заданным интервалом.
Откройте настройки Агента и отключите опции Исполнять входы и выходы сразу. Это необходимо для того, чтобы исключить случайный вход (выход) в позицию при первом запуске агента.
Запустите Агент.
Откройте окно Агента. Перейдите на вкладку Параметры в окне выбранного Агента.
На примере выше отмечены 2 таблицы:
Таблица набора параметров, сохраненных в скрипте, на основании которого был создан Агент.
Таблица набора параметров, сохраненных в Агенте. Сразу после создания нового Агента таблица будет пуста.
Обратите внимание! В таблице наборов параметров зеленой галкой отмечены выбранные (Текущие) наборы параметров.
В таблице наборов скрипта (1) зеленая галка всегда будет отображаться напротив набора, который был сохранен, как Текущий в скрипте. Тоесть если Вы выберите в Агенте один из наборов из этой таблицы, то Текущие параметры Агенты изменятся. После перезагрузки программы зеленая галка вновь будет отображаться напротив набора, который сохранен как Текущий в скрипте, хотя для Агента вы выбрали другой набор. При этом Текущие настройки Агента останутся прежнми - теми, которые вы выбрали до перезагрузки.
После того как текущие параметры будут заданы, Вы можете снова включить опции Исполнять входы и выходы сразу в настройках агента.
Обратите внимание! Если вы добавите в свой скрипт новые блоки, значение которых будет задаваться через окно Оптимизация, то при загрузке старых наборов параметров, в которые этот блок не вошел, для данного параметра будет установлено значение "по умолчанию" (например для числового значения может быть задано число 5)
Текущие параметры индикаторов из скрипта передаются во вновь запущенный агент автоматически. Если в скрипте сохранено несколько наборов параметров, то текущим в агенте устанавливается набор, выбранный текущим в скрипте.
При создании скрипта можно использовать блок Контрольная панель в редакторе, в котором параметры можно изменять непосредственно в самом агенте. Если контрольная панель не была создана, то параметр можно изменить на вкладке Параметры, в агенте. В этом случае, после изменения параметров, в агенте, из Контрольной панели или на вкладке Параметров, нужно сохранить агент по кнопке Сохранить.
Если вы хотите сразу применить сохраненный набор параметров к скрипту и использовать их как Текущий набор, то перейдите на вкладку Параметры. Выделите нужный набор и нажмите на кнопку Применить .
Выберите один из наборов параметров в таблице 1. Нажмите на кнопку Применить . Параметры, полученные во время оптимизации скрипта будут установлены как Текущие для Агента.
В таблице 2 Вы можете создать отдельные каталоги для хранения наборов параметров. Для этого используйте кнопку .
Создадим новый каталог Параметры Агента (не обязательный пункт, для удобства разделения наборов). Выберите строку Каталог в таблице 2 и нажмите на кнопку . Введите название нового каталога и нажмите ОК.
Напомним, что на предыдущем этапе Вы установили Текущими параметрами Агента набор параметров из таблицы 1. Далее нам необходимо сохранить Текущий набор параметров в таблицу 2. Выберите созданный каталог Параметры Агента и нажмите на кнопку Создать набор из текущих параметров . Введите название нового набора параметров и нажмите ОК. Выделите созданный набор и нажмите на кнопку Применить . Выбранный набор параметров буден задан как Текущий в Агенте.
Перед запуском Агента для торговли на рынке рекомендуем выполнить настройку скрипта, на основании которого создан Агент
Скрипт желательно настроить таким образом, чтобы агент пересчитывался всегда с одинаковым количеством баров. Стоит учитывать количество загружаемых в скрипт баров: чем их меньше, тем быстрее рассчитывается скрипт. Но к выбору нужного значения стоит подойти внимательно. В агенте всегда должно быть загружено как минимум два последних сигнала - один вход и один выход, если в скрипте используются данные с баров входов и выходов. Например, если скрипт для расчета стоп-лосс использует цену бара входа в позицию.
Количество баров, необходимые индикаторам рассчитываются по формуле:
ПериодСжатия * ПериодЕМА * 5
Пример:
Допустим, в скрипте используется:
Сжатие = 60
период EMA, взятый от Закрытия сжатого бара = 100
Тогда количество баров, необходимое для полного расчета индикатора:
60 * 100 * 5 = 30 000
Если сжатие не используется, то:
1 * 100 * 5 = 500
Это то количество баров, которое можно поставить в свойствах скрипта в графе "МаксБаров".
При такой настройке, если на вкладке Лог агента количество баров продолжает увеличиваться, то можно попробовать выполнить один из следующих пунктов:
догрузить недостающую историю через дополнительную настройку +ДобавитьИнструмент в Общих настройках Агента
подождать, когда количество баров станет одинаковым при пересчетах, т.е. накопится необходимое минимальное значение баров для Полного расчета индикаторов
прогрузить историю через простой График (Вид - График). Выберите инструмент в свойствах Графика. Выберите свойство "Дата перезагрузки", сохраните и закройте свойства Графика. Нажмите правую кнопку на Графике и выберите пункт контекстного меню - Перезагрузить данные. Перед последним действием настоятельно рекомендуем скопировать данные из сохраненного кеша данных инструмента (Инструменты - Папка с кешами). Сохраните папки НазваниеПоставщикаCahce и CahceTrade. При недостатке данных для полного расчета индикаторов, в эти папки можно положить данные. После перезагрузки и подключения, программа их увидит. Данные можно попросить на форуме или у друга, кто торгует инструмент достаточно давно.
Опция в агенте включается автоматически.
Опция "ДатаК" в агенте автоматически отключается.
Параметр "Торговать с бар", управляет пропуском определенного числа баров до генерации первого торгового сигнала, необходимого для стабилизации индикаторов.
Параметр применим только для скриптов, написанных в визуальном редакторе программы. При использовании скриптов, созданных во внешней среде, необходимо проверять номер свечи самостоятельно.
Если в данный момент, при запуске в агенте недостаточно баров для расчета индикаторов, то в свойствах нужно установить параметр "Торговать с бар". В этом случае агент начнет торговать только когда накопит минимально необходимое количество баров для расчета индикаторов.
В свойствах скрипта снимите флаг "Отключить генерацию позиций", если стоит. Его необходимо ставить только если скрипт написан на C# и управление позициями осуществляется из внешнего скрипта.
Мы настоятельно не рекомендуем торговать, когда на счете нет подушки безопасности в виде сободных средств. У любой сверхсистемы есть просадки. И при входе в рынок на счету всегда должно быть свободных средств(или средств, акций, которые принимаются в качестве маржи) Ниже приводится переписка с клиентом о возможной настройке работы агентов при нехватке свободных средств.
== User Торгуют 2 агента на разных инструментах. Бывает сигналы совпадают по времени и тогда не хватает ГО. Агент которому не хватило ГО пишет потом что нехватка по лимитам, пропущен сигнал и дальше не торгует. Мне нужно, чтобы он дальше торговал без моего вмешательства, а пропущенный вод забыл. Что нужно поменять в настройках? (у меня автозакрытие стоит 1, виртуальная позиция 0) ==
Support не очень понятно, как он будет торговать, если денег нет. Но, в принципе в автооткрытие и автозакрытие можете поставить по 100 баров , в этом случае агент будет пытаться выставить заявки в течении 100 баров. Как при этом могут повести себя биржа и брокер, лучше уточнять у них, спам они не любят. ==
User Агенты краткосрочные, время в позиции 5-10 минут, если торгуют по очереди то ГО хватает, но бывает сигналы одновременно поступают. Если сигнал пропущен то мне не нужно автоотркытие 100 баров, нужно чтобы он этот сигнал забыл и ждал следующий. PS автозарытие стоит 1 бар т.к. бывает заявка на продажу не срабатывает лимитка и тогда он по рынку выходит. Автооткрытия нет, лучше дождаться нового сигнала пропущенный вход всегда хуже.
== Support При использовании блоков "По рынку" можно поставить настройку "По рынку с фикс.ценой". Т.е. выставлять заявку не по рынку, где требуется большая маржа биржей, а лимитными заявками. Флаг "Игнорировать сигнал выход не на последнем баре" для выхода из позиции. то есть настройки будут такие: автооткрытие 1 виртуальная позиция 2 Виртуальная позиция, баров для входа в позицю. соответственно, если вход пропущен, то на след баре будет пробовать вход по рынку(или лимткой при включенном флаге "фикс ценой"), а через бар забудет этот сигнал.
Какой тикер отображается в таблице агентов в колонке тикер? Если в агенте несколько источников, то для управления агентами они все равные, поэтому выводится первый в списке. В не зависимости от того, какой источник отображается в данный момент, на работе агента это никак не должно сказываться.
Если у конкретного источника сама меняется бумага, то это повод обратиться в службу поддержки https://www.tslab.pro/support
При первом запуске агент берет ту историю, которая уже накоплена в кешевых данных. Ограничение "ДатаОт" в свойствах скрипта распространяется на агент
В программе установить ограничение "ДатаОт" можно только в настройках скрипта. У нас в планах сделать эту дату доступной в настройках агента.
Специальная загрузка истории в агент не требуется. Однако, бывают ситуации, когда новый инструмент загружен на график (Вид-График) но в агенте история не появилась. Просто перезапустите агент (стоп/старт) в окне Агенты.
Быстрый вызов нужного инструмента, с нужным для агента таймфреймом: Агенты | кнопка График, откроется график инструмента.
При создании агента, а так же по кнопке быстрого доступа в виде списка, открывается окно настроек агента. В данном окне выбирается инструмент. Там же при помощи кнопки "+ Добавить инструмент" можно подгрузить дополнительный инструмент, в котором есть глубокая история, например, свой инструмент из поставщика кешевых данных или поставщика текстовых данных:
Не рекомендуется осуществлять торговлю с двух компьютеров на одном счете.
Когда выставляется заявка, программа генерирует номер, передаваемый брокеру. Брокер возвращает этот номер вместе с номером заявки.
Таким образом на двух компьютерах может быть сгенерирован одинаковый номер и по этому номеру в агент может быть привязана заявка с другого компьютера. В том числе другой инструмент.
Два источника. В обоих один и тот же инструмент. Два субсчета. Вы хотите, чтобы агент выставлял заявки по одному инструменту с двух разных субсчетов. Такая конфигурация не поддерживается.
Все заявки в данном случае будут выставляться на один субсчет (по первому источнику), а не на два.
Если у Вас ДВА СУБСЧЕТА, то работа на них ОДНИМ и тем же ИНСТРУМЕНТОМ должна осуществляться из разных агентов.
Если агенту на основании этого скрипта указать два одинаковых инструмента, но с разных субсчетов, то он выведет в лог одинаковое значение баланса. Если инструменты будут разные, то баланс по счету покажет верный. То же самое с PortfolioName
Вы выбрали 50 акций/фьючерсов для торговли. Вам нужно, чтобы покупалась та акция, на которой выполнилось условие, и при определенных условиях продавалась нужная акция. Как лучше сделать, для меньшего расходования памяти и ресурсов компьютера?
Возможны варианты:
Сделать 50 агентов и в каждом агенте отдельная акция/фьючерс.
Сделать агента(скрипт) в котором будет, например, 5 источников (т.е. 5 акций). Агент будет их отслеживать, и для каждого источника свой алгоритм. Таких агентов будет 10, чтобы в сумме следить за 50 акциями
Сделать один агент, в котором будут торговаться все эти инструменты.
Все три варианта имеют право на жизнь.
Вариант №1.
При данном варианте нагрузка сильно ляжет на процессор. Возможно, что утром нужно будет запускать группы агентов вручную, по очереди. Так как мы еще не создали поддержку постепенного включения агентов. Если 50 агентов запустить одновременно, как это сейчас программа делает, то каким-то агентам может не хватить процессорных потоков. Была такая рекомендация, что для одного агента необходимо иметь одно свободное ядро (на самом деле, это утрировано, сейчас почти все процессоры имеют многопоточность(и гипертрейдинг). Рекомендация в документации дана как раз на такой случай, (одновременный запуск десятка и более агентов). Но программа TSLab полностью поддерживает многопоточность и многозадачность. Чем больше потоков у процессора, тем лучше.
Вариант №2,3.
Если рассматривать данный вариант при ограниченных ресурсах, то он более предпочтителен, но у данного варианта есть своя особенность.
Особенность заключается в построении дополнительных баров (фейковые бары) на неликвидных инструментах. Т.е. если в скрипте, например, есть ликвидный инструмент, у которого не бывает пропусков минутных баров и какой-нибудь малоликвидный инструмент, торгующийся раз в день, то программа заполнит на неликвидном инструменте все недостающие минутки фейковыми барами. По этой причине индикаторы могут работать не так, как если бы они работали в скрипте с одним неликвидным инструментом. С точки зрения оперативной памяти, при одинаковой настройке в свойствах МаксБаров и/или МаксДней и/или ДатаОт, оперативная память будет потреблена одинаково.
Каждый агент в своем потоке (ядра процессора имеют потоки).
Порядок пересчета не регламентирован, если ядер много - исполнение идет параллельно.
Скорее всего, в свойствах скрипта выбран пересчет Сделка или Покупка/Продажа. Агент торгует на не закрытом баре.
В свойствах скрипта необходимо поставить другой Интервал пересчета.
В большинстве случаев желательно использовать Интервал или Интервал+перв.сделка
Интервал - пересчет происходит по закрытию бара. Когда пришла пачка тиков, в которой есть тик со временем закрытия бара.
Интервал+перв.сделка - пересчет по открытию бара. Где "Сделка" это открытие бара. Когда пришла пачка тиков, в которой есть тик со временем начала текущего бара.
Прочтите статью: Виртуальная позиция Возможные варианты:
В настройках скрипта выбран интервал пересчета - "Сделка", по этому работа идет на не закрытой свече. Соответственно, виртуальная позиция появляется и исчезает. Выберите интервал пересчета "Интервал". При этом необходимо помнить, что тики биржа присылает пачками, размер пачек зависит от времени и инструмента. Например: Фьючерс РТС от 1 тика на вечерке, до 2000 при открытии торгов и выходе новостей.
Не стоят флаги автоматической торговли (Автооткрытие / Автозакрытие) в торговых настройках агента (Главное меню - Торговля - Агенты - значок шестеренки на выбранном агенте). Если флаги стоят, но скрипт все равно не торгует. В окне Менеджер команд появляются команды с отключенным флагом разрешено, то скорее всего скрипт пытается выставить команды "задним числом". Иными словами, команды появляются для прошедших баров, хотя в предыдущем расчете (когда этот бар был последний) команды не было. Ниже приведены случаи, которые уже встречались:
Используются неверно сделанные индикаторы, которые меняют свои значения в истории при появлении новых данных.
При использовании API функции открытия/закрытия позиции вызываются для i-го бара, а не i+1 (заглядывание в будущее)
Использование метода декомпресии 2.
При использовании API функции неправильно прописан торговый цикл (не идет расчет для последнего бара). Например, "i < barsCount-1".
Не установлен патч регионов и времени
Проверить довольно легко. Видим, что в лаборатории есть вход, а в реале он пропущен. В лаборатории ставим ограничение "Дата к" равным свече открытия пропущенного входа.
Если вход на этой свече исчез (она будет последней на графике), значит со скриптом(или индикаторами) что-то не так.
Желательно делать такую проверку до начала торгов.
Опасные индикаторы: ZigZag, Фрактал, тренд рисующие индикаторы, не имеющие историю изменения. И другие индикаторы, при создании которых были допущены ошибки.
Какие из списка наборов параметров являются текущими? В лаборатории, в скрипте, Вы создаете несколько наборов параметров. Делается это в скрипте, во вкладке Оптимизация.
Теперь, или в самой лаборатории, или в агенте во вкладке Параметры, можно выбрать один из наборов и загрузить его.
Напротив выбранных параметров появится "галка". Однако, если в агенте или в скрипте Вы будете изменять параметры, например, на контрольной панели. То эти параметры уже не будут соответствовать загруженному набору и галка пропадет.