Симбиоз двух алгоритмов или банальный учет направленности одного тикера относительно другого, мы все понимаем, но редко учитываем это при создании алгоритма.
На примере вчерашнего алгоритма, см статью -> smart-lab.ru/company/tslab/blog/663259.php сделали скрипт по си. В самой логике ничего не меняли, только добавили еще одно условие, открывать сделки, только если совпадает направление по ртс (ну естественно имеется ввиду если растет ртс то продавать си можно, и наоборот)
Делается это через экспорт импорт значений, которые легко можно передавать между скриптами в TSLab.
То есть в одном скрипте экспортируем с уникальным именем, а во втором импортируем по этому же имени. В зависимости от типов данных, импорт будет или логических значений или вещественных и целочисленных.
Ниже смотрим на эффект
Вроде же хорошая эквити? нет. горбатые холмы тоже плохо — не станем философствовать, хоть и для си горб объясним удвоением цены.
Но вот так выглядет уже после фильтра по ртс
И хоть и соразмерная прибыль по эквити, но если углубиться в результаты, то очевидно что мы в ДВА раза(почти) уменьшили количество сделок, не потеряв в прибыли.
До
после
При этом, можно углубиться, и «зациклить» оба скрипта, и торговать и ртс с учетом уже отфильтрованного си, но сделать это уже нельзя так просто. Ко всему прочему еще нужно будет писать очередность исполнения, кто формирует сигнал первый и по какому принципу отрабатывать его с учетом если уже были сделки от ртс, но на си не закрылась, и тд. В целом много подводных камней, которые нужно прописывать. Мы же ничего не меняли, в приведенном примере, и не пытались подгонять красивые результаты. то есть параметры «дефолтные», можно сказать. При создании конечно предполагалось, что для шортовых позиций, будут больше объемы, для растущего меньше, так как падаем всегда панически и резко, а растем потом долго, медленно и нудно, потому разделен объем в лонг и шорт.
Так же, делитесь впечатлениями и мнениями относительно контента, что еще хотелось бы видеть в нашем блоге?! и является ли он вам полезным!?
Скачать первый скрипт
Скачать второй скрипт
Присоединяйтесь к нам в телеграмм канал
ICEDONE, Это да, а дальше как? вот к пример ртс ведущий, си ведомый.
ртс открыл лонг, си следом шорт. Далее ртс закрылся, а си еще нет. Следом поступает сигнал для ртс, игнорировать его, так как Си еще не закрылся? Открывать его с учетом того что си в направлении? или же ждать пока закроется и си, только после этого формируя новый сигнал для ртс?) вот про такую очередность говорилось. + есть еще сценарий ртс открылся, а си за это время 2 или 3 раза может войти в том же направлении. А может например разок в том направлении, потом увидит обратное и снова в том, а ведь обратный сигнал при «зацикливании» закроет сделку по ртс (ну такие условия в скрипте). можно конечно много сценариев прописать, но мысль думаю понятна.
Спасибо вам за подобные материалы!
SergeyJu, Собрать 2 алгоритма внутри одного — не проблемно, особенно если они не сложные. Это лишь разные методы использования.
а в чем огород?) добавили только 2 блока.
а отладчик кода у вас в программе есть?
Susanin, Программистов, которые владеют знаниями кода, очень сложно уговорить писать статьи. Но если получится, обязательно появятся статьи.
отладчик есть docs.tslab.pro/pages/viewpage.action?pageId=20185805
я одним глазом посмотрел и сразу возник вопрос. прежде чем погружаться в детали необходимо получить на него ответ.
я пользуюсь другим тестером и там логика выполнения программы следующая.
язык там совсем не C# но в терминах его скрипт будет выглядеть примерно так:
есть класс стратегии в котором есть глобальные переменные пользователя и метод обработки данных. т.е. свечек.
тестер Сам производит итерацию по свечкам запуская метод на каждой новой свече и есть доступ как глобальным переменным так и к истории свечек. скрипт вызывает методы для покупки и и.д. которые уже рассчитывает сам терминал. ведет позу и т.д.
у вас как я понял скрипт сам проводит итерацию по свечкам поскольку терминал запускает метод один раз. т.о. образом при добавлении новых данных расчет будет проводиться с самой первой свечки, а не с предпоследней как в моем случае.
я правильно понял логику программы?
Susanin, писать на языке «высокого» (но на самом деле с точки зрения трейдера НИЗКОГО) уровня — неэффективно по трудозатратам.
По моему опыту оптимально писать на C# отдельные кубики со своими торговыми ноу-хау (допустим, какие-то индикаторы или обращение к внешним пакетам математической и статистической обработки данных R, Python, Matlab, ...). Но саму торговую логику рисовать именно в виде блок-схем.
В целом Вы правильно поняли: по закрытию бара он добавляется в конец списка и выполняется перерасчет торгового агента. Понятно, имеются механизмы кеширования уже вычисленных значений (если говорить про индикаторы).
если вы из разработчиков то обратите на это внимание. изменить это не сложно.
проще написать скрипт чем разбираться с кубиками, и отлаживать проще если где есть ошибки в математике.
Susanin, все не надо заново рассчитывать. Старые значения кешируются. Доступ к локальным и глобальным переменным (на самом деле к объектам произвольной сложности) имеется (в том числе их можно сохранять между перезапусками программы).
Вам кажется, что кодить проще, потому что Вы не пробовали рисовать блок-схемами. Кодить более сложные алгоритмы с запутанными зависимостями и развитым пользовательским интерфейсом непосредственно в коде будет очень утомительно и при этом будет вероятность что-то напутать (скажем, вычислить дельту не по модельной улыбке, а по биржевой или рыночной). Например, в стандартном опционном скрипте чуть больше 100 кубиков использовано. Излишне говорить, что в каждом из этих кубиков упрятан нетривиальный функционал, валидация входных значений, возня с пограничными значениями и прочее, что программисты так любят заметать под коврик и оставлять грабли на радость техподдержке и юзерам.
Впрочем, понятно, что на вкус и цвет все фломастеры разные. Главное, чтобы Вам лично было профитно разрабатывать и торговать свои стратегии в той платформе, которую Вы хорошо освоили.
А что за скрипт такой в окошке представлен? продажа волатильности при постоянном дельта-хедже?
Антон, да, это один из стандартных опционных скриптов, которые идут в комплекте с TSLab, чтобы на их базе все желающие могли делать свои модификации (если базовый функционал кажется недостаточным).
Susanin, на выходе получается торговый полуавтомат с двумя окнами (которые можно раскладывать по своим большим мониторам), 2 панелями для рисования графиков и ввода торговых команд кликом мышки, 8 отдельными панелями для вывода сопроводительной информации, кнопками, чекбоксами, элементами редактирования числовых параметров, управляющих работой торгового алгоритма.