TSLab позволяет создавать торговые системы любой сложности: от простейших, до профессиональных, что делает продукт интересным как для новичков, так и для профессиональных трейдеров.
В рамках одной программы Вы сможете разработать, протестировать на исторических данных, произвести оптимизацию и, главное, запустить систему на исполнение в режиме реального времени.
data <- Quandl('WIKI/T', type = "xts", start_date="1997-01-01")3. В строке 16 также надо поменять тикер внутри кавычек.
data[, 1] <- "T"
write.table(tslab_txt, file="D:/QuandlDataSets/t.csv", sep=",", quote=F, row.names=F)Всё, теперь надо выделить весь скрипт (CTRL + A) и нажать кнопку Run:
Увидел сегодня в личном кабинете письмо от Финама про ТСЛаб.
«Сообщаем Вам, что с 1 января 2018 года компания АО «ФИНАМ» прекращает учет и выдачу лицензионных ключей для программы TSLab (обычных и HFT). Тариф за использование программы TSLab на Вашем счете будет снят до конца года, сервис будет отключен.
Напрягли слова „сервис будет отключен“. Из сбивчивых пояснений менеджеров понял, что для того, чтобы мои роботы продолжали работать с 1 января мне надо за следующую неделю (5 дней) купить лицензию на ТСЛаб и снова переподключиться к Финаму.
А вас это не напрягло?
Торгую на Американском фондовом рынке с Interactive Brokers (IB) более трех лет на сегодняшний день используя разные стратегии. До недавнего времени все это было вручную, внутридневка и средний срок. Моя торговая жизнь изменилась, когда я, закончив курсы по созданию и алгоритмизации торговых систем с использованием платформы TSLab, решила выйти на Америку со своими роботами.
Вооружившись знаниями с курса по поиску рыночных закономерностей и отточив навык по нахождению смещения вероятности в своей торговой системе, я создала портфель из десятка роботов и горела нетерпением запустить их на своем боевом счету у Interactive Brokers. В процессе обучения на курсе я проходила практику на Российском срочном рынке в течение нескольких месяцев, поэтому сложности как настроить и запустить агентов в платформе TSLab не возникало. Меня интересовало другое- как сконнектировать TSLab с платформой брокера Trader Workstation (TWS), так как она не является особо user-friendly, достаточно громоздка и не совсем интуитивно понятна, а для алготрейдинга нужно только торговать через эту платформу. Вот тут-то и оказалось, что кроме краткого руководства по подключению TSLab к брокеру IB особо ничего и нет. Перелопатив сотни страниц интернета, русско- и англоязычных блогов и сайтов, я нашла часть необходимой информациии, а недостающая часть была получена методом тыка, путем проб и ошибок в процессе запуска и работы на реале.
Поэтому я решила обобщить в данном цикле статей весь наработанный материал и свой опыт по выходу на реал на Америке со своими роботами из TSLab через IB. Буду рада, если данная статья поможет кому-то сэкономить время, нервы и деньги при подобном процессе.
Для удобства я разбила весь материал на три части:
Часть 1- Особенности при подготовке к запуску TSLab на реал с IB
Часть 2- Непосредственная работа терминалов TSLab и TWS
Часть 3- Часто встречающиеся проблемы
Отмечу, что здесь речь пойдет о реальном счете на IB,(не демо) и полнофункциональном коннекторе TSLab,(не тестовый режим).
Сразу оговорюсь, чего не будет в этой статье-не будет информации о том, как открыть счет у IB, как формировать свой портфель, как управлять рисками и как создавать роботов в TSLab для Америки. Все это отдельная тема, и если будет значительный интерес, то могу написать об этом дополнительно.
В этой статье я рассмотрю основные моменты подготовки и запуска уже готовых роботов, созданных в TSLab на реал с IB, с которыми я столкнулась. Итак, все по порядку.
Trader Workstation(TWS), платформа брокера IB, через которую нужно будет вести торговлю и коннектировать с TSLab. Она устанавливается отдельно на той машине/ПС, откуда будет вестиcь торговля, скачивается версия для десктопа, не онлайновская. Занимает примерно 700 МВ. Платформа TSLab при этом занимает около 500 МВ, и в процессе работы до конца сессии еще накачивает примерно столько же. Это надо будет учитывать при выборе памяти (RAM), если вы размещаете свои скрипты на отдельном сервере-VPS (Virtual Private Server)
Market Data Subscriptions. Для начала работы необходимо иметь подписку у брокера на реальные маркет данные- Market Data Subscriptions. Делается это через
Account Management>User Settings> Market Data Subscriptions.
Особенностью IB является не очень удобная система самой подписки- плата взимается за целый календарный месяц независимо от дня подключения. т.е если вы хотите подключить реальные маркет данные в середине месяца, например 16 числа, то платить придется за целый месяц до первого числа следующего месяца.
Стоимость данных зависит от рынка, страны и от глубины данных. Я например выбрала такие, как на скрине внизу- это позволяет видеть реальные котировки и торговать всеми акциями USA, без стакана. В целом это стоит мне 4,50 дол. в месяц, если комиссия за этот же месяц более 30 долларов. Если меньше, то дополнительно нужно платить 10 долAPIID- для меня это был не совсем понятный момент, какой API client ID нужно иметь и где его брать. Оказалось, все намного проще. Это делается в настройках
TWS – File> Global Configuration>API> Settings > Master API client.
Выбираем любое не отрицательное число и вписываем туда. Это же число затем будем использовать при настройке поставщика в TSLab.
В этом же блоке проверяем Socket port- должен быть 7496, иначе работать не будет.
И я также вбила данные IP co своего VPS в строчку Trusted IPs
Автоматическое закрытие платформы TWS и ее блокирование после определенного времени неактивности. Для этого опять идем в
File> Global Configuration> Configuration>Lock and Exit и устанавливаем следующее:
И вбиваем нужное время для автоматического выхода из программы- Set Auto Log Off Time
После этого нажимаем «Apply»
Автоматический вход в платформу TWS -стоит отметить, что в базовой конфигурации он не предусмотрен в целях безопасности, поэтому каждый день до начала сессии нужно заходить на свой VPS сервер/ту машину, где она установлена и запускать ее вручную до начала работы сессиии. Если у вас в TSLab стоит автоматическое подключение к поставщику по расписанию в менеджере команд, то запускать TWS нужно до начала времени подключения.
IB использует двойной метод идентификации, сначала по логину и паролю, а затем по комбинации цифр и букв с карты-ключа IB, которая выдается при открытии счета. При желании в настройках можно отказаться от двойного метода идентификации:
Account Management> Manage Account>Security>Secure Login System>SLS Opt Out
После того, как эта фунция будет активирована, можно будет использовать только логин и пароль и тогда уже настроить автоматический вход в программу. Я сама этого пока не делала, предпочитаю более безопасный вход вручную.
Теперь о некоторых особенностях в настройках поставщика в TSLab. При создании поставщика данных необходимо обратить внимание на следующее:
Счет — это ваш номер счета у IB.
API ID-это тот номер, о котором я писала в п 4. Вбиваем то же число, которе выбрали для Master API client в TWS.
Адрес — вбиваем IP той машины, на которой установлены TSLab и TWS
Порт- должен быть обязательно 7496, как и в п 4.
Локальное время- обязательно поставить галочку
Исп. SMARTвсегда — тоже ставим галочку, это нужно для API торговли и правильного расчета комиссии.
Остальные настройки- по желанию.
Особенностью настройки агента в TSLabявляется выбор тикера в источнике скрипта или агента. Тикер для торговли акциями вбивается вручную, а не выбирается из списка меню, как это например, при торговле на рынке FORTS. При первом запуске TSLab не имеет ни одного тикера в памяти и поэтому его нужно занести туда через платформу TWS.
Для этого в TWS создается любой лимитный ордер с нужным тикером, я, например, делаю это по 1 долл за акцию вне рабочей сессии. Затем после того, как связь с брокером установлена в менеджере поключений TSLab, можно запускать скрипт или агента и выбирать нужный источник как обычно и тогда появится выбранный тикер. После этого, не раньше, лимитный ордер у брокера можно удалить. Все набранные тикеры потом сохраняются в памяти TSLab и второй раз один и тот же тикер вводить не нужно, только новые.
Если вы все правильно настроили, то при подключении TSLab к TWS у вас в платформе брокера должна высветиться такая табличка при нажатии на зеленый символ DATA в правом верхнем углу. Внизу можно увидеть ваши IP данные с портом 7496 и API Client ID и статус- Аccepted.
Продолжение следует...
В следующей статье, Часть 2 я продолжу рассказ о непосредственной работе обеих платформ в реальном режиме.
Надеюсь, этот материал был полезным. Буду признательна за комментарии и пожелания.
Удачных вам трейдов!
Почти у всех трейдеров, использующих в своей торговле алгоритмические системы, рано или поздно при оптимизации этих самых систем встает вопрос: «а не занимаюсь ли я подгонкой алгоритма под рынок, может он и не рабочий вовсе?» Эта мысль не раз возникала и у меня, и каждый раз я думал над тем, как понять где «полезная» оптимизация и поиск смещения вероятности, а где уже переоптимизация и подгонка под рынок. В итоге появились некоторые мысли, которые предлагаю к обсуждению. Итак, вот к чему я пришел.
Для начала предлагаю разделить весь процесс оптимизации на 2 основные части:
1. Оптимизация параметров, отвечающих за вход в позицию
2. Оптимизация параметров, отвечающих за выход из позиции (стопы, тейки, трейлы и т.д.)
И вот это вот деление, на мой взгляд, и дает ключ к ответу на вопрос «настройка, или подгонка?»
Разберемся по порядку. Чем мы занимаемся, когда оптимизируем параметры, отвечающие за точку входа?
И вот тут я смею утверждать, что в данном случае мы занимаемся именно поиском смещения вероятностей и увеличение числа положительных сделок будет как раз говорить о наличии какого-то смещения, нежели о подгонке под рынок. Почему я так считаю? А потому что сама суть поиска смещения вероятностей заключается именно в поиске такого соотношения рыночных условий, в результате которого на истории мы получали перевес. Переоптимизации тут не может быть по определению. Вот конкретные условия, при которых мы входили и вот конкретный результат, который мы получили. Положительный — хорошо, значит нашли смещение.
Но тут есть нюансы, которые могут бросать пыль в глаза.
И эти нюансы как раз связаны со второй частью оптимизации — это поиск оптимальных параметров на выход из позиции. Тут сразу оговорюсь, что речь о ценовых параметрах, т.е. я сейчас не говорю о реверсных системах, или системах, где для выхода используется так же сигнал, или паттерн, аналогичный сигналу на вход. Ценовые параметры — это размер стопа, размер тейка, параметры трейлинга и другие приемы мани-менеджмента. Именно в них, на мой взгляд, может крыться подвох, который делает красивую линию эквити из системы с нерабочей идеей. И это довольно просто доказать, взяв набор случайных входов и прогнав оптимизацию по тейку, стопу и тп. Почти наверняка найдется такое сочетание параметров, которое покажет неплохие результаты. И вот этот фокус и может сыграть с нами злую шутку, спрятав от нас изъяны системы.
Я сейчас не призываю отказаться от оптимизации этих параметров.
Нет, это тоже важная вещь, но сначала нам надо убедиться, что основная идея у системы есть и она работает. Кстати, справедливости ради, надо сказать, что в самом принципе управления выходом из позиции может крыться смещение вероятности, которое в итоге на реале может «вытянуть» плохую систему. И даже вроде бы есть такие системы, основанные исключительно на мани менеджменте. Но сейчас я не об этом). Так как же нам понять, что идея нашей торговой системы рабочая, что мы нашли смещение вероятности? Очевидно, надо каким-то образом избавиться (на время) от ценовых параметров выхода из позиции. Нам ведь что интересно? Как мы поймем, что смещение есть? Да очень просто, цена, после входа в позицию, сразу или через время должна пойти в нашу сторону. Неважно насколько, не важно каким образом (импульсно, постепенно, с задёргами, или без), но она чаще должна идти в нашу сторону. Это и будет означать наличие смещения вероятности. Т.е. мы будем знать, что сейчас больше шансов, что пойдет туда-то. Осталось только как-то это отследить.
И тут я предлагаю такой вариант: нам просто надо фиксировать позицию через определенное время. Если получим убедительный плюс — смещение есть! Тут важно только понять, а сколько держать?.. Ну вот тут есть элемент интуиции и понимания своей системы. Все согласно тайм фрейма и идеи. Я проверил пару своих идей так: прикинул средний размер движения, которое планирую брать в системе, прикинул его продолжительность (минимальную и максимальную) и провел оптимизацию по времени удержания позиции от минимального до максимального (взял с запасом от 5 до 1500 минут). Поразительно, но 99% исходов оказались в положительной зоне. Число выигрышных сделок варьировалось от 50% до 65% по всей сетке, профит фактор от 1.3 до 2 (за исключением пары исходов) Т.е. 6 из 10 раз цена шла в мою сторону, да к тому же на расстояние в полтора-два раза больше, чем когда цена шла против меня… И всего 2 отрицательных исхода… 5 и 10 минут (видать, система не скальперская:) ) Неважно как, неважно насколько, цена шла в мою сторону! Вот оно смещение) Теперь бояться нечего, можно и второй частью оптимизации заняться, высосать из системы по максимуму!
Давайте посмотрим на гениальное произведение технической мысли: фрезерный обрабатывающий центр V700 фирмы СтанкоМашСтрой.
Цена этого чуда составляет всего-навсего 35 миллионов рублей.Несложно предположить, что еще ему нужно помещение и электричество эдак киловатт 30, далее различные расходники типа режущих головок и сменных насадок, периодическое тех.обслуживание, чистка, смазка и так далее.
К этому станку нужно поставить рукастого и головастого рабочего, который будет в правильном порядке нажимать кнопки и инженера, который сможет подготавливать 3Д модели деталей и продумывать программу выполнения обработки.
Учтем естественный износ деталей и амортизацию и предположим, что его срок жизни 10 лет. Это даст «временной распад» порядка 300 тыр/мес.
Итого можно прикинуть, что ежемесячная стоимость владения этим чудом составит порядка 400-500 тыр/мес. Может и больше.
Но можно ли сказать, что этот станок дорогой? Действительно ли он дорогой, с точки зрения его покупателей? Если этот станок позволяет производить сложную высокотехнологичную продукцию, к примеру, на 3 миллиона рублей в месяц?
Если он окупает себя за год и дальше приносит только чистую прибыль владельцу?
Ответ очевиден: "дайте побольше таких станков и таких заказов".
Аналогичные рассуждения применимы и к торговому терминалу.
Цена покупки 0, но есть ежемесячный взнос. При этом в отличие от станка, терминал со временем будет становиться только лучше.
И Ваш терминал — это тот инструмент, который позволяет Вам заработать.
На С-Л часто приходится слышать, что "ТСЛаб очень дорогой", "5 тыр/мес — это неподъемно", "уйду писать роботов в Эксель" или "лучше буду торговать через Квик на QPile". Отлично! Это логика человека, который вместо 5-осевого фрезерного центра покупает в строймаге напильник и говорит, что "буду сам вытачивать руками лопатки турбины в гараже по ночам".
При этом вместе с ТСЛаб 2.0 Вам сразу дают в руки инструкцию, как можно отбивать его абонентскую плату.
Может быть, Вы не станете через год Соросом. И работу своей головой никто не отменял. Искать закономерности и тестировать линейных роботов все равно надо.
Но отбивать абонентскую плату в ТСЛаб 2.0 можно на счете размером 100 тыр совершенно элементарно.
Стартовый счет 92 тыр. Один инструмент (опционы на СИ). Месяц времени. Этого достаточно.
Результат сентябрьской экспирации в опционах на СИ на нашем боевом счете (используем его для отладки опционной части ТСЛаб 2.0) +6 600 руб (с учетом комиссий брокера/биржи):
Повторять подробности не буду, уже много раз показывал (например, тут) торговлю позицией «зигзаг» на различных инструментах в постах на Смарт-Лабе.
А теперь добавим сюда РИ. Потом Сбер. Нефть брент. И торговать будем счетом 1 миллион. А если 10 миллионов?
Фиксированная абонентская плата становится исчезающе-малой величиной.
Вам дают уже не только станок. Вам дают уже готовый бизнес. Пользуйтесь!
<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
SUGAR,W,19951101,000000,158825.0000000,20013.0000000,-35139.0000000,15127.0000000,1
получается что:
<OPEN> — это будет OI
<HIGH> — Comm NetPosition
<LOW> - NonComm NetPosition
<CLOSE> — NonReportable NetPosition
Вот пример простой системы на какао:
У меня примеры только с чистыми позициями и старыми отчетами, но если захотеть можно впихнуть и новые отчеты… посмотреть какие участники самые активные например в какао и подставить их позиции в файл, далее уже дело программирования (кубиков) и вашей фантазии)
Ссылка на архив с готовыми файлами и скринами если плохо видно: https://yadi.sk/d/btiMo6PY3KtDaK
Надеюсь кому-нибудь поможет и пригодиться)
В версии 2.0 TsLab появился функционал по сбору портфеля, пока не совсем удобно, но уже что то, сдвинулось дело с мертвой точки.
Краткая инструкция:
1. Берем нашу систему, копируем все блоки
2. Создаем свой индикатор, вставляем туда все блоки
3. Удаляем графики, контрольные панели
4. Создаем новый скрипт, открываем, смотрим что у нас в панели инструментов появилась надпись самодельные
5. Берем от туда наш индикатор, кидаем в скрипт
6. Повторяем процедуру для других систем, компилируем, получаем общую кривую
Нюансы: не должно быть одинаковых названий блоков входа в одном портфеле, т.е. переименовать надо, т.е. система 1 — название блоков одно, система 2 — название блоков другое, именно блоков входа.
Что я сделал, у меня на валютах торгуются 4 основных идеи, я взял основные системы с этих идей и собрал их в 2 портфеля, по 10 систем в каждом. Каждой системе дал по 100К. В итоге получили 2 портфеля каждый из которых состоит из 10 систем. Каждый портфель на 1 мл. рублей.
В итоге получилось лучше чем я ожидал.
Портфель №1
Если взять просадку каждой системы по отдельности и просуммировать их, то получим 348 432 р., но в портфеле получили 236 492 р. (с 2015 года если смотреть), улучшение на 32%, очень хорошо.
По второму портфелю снизилась с 437 490 до 328 972, на 24,8%.
При том, что я выбрал агрессивный стиль ММ, за счет симбиоза основных систем из 4 главных идей получилось сохранить общую просадку в пределах допустимой нормы. Запустил сегодня в торги оба портфеля на новом счете. И на старом выключил часть систем и поставил эти портфели
Что в итоге я получил:
По второму 76% и просадка в пределах 10%.
Трансляцию по нему не буду делать, но ваше любопытство удовлетворю, буду периодически писать о его достижениях.
О новых максимумах и просадках.
Первоначально хотел соединить 20 систем в 1 портфель, но TsLab стал уже призадумываться, да и проще проконтролировать что с технической стороны все хорошо на портфеле из 10 систем, а не 20. Поэтому составил 10*2.
Трансляцию по другому портфелю, тут, который собран долгим путем, по старой схеме, на прошлой неделе не обновлял, жду когда финам сгладит разрыв на стыке контрактов.