#80270 - Wed Nov 09 2016 12:54 PM
Функционирование TSLab и оптимальная реализация
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Предпослыки тут. Попробуем начать с пары вопросов. 1. ТСЛАБ2 запущен в боевом режиме уже чуть больше недели на VPS Финам. Каждый день я его закрываю и запускаю снова (вне торгового времени московской биржи). Торговля ведется только на MOEX. С каждым из этих дней я добавлял по одному агенту. Всего сейчас работает 16 агентов. В день, когда агентов стало 15, появилась ошибка "Fatal Error" (см. скриншот). Например, сейчас процесс TSLab это 1458 дескрипторов и 40 потоков. Я примерно понимаю, из-за чего возникла эта ошибка. Понимаю, что дело не в тслабе. Возможно ли настройками тслаба (не ухудшая производительности) сделать так, чтобы такой ошибки больше не возникло? Запущена 32-х битная версия тслаба. По ресурсам запущенный тслаб использует около 250 МБ оперативки, свободной оперативки еще около 600 МБ. Процессор не бывает загружен более, чем на 50% в течение нескольких секунд. В основном 5% загрузка. 2. Если у меня запущены 16 агентов, в каждом из которых неторгуемым источником (1-минутки) являются об.акции Сбербанка, то: 2.1. Программа 16 раз делает запрос gethistory (подключение через HFTransaq) или 1 раз? 2.2. Запрашиваются именно исторические минутки или делается подписка на тики и из них формируются минутки? 2.3. Как определяется, что текущий минутный бар завершен? 2.3.1. По тику, датированному новой минутой? 2.3.2. По новой исторической минуте, которой еще не было? 2.3.3. По локальному времени? 2.3.4. Делается ли синхронизация с временем торгового сервера брокера?
Attachments
faterror.png (242 downloads)Description: Fatal Error
Отредактировано Sergey Pavlov (Thu Nov 10 2016 07:38 AM)
|
Наверх
|
|
|
|
#80284 - Thu Nov 10 2016 11:11 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
TSLab
Carpal Tunnel
Registered: Sun Oct 17 2010
Записи: 8139
|
1. Означает, что очередь в потоке рисования windows забилась. В данном случае - совет выключить отрисовку нескольких агентов. Т.е. пусть в темную работают, так как vps не справляется. Здесь нужно понимать еще, что рисованием программа занимается в последний момент, после того, как все агенты рассчитаны, собственно они работают кодом, а не отрисованным графиком. 2.1 Программа 2.0 использует один кеш. В 1.2 много запросов 2.2 От брокера Приходят "Сделки по инструментам" из них и строятся бары 2.3. В пачке с тиками приходит тик, время которого соответствует новому бару. Новый бар открывается. 2.3.1 Да 2.3.2 не очень понял вопроса, но видимо да, этой минуты еще нет, пришел тик, бар начал рисоваться 2.3.3 Вообще никак не используется в программе, если есть подключение к серверу брокера. Если нет подключения к брокеру, то да, используется локальное время, но только как просто отображение локального времени. Так как тиков нет, рисовать нечего. 2.3.4 Она не нужна. Время берется из тиков, из поля TIME Но при этом установленный патч регионов и времени windows от 12 апреля 2016 года обязателен. Работа с историческими данными: http://forum.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=60522#Post60522
Отредактировано ViL (Thu Nov 10 2016 11:17 AM)
|
Наверх
|
|
|
|
#80287 - Thu Nov 10 2016 12:23 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: ViL]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
ViL, спасибо!
Правильно ли я понимаю, что, если в запущенном тслабе на VPS открыты всего 2 вкладки (менеджер подключений и управление агентами), то подобной фатальной ошибки не будет?
Следующая пара вопросов:
1. Какие отличия по производительности и т.д. между запущенной 32-х и 64-х разрядными версиями тслаба? Сейчас у меня работает 32-х (воспользовался ярлычком по умолчанию). Стоит ли мне всё перенести в 64-битную версию?
2. Сейчас в скриптах у меня стоит ограничение в 3000 макс. баров. Интервал пересчета - 1 минута. Торговать с - стоит 0. В логах после вычисления каждого агента указано "1843 баров" для каждого из 19 агентов (весь день). При этом реально каждому агенту для пересчета при новой минуте требуется кому-то около 500, кому-то 700, а кому-то около 1300 баров. 2.1. Каждую минуту в каждом агенте происходит пересчет 3000 баров? 2.2. Что значит число 1843, отображаемое в логах? 2.3. Как исполняются 19 запущенных агентов? В одном потоке последовательно или параллельно? 2.4. Есть ли приоритет в выполнении агентов? Можно ли его задать?
|
Наверх
|
|
|
|
#80290 - Thu Nov 10 2016 03:11 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
TSLab
Carpal Tunnel
Registered: Sun Oct 17 2010
Записи: 8139
|
Вероятней всего да, если не будет что рисовать, то именно данной ошибки не будет. 1. Если брокер позволяет подключаться в 64 битном режиме, то там переносить ничего не нужно. Вы просто запускаете 64 битную версию и работаете, конфигурация загрузится та же. Если не используете сторонних индикаторов, написанных под 32 битный cpu то и ошибок никаких не будет 2.1 Да, все бары пересчитываются. Но у Вас не 3000 баров, а 1843 и видимо с каждым пересчетом прибавляется один бар. Либо возможно у Вас стоит ограничение МаксДней 2.2 Это то кол-во баров которое реально загружено в агенты 2.3 зависит от кол-ва ядер и поддержки процессором гипертрейдинга. Очень грубо: Если потоков у процессора 16 или больше, то все в параллель. Если меньше, то очередь. 2.4 Нет. Живая очередь. У кого пришел первый тик с новым баром, тот и прав.
|
Наверх
|
|
|
|
#80292 - Thu Nov 10 2016 05:01 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: ViL]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Да, вы правы. С каждым пересчетом прибавляется. Прошло около 2 часов и сейчас вместо числа 1843 уже число 1977. Макс дней стоит 0, ограничения от и до сняты. Только макс баров=3000. Торговать с нуля.
Тогда пара уточняющих вопросов по этому поводу: 1. Правильно ли я понимаю, что могу ускорить вычисления своих агентов, грубо говоря, в 1900 раз, если заставить тслаб пересчитывать только новые бары? 2. Чему равно число 1843, а теперь уже 1977? Т.е. не каков смысл этого числа, а как определяется кол-во баров, которое загружено в агенты и по которым каждый раз при новом баре ведется пересчет?
|
Наверх
|
|
|
|
#80304 - Fri Nov 11 2016 07:19 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: ViL]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
1. Всё-таки непонятно, как это работает. Под конец дня баров стало снова 1844. Открыв один из агентов (график), я вижу, что есть минутные свечки за 7 (с 14:00 по 18:39) и за 8,9,10 (с 10:00 по 18:39) ноября. Итого минутных баров не менее 500+600+600+600=2300 на конец вчерашнего дня, а в логах: "10.11.2016 23:49:00 127 Агент 'bal_sht': Скрипт выполнен успешно за 26мс. (1844 баров, время 10.11.2016 18:39:00)"
2. Теперь по производительности. Если внутри метода Execute я тупо пропущу в цикле for все вычисления баров, номер которых менее source.Bars.Count-1, то, фактически, скорость пересчета агента при каждой новой минутной свече увеличится порядка в 1000 раз?
3. Еще одна "непонятка" с выставлением заявок. У меня во всех скриптах исполнение делается блоками открытия и закрытия позиции по рынку. В торговых настройках агента я указыванию проскальзывание +3 шага цены и ставлю галочку "По рынку с фикс. ценой". В подсказке указано, что в этом случае выставляется лимитная заявка по цене открытия бара с сигналом плюс-минус проскальзывание. 3.1. Что такое цена открытия бара? 3.2. Какой бар является баром с сигналом? 3.3. Пример. Вчера один из агентов в 18:28:03 (по квику) выставляет заявку на продажу SRZ6 по цене 15558. 3.3.1. Первый тик этой минуты как по акции, так и по фьючерсу датирован нулевой секундой. В целом с чем я сейчас бьюсь....чтобы тслаб ставил заявку в эту же нулевую секунду. 3.3.2. Но непонятно вот что. Тик закрытия 27 минуты равен 15561, а тик открытия равен 15564. Проверил аналогично по другим заявкам. Тслаб ставит заявку по фикс цене, привязываясь не к цене открытия, а к цене закрытия завершенного бара, что не совсем желательно. 3.3.3. Какими манипуляциями (в будущем кол-во агентов у меня будет порядка 100) добиться того, чтобы тслаб ставил заявки в ту же секунду, что и первый тик? Сейчас задержки от 1 до 3 секунд. Также, каким образом заставить тслаб ставить эту лимитную заявку именно по открытию свечи плюс-минус проскальзывание, как указано в подсказке в торговых настройках?
Отредактировано Sergey Pavlov (Fri Nov 11 2016 07:42 AM)
|
Наверх
|
|
|
|
#80306 - Fri Nov 11 2016 11:34 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
2) в 1000 раз это вряд ли но ускориться можно. 33.3) он всегда ставит в ту же секунду. Тормоза и ваши задержки очевидно связаны с вдс который тормоз.
_________________________
__
|
Наверх
|
|
|
|
#80307 - Fri Nov 11 2016 12:03 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: ra81]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Еще раз. На одной и той же VPS запущены два приложения (самописное и тслаб). Оба реализуют одну и ту же торговую логику. Оба работают через HFTransaq. Самописное не просто ставит заявку в первую секунду, а почти всегда делает open свечи по лучшему биду-аску. Тслаб выставляет заявку спустя 1-2-3 секунды (когда как). Либо Тслаб тормозит (вся эта возня с агентами, пересчеты одного и того же по многу раз), либо я как-то неоптимально реализовал алгоритм.
|
Наверх
|
|
|
|
#80308 - Fri Nov 11 2016 12:40 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Sun Nov 21 2010
Записи: 428
|
Вы хотите чтобы Вас убедили в том что Вы и так знаете? Да, на обе части Вашего вопроса. ТСЛаб не слишком эффективен на малых таймфреймах; реализацию алгоритма, почти наверняка, можно улучшить.
_________________________
Не пишите мне! Никому ничего делать не буду.
|
Наверх
|
|
|
|
#80310 - Fri Nov 11 2016 03:23 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
Еще раз. На одной и той же VPS запущены два приложения (самописное и тслаб). Оба реализуют одну и ту же торговую логику. Оба работают через HFTransaq. Самописное не просто ставит заявку в первую секунду, а почти всегда делает open свечи по лучшему биду-аску. Тслаб выставляет заявку спустя 1-2-3 секунды (когда как). Либо Тслаб тормозит (вся эта возня с агентами, пересчеты одного и того же по многу раз), либо я как-то неоптимально реализовал алгоритм. да докажите всем что на вашем впс тслаб тормозит. тут все знают что есть куча впс где тслаб просто умирает. вы не хотите видимо читать это. и умирает он потому что такие впс. поставьте на железо и такого не будет.
_________________________
__
|
Наверх
|
|
|
|
#80366 - Thu Nov 17 2016 01:41 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: ra81]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
В принципе, Вам уже всё ответили.
Подчеркну пару моментов: 1. Если есть возможность запускать 64-бита -- обязательно запускайте в этом режиме. 2. Все Ваши агенты оживают одновременно на границе минутной свечи. Это очевидно создаёт узкое место. Поэтому чем больше ядер -- тем лучше. 3. Чтобы определить факт того, что начался новый бар ТСЛаб использует новый пришедший трейд. Если трейда нет 5 секунд -- то новый бар начнется на 5 секунд позже ожидаемого. Возможно, от этого можно уйти поигравшись с настройками скрипта. Например, запускать пересчет не только по трейдам, но и по котировкам.
Теперь насчет оптимизации индикаторов. Если это какие-то тривиальные вычисления типа СМА, сделать там скорее всего ничего нельзя. Но если это како-то самописный тяжелый индикатор, можно попытаться его ускорить, избегая повторного расчета на старых барах.
И ещё один вариант оптимизации можно получить, если все агенты используют один и тот же индикатор с одними и теми же параметрами. Тогда этот индикатор можно вычислять отдельно, а в самих торговых агентах использовать готовые значения. Мы так считаем историческую волатильность для опционов. Взаимодействие организуется через Глобальный Кеш.
|
Наверх
|
|
|
|
#80378 - Fri Nov 18 2016 06:56 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
На общие вопросы я и сам в состоянии дать общие ответы. На узкие вопросы о нюансах ответов, к сожалению, я не получил, а таких узких вопросов у меня по тслабу еще 150 штук. Видимо, придется методом тыка и догадок разбираться.
Кстати, о производительности. Аналогичные скрипты (один в один без изменений) запустил в пером тслабе. Итого запущено параллельно на одной и той же машине два тслаба: 1. 32-битный второй тслаб, который шлет заявки через HFTransaq через Finam 2. 32-битный первый тслаб, который шлет заявки через через обычный транзак через Whotrades
Первый тслаб ставит заявки на биржу быстрее второго в среднем на 1 секунду (разница по мкс), не смотря на то, что второй тслаб это в 10 раз большая частота транзакций и т.д.
Мне это видится странным. Буду всё оптимизировать и изучать функционирование тслаба, через месяц приму решение, продолжать ли им пользоваться. Пока всё нравится в целом:) Чисто пользовательски считаю, что тслаб - классная штука:)
|
Наверх
|
|
|
|
#80380 - Fri Nov 18 2016 11:46 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Пока всё нравится в целом:) Чисто пользовательски считаю, что тслаб - классная штука:) Спасибо! Очень рад. Мне, кстати, тоже нравится. Глюков бы чуть поменьше... На узкие вопросы о нюансах ответов, к сожалению, я не получил, а таких узких вопросов у меня по тслабу еще 150 штук. Видимо, придется методом тыка и догадок разбираться. Мне показалось, что в предыдущих ответах коллеги Вам достаточно исчерпывающе ответили. Нет? Давайте ещё один подход сделаем. Пуляйте сюда наболевшее помаленьку (в порядке критичности для Вас). Кстати, о производительности. Аналогичные скрипты (один в один без изменений) запустил в первом тслабе. Итого запущено параллельно на одной и той же машине два тслаба: 1. 32-битный второй тслаб, который шлет заявки через HFTransaq через Finam 2. 32-битный первый тслаб, который шлет заявки через через обычный транзак через Whotrades
Первый тслаб ставит заявки на биржу быстрее второго в среднем на 1 секунду (разница по мкс), не смотря на то, что второй тслаб это в 10 раз большая частота транзакций и т.д.
Мне это видится странным.
Малость запутался кто у вас кто... Может, скриншот запостите?.. Правильно понял Вас: " Версия 1.2 через WhoTrades сильно быстрее версии 2.0 через HFTTransaq"? PS Если Вам так критична скорость, то, возможно, имеет смысл подумать о Плазе?.. Например, выставление заявок через обычный Транзак (не HFT) в среднем занимает 200-300 мс. В плохие дни -- 500 мс. А через Плазу - не более 50 мс. В среднем около 20-25 мс. (Это полный раунд-трип до получения подтверждения в ТСЛаб.)
|
Наверх
|
|
|
|
#80381 - Fri Nov 18 2016 12:31 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Да, верно: Версия 1.2 через WhoTrades сильно быстрее версии 2.0 через HFTTransaq. Мне всё критично, поскольку суммы немаленькие. На скриншоте видно, что заявки через первый тслаб ставятся порядка на 1 секунду быстрее, чем через второй. Работает один и тот же скрипт.
Например, сейчас меня беспокоит то, что я не понимаю, как работает тслаб. Раньше поведение у второго наблюдалось такое: выставлена лимитка, которая живет 5 минут. Через 5 минут исполняется по рынку (проработало на сотнях сделок). Последние несколько дней поведение изменилось (я не менял скрипт и торговые настройки): ставится лимитка...через 5 минут она снимается и перевыставляется лимиткой в то же место, т.е., грубо говоря, теряет место в очереди:).
Еще из наболевших непоняток. Вчера в первом тслабе "слетела" часть агентов и перестала сопровождать позицию. Суть проблемки: в скрипте есть два истоника: один акции Сбера, второй - фьючерс на него. Торги ведутся только по фьючерсу в этих скриптах. Запустил всего 17 агентов. У каждого агента в левой колонке тикером значится SRZ6... всё работает.. проходит несколько часов. Заглядываю в тслаб... в случайном порядке у 8 агентов в первой колонке значится SBER и в колонке позиция стоит 0. Сделки не делаются....... Магия.... Делаю так. Удаляю этих агентов и один в один с этими же именами заново из тех же скриптов запускаю эти 8 агентов.... По текущий момент прошло 2 часа, всё торгуется, так и осталось в левой колонке у всех SRZ6. При этом, когда я запустил их повторно, пересоздав, они вспомнили про свою позицию и продолжили её сопровождать, что приятно. Но неприятно...а вдруг эта "фигня" повторится еще раз?
Поэтому для меня важно понять, как работает ТСЛАБ. Как ведутся расчеты, почему заявки привязываются не к open, а к close и пр и пр.
Вопросы, которые остались пока без ответа: 1. Какие отличия по производительности и т.д. между запущенной 32-х и 64-х разрядными версиями тслаба? 2. По какой формуле определяется кол-во баров, по которым с каждым тактом делаются пересчеты? 3. Какой бар считается баром с сигналом?
Дополнительный вопросик: Вот у меня есть 17 агентов, запрограммированных по одинаковой логике копипастой. Различия только в базовой статистике, по которой решения принимаются. 15 агентов каждую минуту пересчитываются по 1 разу. 2 агента почему-то каждую минуту по 2 раза пересчитываются. Зачем и с чем это может быть связано?
Attachments
orders.png (195 downloads)Description: orders
|
Наверх
|
|
|
|
#80382 - Fri Nov 18 2016 04:34 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
> "1. Какие отличия по производительности и т.д. между запущенной 32-х и 64-х разрядными версиями тслаба?"
По производительности разницы не должно быть. Выигрыш в максимальном доступном объёме памяти. Там, где 32-битная начнет испытывать траблы из-за памяти, 64-битная просто будет работать дальше.
Если так критично исполнение -- тогда в перспективе нужна Плаза всё равно.
Остальные вопросы передал коллегам. Надеюсь, присоединятся и всё расскажут грамотно.
|
Наверх
|
|
|
|
#80395 - Mon Nov 21 2016 10:02 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
На скриншоте видно, что заявки через первый тслаб ставятся порядка на 1 секунду быстрее, чем через второй. Работает один и тот же скрипт. Вы могли бы подключить оба ТСЛаб к одному и тому же серверу? То есть сравнить в чистом виде производительность ТСЛаб 1.2 с 2.0 когда оба подключены через WhoTrades и когда оба подключены через HFT Transaq? Нам кажется естественным, что HFT Transaq должен вести себя быстрее или также по сравнению с WhoTrades. Но если аналогичная разница в скорости на 1 секунду будет наблюдаться именно из-за разницы версий ТСЛаб, то это значит мы где-то потеряли кусочек производительности... По крайней мере, это будет пища для размышлений.
|
Наверх
|
|
|
|
#80400 - Mon Nov 21 2016 12:05 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Насколько я понимаю, это невозможно, поскольку первый тслаб (whotrades) работает только через обычный финамовский transaq connector и только через него. Второй тслаб работает через высокоскоростной transaq connector, в котором в 10 раз выше скорость отправки транзакций...по этой идее всё должно быть оперативнее именно во втором тслабе.
Однако, вывод о том, что потеряна производительность именно во второй версии в сравнении с первой, делать нельзя, поскольку мне же, например, неизвестно, насколько загружены два этих разных сервера, с которыми идет коннект. Но как феномен я на это не могу не обратить внимание:)
Я буду в ближайшее время оптимизировать скрипты, чтобы в них всё обсчитывалось не более чем за 5 мс. Чтобы фактор расчетов фактически убрать из задержки выставления заявки. Сейчас в среднем каждый скрипт пересчитывается за 50 мс. Потом еще раз буду сравнивать.
Еще раз прикладываю сегодняшние расхождения. Слева время выставления заявок через первый тслаб (обычный транзак Whotrades), справа - через второй тслаб (HFTransaq финама). Работают одни и те же скрипты. Задержка не в пользу второго тслаба от 1 до 1.5 секунд.
Attachments
orders2.png (181 downloads)
|
Наверх
|
|
|
|
#80401 - Mon Nov 21 2016 12:41 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Насколько я понимаю, это невозможно, поскольку первый тслаб (whotrades) работает только через обычный финамовский transaq connector и только через него. Второй тслаб работает через высокоскоростной transaq connector, в котором в 10 раз выше скорость отправки транзакций...по этой идее всё должно быть оперативнее именно во втором тслабе. Технически, вы можете создать второй коннектор внутри ТСЛаб 2.0 для WhoTrades и торговать их одновременно. Возможно, даже ключ из 1.2 подойдет (не уверен на 100%). Еще раз прикладываю сегодняшние расхождения. Слева время выставления заявок через первый тслаб (обычный транзак Whotrades), справа - через второй тслаб (HFTransaq финама). Работают одни и те же скрипты. Задержка не в пользу второго тслаба от 1 до 1.5 секунд. Чисто теоретически (как рабочая идея), эти два сервера могут быть не синхронизированы по времени?.. Наблюдать эти отличия (если они есть) можно наверное на графике баров в таймфрейме S1... У меня даже где-то был скрипт, который этим сравнением занимается...
|
Наверх
|
|
|
|
#80402 - Mon Nov 21 2016 01:06 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Технически, вы можете создать второй коннектор внутри ТСЛаб 2.0 для WhoTrades и торговать их одновременно. Возможно, даже ключ из 1.2 подойдет (не уверен на 100%).
Так я и хотел сделать изначально, но ключ к Whotrades, который я получил в ЛК при покупке позволил мне активировать подключение лишь в первом тслабе. Чисто теоретически (как рабочая идея), эти два сервера могут быть не синхронизированы по времени?..
Это может быть запросто, но выше писали, что тслаб никак не ориентируется на время сервера и локальное время, а использует лишь биржевое время, которое идет в поле TIME у тиков. Из опыта самописных программ, которые также работают с транзаком, могу сказать, что расхождение с серверным временем может быть до 13 секунд (бывало и такое!).
|
Наверх
|
|
|
|
#80405 - Mon Nov 21 2016 03:56 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Так я и хотел сделать изначально, но ключ к Whotrades, который я получил в ЛК при покупке позволил мне активировать подключение лишь в первом тслабе. Проверьте пожалуйста ещё раз? Убедитесь, что при вставке логина и потом при вставке ключа по краям не влезает лишний пробел какой-нибудь? Коллеги совершенно уверенно и однозначно утверждают, что ключ для WhoTrades один и тот же что в 1.2, что в 2.0. Если это не так, обратитесь, пожалуйста, в нашу тех.поддержку с подробностями (через ЛК). Файл tslab.log + скриншот настроек провайдера + скриншот окна со вставленным ключом и красной рамкой валидации. Этого должно быть вполне достаточно, чтобы локализовать проблему и пристрелить её (если она есть)...
|
Наверх
|
|
|
|
#80414 - Tue Nov 22 2016 08:09 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Коллеги оказались правы! Попробовал - сейчас ключ подошел, а тогда (через минуту после покупки ключа) во втором тслабе не активировалась кнопка ОК при вводе ключа, а в первом тслабе сразу ключ принялся. Вот я и подумал, что коннектор к Хутрейдс только для первого тслаба работает.
Подскажите, как лучше запустить агентов? Параллельно сделать две установки второго тслаба? Это будет корректно работать? Или внутри одного тслаба продублировать скрипты, чтобы каждый скрипт через разные подключения торговал?
|
Наверх
|
|
|
|
#80415 - Tue Nov 22 2016 10:14 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Подскажите, как лучше запустить агентов? Параллельно сделать две установки второго тслаба? Это будет корректно работать? Или внутри одного тслаба продублировать скрипты, чтобы каждый скрипт через разные подключения торговал? Вы можете иметь на машине одновременно ТСЛаб 1.2 + 2.0. Но нельзя на одной машине в одной учетной записи иметь два ТСЛаб 2.0. Поэтому Вы запускаете агентов к двум подключениям из одного ТСЛаб 2.0. Скрипты не нужно дублировать. На одном скрипте у Вас может быть 100500 агентов. (Грубо говоря, скрипт -- это класс (в терминах ООП). Агент -- экземпляр этого класса.) Вы просто при создании агента указываете на каком инструменте он работает. И как раз в этот момент выполняется привязывание к счету (фактически, к реальному провайдеру). Единственное, рекомендовал бы Вам давать агентам разумные имена (там есть поле куда можно ручками вписать ласковое имя). Например, у меня агенты опционные и зависят от серии и базового актива. Поэтому они называются примерно в таком духе " rt-SRZ6-Dec" == " Real Trading -- Опционы на фьючерс SRZ6 -- Декабрьская серия". У Вас они могут называться к примеру " wh-Name1-SRZ6", " ht-Name1-SRZ6". При этом приставка будет сразу показывать через какой коннектор идет вывод заявок в рынок.
|
Наверх
|
|
|
|
#80416 - Tue Nov 22 2016 12:42 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Спасибо! Всё это буду пробовать в ближайшие дни. А пока какая-то беда приключилась. Заглядываю на сервер, а там первый тслаб работает, а второго нет.....он "упал". Несколько цитат из логов: 12:17:02.53[162]INFO :Скрипт выполнен успешно за 208мс. (1872 баров, время 22.11.2016 12:16:00) 12:17:02.60[10]DEBUG:RtUpdateWindowsEx: Name='exsort_sht' IsStarted=True IsStateChanging=False 12:17:02.60[10]INFO :127:Info:Script:(Script:exsort_sht):Агент 'exsort_sht': Скрипт выполнен успешно за 284мс. (1872 баров, время 22.11.2016 12:16:00) 12:17:02.60[10]INFO :Скрипт выполнен успешно за 284мс. (1872 баров, время 22.11.2016 12:16:00) 12:17:02.61[64]FATAL:UnhandledException: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в TSLab.Controls.Log.LogItemCollection.<>c__DisplayClass12_0.<TryRemoveTail>b__0(LogViewItem t) в System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() в System.Linq.Enumerable.<SkipIterator>d__30`1.MoveNext() в System.Linq.Buffer`1..ctor(IEnumerable`1 source) в System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) в TSLab.UI.ObservableList`1.RemoveRange(IEnumerable`1 items) в TSLab.Controls.Log.LogItemCollection.TryRemoveTail(Boolean isLimitChanged) в TSLab.Controls.Log.LogItemCollection.HandleDefferedRecords() в TSLab.UI.DefferedObservableCollection`1.<.ctor>b__6_0(Object state) в System.Threading.TimerQueueTimer.CallCallbackInContext(Object state) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.TimerQueueTimer.CallCallback() в System.Threading.TimerQueueTimer.Fire() в System.Threading.TimerQueue.FireQueuedTimerCompletion(Object state) в System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() в System.Threading.ThreadPoolWorkQueue.Dispatch() в System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() 12:17:02.72[1]DEBUG:OnAppExited 12:17:02.81[1]DEBUG:Deactivated
|
Наверх
|
|
|
|
#80417 - Tue Nov 22 2016 01:58 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Плохо. Вообще по таким падениям надо сразу открывать тикет в наш саппорт через ЛК. Конкретно в Вашем случае сразу могу сказать, что мы в эту итерацию исправляли несколько багов, связанных с LogItemCollection. В ближайшее время (следующая неделя, наверное) ожидается выход новой версии. ПС У нас можно настроить систему уведомлений, чтобы ТСЛаб периодически присылал письмо и сообщал, что он ещё жив. В данном случае, конечно, было бы лучше иметь вочдог, который бы сообщал что приложение только что умерло... И, возможно, рсазу запусказ заново?.. (Но это надо аккуратно использовать и имхо уже излишне) Немного погуглил, есть готовые вочдоги для этого (с уведомлениями). Вот к примеру небольшой перечень с описанием Мне лично приглянулся на первый взгляд Kiwi application monitor и Application monitor Если на одну машину поставить оба, они даже смогут присматривать друг за другом и таким образом в свою очередь гарантировать работоспособность системы мониторинга... Потом ещё солнечно-ветряной генератор нужен + резервирование провайдера двумя способами...
|
Наверх
|
|
|
|
#80419 - Tue Nov 22 2016 02:37 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Печально это.... С системой уведомлений подружиться не удалось. Настроил во втором тслабе отправку сообщений на эл. почту. Однако, наткнулся на пару странностей: 1. После этой настройки на почту не пришло ни одного сообщения (нет отправленных с одного и нет входящих в другом ящике). 2. После этой настройки тслаб тупо перестал пересчитывать агенты. В результате я уведомления по почте удалил и пересчет агентов возобновился. Попробую еще раз. Может, у меня руки кривые:)
С удовольствием написал бы об этом баге в техподдержку в ЛК, но в ЛК не увидел возможности это сделать.
|
Наверх
|
|
|
|
#80420 - Tue Nov 22 2016 03:31 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
С удовольствием написал бы об этом баге в техподдержку в ЛК, но в ЛК не увидел возможности это сделать. Извините, возможно, неправильно выразился. http://support.tslab.ru/
|
Наверх
|
|
|
|
#80428 - Wed Nov 23 2016 12:43 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Ситуация непонятная. Сегодня второй тслаб аналогично "упал" снова. По логам опять фатальная ошибка при обращении к несуществующему объекту при переборе каких-то коллекций через MoveNext.....
Хорошо, если это мои скрипты приводят к такому сбою...Хотя скрипты работают без изменений уже порядка месяца...Первые 3 недели без сбоев. А тут последние дни каждый день программа "падает".... Как же быть, если это - результат не моих скриптов?
|
Наверх
|
|
|
|
#80430 - Wed Nov 23 2016 04:14 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Ещё раз мои соболезнования. Новый билд дожаривается. Если речь опять про LogItemCollection - надеюсь новая версия будет свободна от этой болячки.
Чтобы не гадать -- просто отправляйте в наш саппорт скриншот ситуации (если это фатал там обычно мессадж-бокс с подробностями появляется) + файл tslab.log (в архиве, конечно). Коллеги проанализируют. Иногда, если проблему можно быстро исправить, мы делаем быстрый фикс и оперативно выдаём новую сборку лично для Вас.
PS Себе для мониторинга падений и автозапуска поставил Kiwi Application Monitor. Он забавный даже в бесплатной версии. Сегодня добавлю "Jockersoft Application Monitor". Сравню.
|
Наверх
|
|
|
|
#80437 - Thu Nov 24 2016 06:32 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Это становится чем-то похожим на спорт:) Вчера второй тслаб "упал" три раза...каждый раз с одной и той же ошибкой: 19:18:01.81[94]FATAL:UnhandledException: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в TSLab.Controls.Log.LogItemCollection.<>c__DisplayClass12_0.<TryRemoveTail>b__0(LogViewItem t) в System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() в System.Linq.Enumerable.<SkipIterator>d__30`1.MoveNext() в System.Linq.Buffer`1..ctor(IEnumerable`1 source) в System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) в TSLab.UI.ObservableList`1.RemoveRange(IEnumerable`1 items) в TSLab.Controls.Log.LogItemCollection.TryRemoveTail(Boolean isLimitChanged) в TSLab.Controls.Log.LogItemCollection.HandleDefferedRecords() в TSLab.UI.DefferedObservableCollection`1.<.ctor>b__6_0(Object state) в System.Threading.TimerQueueTimer.CallCallbackInContext(Object state) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.TimerQueueTimer.CallCallback() в System.Threading.TimerQueueTimer.Fire() в System.Threading.TimerQueue.FireQueuedTimerCompletion(Object state) в System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() в System.Threading.ThreadPoolWorkQueue.Dispatch() в System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() 19:18:01.83[160]FATAL:UnhandledException: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в TSLab.Controls.Log.LogItemCollection.<>c__DisplayClass12_0.<TryRemoveTail>b__0(LogViewItem t) в System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() в System.Linq.Enumerable.<SkipIterator>d__30`1.MoveNext() в System.Linq.Buffer`1..ctor(IEnumerable`1 source) в System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) в TSLab.UI.ObservableList`1.RemoveRange(IEnumerable`1 items) в TSLab.Controls.Log.LogItemCollection.TryRemoveTail(Boolean isLimitChanged) в TSLab.Controls.Log.LogItemCollection.HandleDefferedRecords() в TSLab.UI.DefferedObservableCollection`1.<.ctor>b__6_0(Object state) в System.Threading.TimerQueueTimer.CallCallbackInContext(Object state) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.TimerQueueTimer.CallCallback() в System.Threading.TimerQueueTimer.Fire() в System.Threading.TimerQueue.FireQueuedTimerCompletion(Object state) в System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() в System.Threading.ThreadPoolWorkQueue.Dispatch() в System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() Ежели это дело не прекратится...придется расставаться с тслабом:)
|
Наверх
|
|
|
|
#80439 - Thu Nov 24 2016 10:02 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Это становится чем-то похожим на спорт:) Вчера второй тслаб "упал" три раза...каждый раз с одной и той же ошибкой Вы тикеты с этими исключениями в наш саппорт зарегистрировали? Сообщите мне пожалуйста их номера в личку. Поскольку в Вашей версии наблюдаются очевидная проблема, до выхода фикса Вам имеет смысл прекратить её использование (для целей серьёзной торговли). Но без тикетов в саппорт-системе, мы, наверное, не сможем продвинуть вопрос предоставления Вам внеочередной исправленной версии...
|
Наверх
|
|
|
|
#80441 - Thu Nov 24 2016 11:58 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Тикет регистрировал в саппорте. Обещают через две недели исправить....мне кажется, это несерьезно..... В личку вам номер отправил. Вообще, есть ли возможность использовать предыдущую версию, в которой этого бага не было?
Отредактировано Sergey Pavlov (Thu Nov 24 2016 12:04 PM)
|
Наверх
|
|
|
|
#80455 - Sun Nov 27 2016 11:06 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Вопрос. Как во втором тслабе, комбинацией каких кубиков, функций из АПИ и торговых настроек, добиться следующего. Завершился бар, я хочу, чтобы была выставлена лимитная заявка по цене, привязанной либо к цене закрытия этого бара, либо к цене открытия нового бара плюс-минус заданную величину? Далее, если, спустя 3 минуты, эта заявка не была исполнена, она была бы перемещена на текущую цену?
|
Наверх
|
|
|
|
#80457 - Sun Nov 27 2016 05:15 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Рабочий таймфрейм М1, правильно угадываю? То есть Вы хотите продержать сигнал 3 бара и затем передвинуть его вслед за рынком?
|
Наверх
|
|
|
|
#80459 - Mon Nov 28 2016 03:59 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Да. Грубо говоря, как реализовать механизм ухудшения цены неисполненной лимитной заявки?
|
Наверх
|
|
|
|
#80460 - Mon Nov 28 2016 11:12 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
в апи откажитесь от торгового цикла. просто торгуйте последним баром. Тогда не будет криков про пропущенные входы и заявка будет переставляться. Главное использовать изменение позиции чтобы если будет частичное исполнение продолжало доливать позу
_________________________
__
|
Наверх
|
|
|
|
#80462 - Mon Nov 28 2016 12:45 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: ra81]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Можете пояснить, что значит в апи отказаться от торгового цикла? Имеется в виду в методе Execute каждый раз делать пересчет только последнего бара?
|
Наверх
|
|
|
|
#80465 - Mon Nov 28 2016 01:46 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
вроде того. Не ставить сигналы на прошлых барах а только на последнем баре ставьте. пропуски будут только если вы в прошлое сигнал ставите а сделки там нет, тогда будет кричать. А если в прошлое не ставить то и кричать не будет ничего.
_________________________
__
|
Наверх
|
|
|
|
#80471 - Tue Nov 29 2016 07:11 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: ra81]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Ясно. Подскажите, а почему есть разница в поведении первого и второго тслаба? Это так задумано или это ошибочка? При одинаковых настройках первый тслаб после 5 минут, если лимитка (выставлять рыночные заявки лимитками) не была исполнена, то она переставляется по рынку. Во втором тслабе, спустя такие же 5 минут, если лимитка не исполнена, заявка перевыставляется, но на то же место, а не на новую цену и не по рынку.
|
Наверх
|
|
|
|
#80476 - Tue Nov 29 2016 05:54 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
сие не ведаю. если один и тот же код и такая же ситуация, то без понятия.
_________________________
__
|
Наверх
|
|
|
|
#80561 - Sat Dec 03 2016 02:44 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: ra81]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Господа! Какие есть возможности ускорить срабатывание Execute? Суть проблемы в том, что тслаб ждет первого тика новой минуты....а этот тик может случиться и спустя 1-2-3 секунды от начала нового бара... Возможно ли сделать так, чтобы расчеты и заявки делались сразу как только реальный тайм-фрейм завершился, не дожидаясь нового тика?
|
Наверх
|
|
|
|
#80564 - Sat Dec 03 2016 10:28 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
попробуйте кубик метроном. Но я не уверен что он будет работать адекватно достаточно.
_________________________
__
|
Наверх
|
|
|
|
#80565 - Sun Dec 04 2016 08:02 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: ra81]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Вообще, судя по описанию "Автоматический принудительный пересчет скрипта через заданный промежуток времени" это может быть то, что нужно... Но как этим правильно воспользоваться? Неужели при составлении документации авторы руководствовались принципом написания как можно меньшего кол-ва слов? Если да, то напрасно....
Итак, по этому метроному имеются следующие вопросы: 1. То, что он находится в группе опционов, означает ли что-то, учитывая, что я его буду использоваться в обычных линейных активах? 2. В каких единицах задается промежуток времени и как ведется отсчет этих единиц? 3. Что является базовой точкой отсчета, к которой прибавляется данная задержка, которая по умолчанию в параметрах=30000?
Я так понимаю, что методом тыка понять этот метроном на истории нереально, а тыкать в живых торгах без понимания как-то совсем не хочется...
|
Наверх
|
|
|
|
#80571 - Sun Dec 04 2016 09:09 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Sun Nov 21 2010
Записи: 428
|
Из визуального редактора непросто будет настроить время следующего срабатывания этого таймера (Метронома). Это время задается в миллисекундах задержки (до следующего срабатывания), и чтобы скрипт запустился в нужную (милли)секунду, потребуется вычислять разницу между текущим временем и временем начала следующего таймфрейма. Можно, но сложно. Пересчет скрипта будет происходить не только по таймеру, но и по стандартным условиям (сделки, котировки). В первом случае новой свечки еще не будет. Придется учитывать кучу особенностей пересчетов. Также, потребуется часы на компьютере синхронизировать с мировым временем с достаточной точностью. На кой черт Вам эти сложности если у Вас свое самописное приложение есть?
1. Будет, почему нет. 2. В миллисекундах. Число определяет задержку до следующего срабатывания. Таймер реинициализируется каждый пересчет скрипта (метронома). 3. Текущее время. Метроном - это именно таймер: в какое время "кнопку" нажмете, такое время и будет точкой отсчета.
Все что делает этот метроном - это добавляет дополнительный пересчет скрипта. Но отлаживать работу такого скрипта в условиях реальных торгов - действительно нереально. Повысить частоту пересчета скрипта можно и штатными средствами: добавить ликвидный (частые изменения стакана) инструмент и указать интервал пересчета в свойствах скрипта как "Пок/прод".
_________________________
Не пишите мне! Никому ничего делать не буду.
|
Наверх
|
|
|
|
#80574 - Mon Dec 05 2016 06:34 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: jhgjrht]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Прежде всего, спасибо!
На кой черт? Всё просто. Наше самописное приложение "обыгрывает" тслабовскую реализацию по всем параметрам кроме одного - гибкость. Чтобы мне запустить новую систему в нашем приложении, мне нужно кучу времени провести с программистом, чтобы всё проверить-перепроверить и т.д. В тслабе я новую систему запускаю теперь уже всего за полчаса. Поэтому хочется понять, возможно ли по требуемым характеристикам довести тслабовскую реализацию до нашей реализации? Тогда мы откажемся от собственного программирования. Если нет, то придется накручивать в своем приложении нечто типа тслаба, чтобы придать приложению гибкости.
Подскажите на счет последнего варианта. Что значит добавить ликвидный инструмент? Например, возьму я сишку и просто добавлю её в скрипт как дополнительный источник? Этот источник нужно будет с чем-то соединять в скрипте? Я не совсем понимаю, как увеличиться частота пересчета в инструменте, скажем, акции сбербанка, если я добавил сишку.
|
Наверх
|
|
|
|
#80578 - Mon Dec 05 2016 12:03 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Подскажите на счет последнего варианта. Что значит добавить ликвидный инструмент? Например, возьму я сишку и просто добавлю её в скрипт как дополнительный источник? Этот источник нужно будет с чем-то соединять в скрипте? Я не совсем понимаю, как увеличиться частота пересчета в инструменте, скажем, акции сбербанка, если я добавил сишку. Ключевым предлагаемым изменением является смена типа исполнения агента. См. картинку в аттаче. Если я правильно понимаю, это означает что бар будет закрываться по изменению лучшего бида или аска, а это происходит намного чаще. ПС Блок метроном создавался в помощь скрипту Static analysis. Нужно было чтобы в неторговое время кто-то вызывал принудительные пересчеты скрипта. Пока что никто не обращался с предложением/пожеланием/требованием довести его до ума, чтобы он мог вызывать пересчет агента ровно на границе бара... Дурацкий вопрос: это для Вас настолько критично? ППС Да, синхронизацию времени по NTP на машине тоже недурно сделать...
Attachments
2016-12-05 - BuySell script setting.png (311 downloads)
|
Наверх
|
|
|
|
#80583 - Mon Dec 05 2016 01:21 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Синхронизация сделана и все такие очевидные вещи сделаны.
Видимо, всё дело в том, чем кто торгует....если 1 контракт гонять, то можно на всё это и "забить"..
Сейчас у меня в тслабе получилось добиться проскальзывания примерно в 2.2 шага цены в среднем на 1 контракт при не маленькой позиции. Это на уровне 0.02% получается проскальзывание. Я хочу добиться среднего проскальзывания на 1 контракт не более 0.01%, поскольку каждые потерянные 0.01% это ощутимая сумма в абсолютном выражении, ну а на унылом рынке эти потери систематически усиливают просадку. Всё слишком очевидно:) Не могу представить, что это некритично для других трейдеров:)
Правильно ли я понимаю, что интервал пересчета пок-прод приведет к тому, что скрипт будет пересчитываться, грубо говоря, каждую секунду? Но мне это не нужно. Мне бы добиться того, чтобы он всё сделал не после первого тика новой минуты, а, в идеале, начал пересчет ближе к концу 59-й секунды завершающейся минуты. Что-то мне подсказывает, что метроном не обеспечит заданную периодичность и через сколько-то срабатываний начнет накапливаться какое-нибудь смещение.
|
Наверх
|
|
|
|
#80584 - Mon Dec 05 2016 01:36 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Что-то мне подсказывает, что метроном не обеспечит заданную периодичность и через сколько-то срабатываний начнет накапливаться какое-нибудь смещение. Совершенно верно. Как уже написал выше, он создавался для другого и эту задачу не решает.
|
Наверх
|
|
|
|
#80587 - Mon Dec 05 2016 05:16 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Sun Nov 21 2010
Записи: 428
|
Гибкость управления агентами - это да, это хорошо. Но вот контроль над их работой, над выставлением снятием/заявок, над пересчетом скриптов, над изменениями в программе, увы, мягко говоря, слабоват. Однажды, в связи с очередным обновлением, обнаружите, что отлаженный код (скрипт) перестал правильно работать и ... здравствуйте аврал и головняк. Разработчики даже детальный список изменений не публикуют, разбирайся потом, где-чего поменяли... Это может стать проблемой. ТСлаб, сеть, сервер брокера, биржа - это системы массового обслуживания и именно тогда, когда на рынке большие изменения и нужно быстро реагировать, эти посредники, а также тюнинг ТСЛаба, проклинаются матом, поскольку работают совсем неадекватно. Но, се ля ви. В своем приложении, контроля немного больше.
Указав интервал пересчета скрипта пок/прод и добавив ликвидный инструмент, скрипт будет пересчитываться 5 раз в секунду, примерно (зависит от способа подключения к бирже). Если добавить два ликвидных инструмента, то пересчитываться, по идее, будет еще чаще. При этом, если интервал задан в 1 минуту, то 60*5 -1 = 299 раз в минуту скрипт выполнится с одним и тем же набором свечей. Это излишество, конечно, но если скрипт пересчитывается быстро, то это может оказаться приемлемо.
Option vizard разумно намекнул, что можно этот кубик (метроном) дополнить возможностью выполнить пересчет скрипта именно в нужный момент. Это не сложно, предложите ему.
Отредактировано jhgjrht (Mon Dec 05 2016 05:26 PM)
_________________________
Не пишите мне! Никому ничего делать не буду.
|
Наверх
|
|
|
|
#80594 - Tue Dec 06 2016 06:50 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: jhgjrht]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Еще раз спасибо! Мне бы понять, как работает тслаб....Если честно...это кот в мешке...или черный ящик:) С одной стороны, всё понятно, потому что общие принципы едины. С другой стороны, в нюансах...столько всякой фигни.... Опуская лирику... А он всё падает и падает.... Немного фактов. От первого тслаба я отказался. Перенес всех агентов во второй тслаб. Итого во втором тслабе параллельно торгуются одни и те же скрипты через два подключения: HFTransaq (Finam) и обычный transaq (Just2trade=Whotrades). Теперь они ставят заявки почти одинаково..иногда первый чуть быстрее, иногда второй - как повезет. Поскольку раньше всегда второй способ (через первый тслаб) во всех заявках на секунду опережал первый способ (через второй тслаб), можно сделать вывод, что первый тслаб в плане производительности работает лучше. Более того, за время их параллельной работы второй тслаб постоянно падал, а первый ни разу не упал. Итак, вчера второй тслаб проработал первый день боевых торгов на версии 2.0.13.0. Упал три раза. Это УЖАСНО. Ибо это влечет жутко неприятную ситуацию. Он работает... набирает позицию...не маленькую...друзья... после чего...набрав позицию...через час он падает...разумеется, он ни хрена не сохранил и при новом запуске он считает, что все сигналы пропущены и творит громадную кучу сделок по ужасным ценам...сижу у терминала...ищу возможность хоть как-то по близким ценам эту удвоенную позицию сбросить... Такая фигня повторилась три раза вчера... Первое падение тслаба закончилось в логах вот так: 14:50:02.35[64]DEBUG:RtUpdateWindowsEx: Name='v3_J_exsort_lng_16' IsStarted=True IsStateChanging=False 14:50:02.35[64]INFO :127:Info:Script:(Script:v3_J_exsort_lng_16):Агент 'v3_J_exsort_lng_16': Скрипт выполнен успешно за 83мс. (1200 баров, время 05.12.2016 11:49:00) 14:50:02.35[64]INFO :Скрипт выполнен успешно за 83мс. (1200 баров, время 05.12.2016 11:49:00) 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:02.36[Transaq Parser]WARN :Remove 1 addtional bars for trade 23655475200732(12/05/2016 11:50:00) SBER.MM:MMA 14:50:08.23[Transaq Parser]INFO :Server time was updated down '12/05/2016 14:50:02' -> '12/05/2016 14:50:08'
Второе падение: 17:25:06.55[155]DEBUG:RtUpdateWindowsEx: Name='v3_J_exsort_sht_16' IsStarted=True IsStateChanging=False 17:25:06.55[155]INFO :127:Info:Script:(Script:v3_J_exsort_sht_16):Агент 'v3_J_exsort_sht_16': Скрипт выполнен успешно за 15мс. (1200 баров, время 05.12.2016 14:24:00) 17:25:06.55[155]INFO :Скрипт выполнен успешно за 15мс. (1200 баров, время 05.12.2016 14:24:00) 17:25:06.59[81]FATAL:UnhandledException: System.ArgumentException: Длина результирующего массива недостаточна. Проверьте значения destIndex и length, а также нижние границы массива. в System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable) в System.Collections.Generic.List`1.CopyTo(T[] array, Int32 arrayIndex) в System.Linq.Buffer`1..ctor(IEnumerable`1 source) в System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) в TSLab.UI.ObservableList`1.RemoveRange(IEnumerable`1 items) в TSLab.Controls.Log.LogItemCollection.HandleDefferedRecords() в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) в System.Threading.TimerQueueTimer.CallCallback() в System.Threading.TimerQueueTimer.Fire() в System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() в System.Threading.ThreadPoolWorkQueue.Dispatch() 17:25:06.62[152]DEBUG:RealtimePositionList 'v3_J_bol_sht_8':'RTSSRZ6' have 8 positions, 0 active, 8 initial count. Timestamp=12/05/2016 15:55:18 ForgateDate=01/01/0001 00:00:00 17:25:06.63[152]DEBUG:RealtimePositionList: Already have active position 'in4'(281546676) at bar 249 for RTSSRZ6:MCT 17:25:06.63[152]DEBUG:RealtimePositionList: Already have active position 'in9'(281546738) at bar 254 for RTSSRZ6:MCT 17:25:06.63[152]DEBUG:RealtimePositionList: Already have active position 'in10'(281547157) at bar 255 for RTSSRZ6:MCT 17:25:06.63[152]DEBUG:RealtimePositionList: Already have active position 'in11'(281546899) at bar 256 for RTSSRZ6:MCT 17:25:06.63[152]DEBUG:RealtimePositionList: Already have active position 'in12'(281547330) at bar 257 for RTSSRZ6:MCT 17:25:06.63[152]DEBUG:RealtimePositionList: Already have active position 'in13'(281546690) at bar 258 for RTSSRZ6:MCT 17:25:06.63[152]DEBUG:RealtimePositionList: Already have active position 'in14'(281546924) at bar 259 for RTSSRZ6:MCT 17:25:06.63[152]DEBUG:RealtimePositionList: Already have active position 'in0'(281546390) at bar 260 for RTSSRZ6:MCT 17:25:06.63[152]DEBUG:RtUpdateWindowsEx: Name='v3_J_bol_sht_8' IsStarted=True IsStateChanging=False
Третье падение: 18:01:03.53[51]DEBUG:Added command approve='False' comment='Выход по рынку (нет сигнала!)' 18:01:03.54[51]DEBUG:RtUpdateWindowsEx: Name='v3_J_linreg_lng_39' IsStarted=True IsStateChanging=False 18:01:03.54[51]INFO :127:Info:Script:(Script:v3_J_linreg_lng_39):Агент 'v3_J_linreg_lng_39': Скрипт выполнен успешно за 603мс. (3000 баров, время 05.12.2016 15:00:00) 18:01:03.54[51]INFO :Скрипт выполнен успешно за 603мс. (3000 баров, время 05.12.2016 15:00:00) 18:01:03.59[Transaq Parser]WARN :Remove 1 addtional bars for trade 1660535852(12/05/2016 18:01:02) SRZ6:FORTS 18:01:03.59[Transaq Parser]WARN :Remove 1 addtional bars for trade 1660535852(12/05/2016 18:01:02) SRZ6:FORTS 18:01:03.59[Transaq Parser]WARN :Remove 1 addtional bars for trade 1660535852(12/05/2016 18:01:02) SRZ6:FORTS 18:01:03.60[Transaq Parser]WARN :Remove 1 addtional bars for trade 1660535852(12/05/2016 18:01:02) SRZ6:FORTS 18:01:03.60[149]DEBUG:RtUpdateWindowsEx: Name='v3_J_mami_sht_27' IsStarted=True IsStateChanging=False 18:01:03.60[Transaq Parser]WARN :Remove 1 addtional bars for trade 1660535852(12/05/2016 18:01:02) SRZ6:FORTS 18:01:03.60[Transaq Parser]WARN :Remove 1 addtional bars for trade 1660535852(12/05/2016 18:01:02) SRZ6:FORTS 18:01:03.60[149]INFO :127:Info:Script:(Script:v3_J_mami_sht_27):Агент 'v3_J_mami_sht_27': Скрипт выполнен успешно за 54мс. (1300 баров, время 05.12.2016 15:00:00) 18:01:03.60[Transaq Parser]WARN :Remove 1 addtional bars for trade 1660535852(12/05/2016 18:01:02) SRZ6:FORTS 18:01:03.60[149]INFO :Скрипт выполнен успешно за 54мс. (1300 баров, время 05.12.2016 15:00:00) 18:01:03.69[192]DEBUG:Position entry=281553857, Q=1, RQ=0 LotSize=1, Shares=1, Bar=649 18:01:03.69[192]DEBUG:Position entry=281554390, Q=1, RQ=0 LotSize=1, Shares=1, Bar=650 18:01:03.69[192]DEBUG:Position entry=281554642, Q=1, RQ=0 LotSize=1, Shares=1, Bar=651 18:01:03.69[192]DEBUG:Position entry=281554655, Q=1, RQ=0 LotSize=1, Shares=1, Bar=652 18:01:03.69[192]DEBUG:Position entry=281554006, Q=1, RQ=0 LotSize=1, Shares=1, Bar=653 18:01:03.69[192]DEBUG:Position entry=281554867, Q=1, RQ=0 LotSize=1, Shares=1, Bar=654 18:01:03.69[192]DEBUG:Position entry=281554703, Q=4, RQ=0 LotSize=1, Shares=4, Bar=655 18:01:03.69[192]DEBUG:Position entry=281554473, Q=1, RQ=0 LotSize=1, Shares=1, Bar=656 18:01:03.69[192]DEBUG:Position entry=281554437, Q=1, RQ=0 LotSize=1, Shares=1, Bar=657 18:01:03.69[192]DEBUG:Position entry=281554280, Q=1, RQ=0 LotSize=1, Shares=1, Bar=658 18:01:03.69[192]DEBUG:Position entry=281554696, Q=1, RQ=0 LotSize=1, Shares=1, Bar=659 18:01:03.69[192]DEBUG:Position entry=281555093, Q=1, RQ=0 LotSize=1, Shares=1, Bar=660 18:01:03.70[192]DEBUG:Position entry=281556356, Q=1, RQ=0 LotSize=1, Shares=1, Bar=691 18:01:03.70[192]DEBUG:Position entry=281556843, Q=1, RQ=0 LotSize=1, Shares=1, Bar=692 18:01:03.70[192]DEBUG:Position entry=281556751, Q=1, RQ=0 LotSize=1, Shares=1, Bar=693 18:01:03.70[192]DEBUG:RealtimePositionList 'v3_J_bal1_lng_15':'RTSSRZ6' have 15 positions, 15 active, 15 initial count. Timestamp=12/05/2016 17:36:05 ForgateDate=01/01/0001 00:00:00
Что у меня запущено в тслабе? 12 агентов по двум счетам, т.е. 24 агента на весь тслаб. В сумме 12 агентов=270 позиций, т.е. всего 540 позиций на весь тслаб. Всё это пересчитывается сейчас ровно один раз в минуту. Тикет в техподдержку я отправил. Думаю, что мне пообещают через пару недель сделать новый релиз.... Однако, у меня уже начинает скапливаться осадочек от качества программного кода второго тслаба..... Кажется, что он будет падать вечно:) З.Ы. Может просто тслаб это софт для любителей? Максимум 5-6 агентов и не более 10-20 позиций в сумме? Однако, на оф.сайте тслаба и при его покупке я не читал про такие ограничения. Было бы неплохо услышать от авторов тслаба на что он рассчитан?
|
Наверх
|
|
|
|
#80600 - Tue Dec 06 2016 12:31 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: sar]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Да. Вчера он первый раз упал спустя почти пять часов работы. Сегодня при той же конфигурации и тех же скриптах без каких-либо изменений он упал спустя три минуты.
|
Наверх
|
|
|
|
#80602 - Tue Dec 06 2016 12:39 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
stranger
Registered: Sun Apr 03 2016
Записи: 5
|
Всем, привет! После обновления (2.013/64) у всех пустые окна "Средние цены" "позиция" в закладке "профили позиции" или только у меня ...? При этом "параметр позиции" работает, позу-график кажет.
ps работаю через плазу (vpn).
|
Наверх
|
|
|
|
#80604 - Tue Dec 06 2016 01:34 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
значит проблема острая, требуйте скорейшее решение данной проблемы. в течении недели должны выдать сборку с решением проблемы! Сегодня вечером или ночью, если Святой Кодий будет к нам милостив...
|
Наверх
|
|
|
|
#80605 - Tue Dec 06 2016 01:36 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: zateplansky]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
После обновления (2.013/64) у всех пустые окна "Средние цены" "позиция" в закладке "профили позиции" или только у меня ...? При этом "параметр позиции" работает, позу-график кажет. У всех. В деве уже исправили. Сейчас остальные безобразия в стойло поставим -- и выкатим.
|
Наверх
|
|
|
|
#80653 - Wed Dec 07 2016 10:17 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Да. Вчера он первый раз упал спустя почти пять часов работы. Сегодня при той же конфигурации и тех же скриптах без каких-либо изменений он упал спустя три минуты. Сегодня выпустили 2.0.13.1 в том числе с исправлением фаталов из LogItemCollection. Накатите её, пожалуйста. Станет ли теперь в Вашей конфигурации нормально себя вести?
|
Наверх
|
|
|
|
#80654 - Wed Dec 07 2016 10:23 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
10 позиций в одном агенте на опционах элементарно получается.
У меня, правда, из-за нехватки времени больше 2 серий торговать одновременно не получается... Зато пересчеты идут 1 раз в 10 секунд и на каждом пересчете может выставлять по 10 лимитников на бай и на селл с перевыставлением каждые 10 секунд.
И вторая особенность в том, что при работе с опционами активно использую сайзинг. То есть я не делаю 100500 отдельных позиций "Маша покупает, Петя продаёт, Саша поставил тейк-профит", а делаю одну позицию на один тикер и просто меняю её текущий сайз. Было +50, хочу сделать +70 -- просто доливаю в ту же позу ещё 20 лотов. Лимитником, понятно.
|
Наверх
|
|
|
|
#80655 - Thu Dec 08 2016 04:21 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Честно говоря, надоел мне этот криво сделанный второй тслаб. Падение за падением. Плюс иногда он выгружается более 50 минут. Все это неприемлемо для реальной торговли большим сайзом.
Со вчерашнего дня я продолжаю эксперимент в первом тслабе. Итак, 540 раздельных позиций, 24 агента, раз в минуту пересчеты параллельно у двух все тех же брокеров . Отработало прекрасно. Программа не падает, всегда отзывчива - проверял весь день. И самое вкусное - он намного быстрее второго тслаба. Заявки ставятся в нулевую секунду наконец))) второй тслаб проигрывает первому при моей нагрузке чуть больше секунды.
Дальше будем посмотреть...
Отредактировано Sergey Pavlov (Thu Dec 08 2016 06:16 AM)
|
Наверх
|
|
|
|
#80659 - Thu Dec 08 2016 10:22 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
writer
Registered: Fri Apr 24 2015
Записи: 596
|
Прекрасно Вас понимаю. Ну, что же... Если будет ещё один подход к штанге с целью удостовериться, что вылечились фаталы Вашего типа -- сообщайте.
|
Наверх
|
|
|
|
#80666 - Thu Dec 08 2016 02:48 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
stranger
Registered: Sun Apr 03 2016
Записи: 5
|
А где лежит 2.0.13.1 ? Пустые окна -"Средние цены" исправили?
|
Наверх
|
|
|
|
#80738 - Wed Dec 14 2016 05:51 AM
Re: Функционирование TSLab и оптимальная реализация
[Re: Option Wizard]
|
newbie
Registered: Wed Nov 09 2016
Записи: 28
|
Помогите! Ситуация. Работает в тслабе агент и держит позицию в декабрьском фьючерсе и всё никак её ни сдаст. Что произойдет, если я в настройках этого агента изменю торгуемый инструмент на мартовский фьючерс? Как после этого закроется (по сигналу) открытая позиция в дек фьюче? Она закроется? Или агент будет её закрывать уже в том фьюче, который будет указан в настройках?
|
Наверх
|
|
|
|
#80774 - Thu Dec 15 2016 02:19 PM
Re: Функционирование TSLab и оптимальная реализация
[Re: Sergey Pavlov]
|
Carpal Tunnel
Registered: Thu Sep 27 2012
Записи: 2860
|
Помогите! Ситуация. Работает в тслабе агент и держит позицию в декабрьском фьючерсе и всё никак её ни сдаст. Что произойдет, если я в настройках этого агента изменю торгуемый инструмент на мартовский фьючерс? Как после этого закроется (по сигналу) открытая позиция в дек фьюче? Она закроется? Или агент будет её закрывать уже в том фьюче, который будет указан в настройках? Менеджер команд, оттуда закройте ее и сменив фьюч заново откройте. Как бы перескочите.
_________________________
__
|
Наверх
|
|
|
|
|
|