Блог им. melamaster

Первые шаги с ТСЛАБ

Может кому полезно будет.
Может кто ценных советов подкинет.

На текущий момент опыт пользования тслабом составляет порядка одного месяца: 3 недели изучения и 1 неделя боевых торгов.
Цель освоения тслаба была в том, чтобы иметь независимую от программиста реализацию алгоритмов.
Рассматривались: тслаб, стокшарп, метатрейдер и что-то еще.
Начал с тслаб 1.2, но через недельку изучения перешел на тслаб 2.

На текущий момент всё нравится, но ряд технических нюансов непонятен.
Основная трудность — отсутствие нормальной документации как пользовательского, так и программистского толка.

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

Что мне позволил сделать тслаб? Всего сейчас порядка 10 торговых алгоритмов, каждый из которых генерирует примерно по 20 раздельно управляемых позиций. Грубо говоря, каждая позиция это от 10 до 50 контрактов по SR или от 5 до 20 по Si или от 1 до 10 по RI. На входе в эти алгоритмы несколько неторгуемых источников, на выходе сделки. Всё это тслаб позволили легко и удобно настроить. Изначально почти всё сделал кубиками, а свои «статистики» реализовал в виде DLL (это связно с циклом for).

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

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

Из минусов пока два:
время выставления заявок задерживается примерно на 1 секунду в сравнении с аналогичными системами, запрограммированными руками
квалифицированного программиста;
запустил тслаб на арендованном сервере рядом с брокерским сервером (HFTransaq) и не нравится, что приложение там открыто и доступно,
было бы приятно, если бы была возможность хотя бы заблокировать запущенную программу — хотя бы защита от дурака.

Далее ковыряюсь с TSLAB API, скоро переделаю вход-выход из позиций вместо блоков скриптом и буду доволен от этого.
Сомневаюсь пока, что тслаб подходит для чего-то HFT-шного, но, возможно, ошибаюсь.
Для спокойной позиционной 1-2-3-дневной торговли подходит прекрасно. Пока мнение такое.
★1
13 комментариев
Какого рода алгоритмы использовали?
avatar
Otjánbird, алгоритмы, напоминающие пересечение скользящих средних.
avatar
«если бы была возможность хотя бы заблокировать запущенную программу — хотя бы защита от дурака»
я давно предлагал такое — разработчики отвергли, как ненужное
avatar
1сек задержки скорее всего из-за vps финамовского. Кто-то уже рассказывал, что у них хреновый продукт.
avatar
Chepell, сравнение с одного VPS. На нем параллельно выставляют заявки тслаб и самописное приложение. По квиковской таблице время выставления разнится в 1-2 секунды не в пользу тслаба. Возможно, много лишних пересчетов в тслабе делается, что притормаживает.
avatar
Sergey Pavlov, такие дикие задержки только из за впс или какой то локальной беды могут быть. Плохие впс вообще фризят всю программу хотя другой софт тут же на этой же впс будет работать. ХФТ конечно тслаб не потянет, но от 1 секунды на принятие решение уже вполне себе способен. Можно даже колбасить по тикам, но конечно не пытаться быть первым в очереди.
avatar

> совершенно не хочется тратить время на пролистывание всего форума

Задавайте вопросы — Вам ответят.

> возможность хотя бы заблокировать запущенную программу
Это как Вы себе на практике представляете?


Если Вы врендовали сервер, у Вас есть доступ к нему по РДП. И только у Вас.
РДП-сессию залочили — и в домике.


Если волнуетесь за алгоритмы — скрипты можно сунуть в зашифрованные контейнеры перед выкладыванием на сервер.



Что касается скорости — поиграйтесь с настройками робота. Возможно, вам подойдет режим тактирования „Interval+First trade“ или „Buy/Sell“ вместо просто „Interval“?..

Script settings

Обычный сервер Транзак (не ХФТ) примерно за 200-250 мс в среднем заявки выводит.

avatar
ch5oh, вопросы трудно задать, они слишком общие. Если коротко, то: «Как внутренне устроен тслаб?». Понятно, что на этот вопрос никто отвечать не будет. Потихоньку разберусь.

Что вы имеете в виду под залочить РДП-сессию? Ну вот есть у меня логин-пароль для РДП. Присоединился — выложил — отсоединился. Разве местный сисадмин не может тупо скопировать себе всё содержимое? Разве он же не может подключиться к моей машине также как я и по приколу в запущенном тслабе что-нибудь натыкать?

Представляю очень просто. Некая кнопка в меню тслаба — залочить. Ввёл пароль, который только я знаю, разлочил, тслаб активен, а так работает, но нельзя в него потыкать:)

С настройками буду играться, спасибо.
avatar

Sergey Pavlov, > Как внутренне устроен тслаб?

Это как раз вопрос подходящий для нашего форума (форума ТСЛаб).
Но его нужно конкретизировать.

Вас интересует: порядок исполнения агента? Вывод заявки в рынок? Тонкости АПИ? Взаимодействие с Риск-менеджером?
Во что Вы конкретно сейчас уперлись и в чем "собираетесь сами разбираться"?


> Разве он (админ) не может подключиться к моей машине также как я и по приколу в запущенном тслабе что-нибудь натыкать?

Нет. Не может. Потому что пароль от своей виндовой учетной записи знаете только Вы (Вы ведь его поменяли после того, как получили учетку, правда?)
Он может поменять Ваш пароль — но Вы об этом немедленно узнаете, когда не сможете залогиниться в сессию.

 

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

Так что блокировки РДП-сессии более чем достаточно. Насколько мне помнится, ни в одном терминале мира нет функции "блокировка UI торгового приложения". Ни по кнопке, ни по таймауту неактивности...

 

Опять же РДП-сессию можно настроить, чтобы она автоматом разрывалась через 15 минут, если в ней никто ничего не делает...

avatar

ch5oh, прежде всего, еще раз благодарю вас.

Сейчас я уперся в то, что не знаю, как мне наиболее правильно (оптимально с точки зрения ресурсов, быстродействия, надежности и удобства это масштабировать и изменять) переделать всё, что я реализовал в тслабе. Я думаю (возможно, ошибочно), что, если бы я понимал внутренние механизмы тслаба, то я бы сразу пошел по правильному пути.

Например, есть у меня 5 агентов, которые делают расчеты по акциям Сбера, а заявки ставят по фьючерсу Сбера. Внутри каждого агента у меня дублируется эти источники. Это множит использование ресурсов и тормозит работу? Внутри каждого из этих скриптов у меня идет управление множеством отдельных позиций, для каждой из которых свое условие входа и выхода. Всего за каждым агентом-скриптом от 15 до 40 позиций. Вычисления в dll, а дальше кубиками управление позициями. Соответственно, общий вопрос: как оптимальнее? Не лучше ли все их в один скрипт загнать? Но тогда я их не смогу отключать по отдельности.

Далее. Например, как делаются пересчеты? Вот у меня источник это минутки. Ставлю ограничение в 3000 баров. Пришла новая минута. Правильно ли я понимаю, что при каждой новой минуте пересчитываются все 3000 баров? Я пробовал довести «торговать с » до нужного числа, но тогда вылазит exception о том, что я вышел за границы массива. Хотя я это всё с запасом указывал.

Далее. Что является в тслабе окончанием текущей минуты? Приход новой минуты через gethistory? Приход тика с новой минутой? Календарная граница минуты по локальному времени?

Ну и т.д......

Сейчас у меня основное, во что я упёрся помимо общего понимания, это тслабапи. Вроде всё логично, когда методом тыка разберешься, но отсуствие документации по API и примеров огорчает. Описание классов на сайте ну очень скудное… Да, я в курсе, что на форуме полно разных примеров реализации тех или иных алгоритмов.

avatar

Sergey Pavlov, открывайте тему на нашем форуме вот прямо с этими вопросами — и пойдем их разбирать помаленьку.

Возможно, тему имеет смысл открывать сразу в разделе Документация для версии 2.0?..

avatar
ch5oh, с удовольствием это сделаю, как только мой аккаунт будет approved.
avatar

теги блога Sergey Pavlov

....все тэги



UPDONW
Новый дизайн