Рис.3.1. Типовая конфигурация индикаторов SWT-метода.
Как мы писали в предыдущей публикации, при имеющемся обилии логических переменных, описывающих движение рынка, а также при разнообразии стратегий входа, вариантов риск-менеджмента и всего остального, не поддающего перечислению, количество возможных торговых стратегий на основе SWT-метода хоть и не бесконечно, но определяется очень большим числом.
Сегодня структура программы автоматизированной торговли SWT-Robot реализована таким образом. что позволяет оперативно добавлять подпрограммы с кодами конкретных торговых условий (стратегий) не затрагивая ни кода ни сути базового алгоритма.
Программа позволяет оперативно менять коды и параметры встроенных рабочих стратегий, наращивать их количество практически до бесконечности и оперативно исследовать эффективность использования рабочих стратегий в различных режимах.
Этим мы и сейчас займемся. И начнем наш процесс с самого простого варианта. С проверки ходячего выражения: — «The trend is your friend».
Проблема только в том, что у нас нет единственного тренда. Если посмотреть на цифровой индикатор в левом верхнем углу представленного графика, то трендов у нас девять, а с учетом глобального и все десять.
Глобальный тренд со средним периодом цикла 50-75 лет можно сразу исключить из рассмотрения. Не станем мы держать сделку со дня рождения и до пенсии, не те времена. За это время родятся и умрут сотни компаний с их акциями, могут разрушиться государства с их валютами, создадутся новые. Мы сами свидетели таких изменений. Много чего может случится за это время.
И основной тренд с циклом 10-15 лет нас вряд ли заинтересует, разве что для информации.
А вот долгосрочный тренд с циклом 2-3 года и более коротки движения мы уже можем принимать во внимание. Такой горизонт планирования уже укладывается в быстротечный темп современной жизни.
Но осталась одна проблема. Трендов восемь или девять, а какой тренд принимать во внимание, какое движение будет результирующим?
Поступим очень просто.
Если все тренды направлены вверх, то будем считать что результирующий тренд строго восходящий.
Если вниз, то нисходящий. А все промежуточные варианты будем считать зоной неопределенности.
Тогда мы можем сформировать логику торговых условий для открытия позиций и торговли по тренду в следующем виде:
Opbuy = OpbuyTD&&OpbuyRT;
Opsell = OpsellTD&&OpsellRT;
Символ ! означает операцию логического отрицания (инверсии) НЕ.
Символ && — операцию логического умножения (конъюнкции) И.
Символ || — операцию логического сложения (дизъюнкции) ИЛИ.
Если кто-то хочет восстановить в памяти правила булевой алгебры, то гугл засыплет вас ссылками.Выражения, входящие в приведенную формулу в рамках программы SWT-Robot определяются следующим образом.
OpbuyTD = (!Basic || BT)&&(!Long || LT)&&(!Medium || MT)&&(!Short || ST)&&(!Weekly || WT);
OpsellTD = (!Basic || !BT)&&(!Long || !LT)&&(!Medium || !MT)&&(!Short || !ST)&&(!Weekly || !WT);
OpbuyRT = (!Daily || DT)&&(!IDay || IdT)&&(!Hourly || HT);
OpsellRT = (!Daily || !DT)&&(!IDay || !IdT)&&(!Hourly || !HT);
Данные условия записаны для реверсивной стратегии, когда условия открытия позиций а каком либо направлении одновременно являются условиями закрытия позиции противоположного направления.
В более общем случае, когда условия отличаются к уже записанным логическим функциям добавляются еще четыре условия на закрытие позиций:
ClbuyTD = (!Basic || !BT)
&&(!Long || !LT)
&&(!Medium || !MT)
&&(!Short || !ST)
&&(!Weekly || !WT);
ClsellTD = (!Basic || BT)
&&(!Long || LT)
&&(!Medium || MT)
&&(!Short || ST)
&&(!Weekly || WT);
ClbuyRT = (!Daily || !DT)
&&(!IDay || !IdT)
&&(!Hourly || !HT);
ClsellRT = (!Daily || DT)
&&(!IDay || IdT)
&&(!Hourly || HT);
И еще две объединяющих функции
Clbuy = ClbuyTD&&ClbuyRT;
Clsell = ClsellTD&&ClsellRT;
Кроме того, в случае не реверсивной торговой стратегии правила открытия позиций с целью исключения конфликта интересов необходимо модифицировать следующим образом:
Opbuy = OpbuyTD&&OpbuyRT&&!Clbuy;
Opsell = OpsellTD&&OpsellRT&&!Clsell;
Данная модификация дает более высокий приоритет правилам на закрытие позиций и позволяет избежать ситуации.когда открываемая позиция тут же закрывается, и процесс повторяется до тех пор пока не закончатся деньги на счете.
В конечном варианте правила выглядят так:
Clbuy = ClbuyTD&&ClbuyRT;
Clsell = ClsellTD&&ClsellRT;
Opbuy = OpbuyTD&&OpbuyRT&&!Clbuy;
Opsell = OpsellTD&&OpsellRT&&!Clsell;
Как вы заметили, мы сформировали более быстрые и более медленные тренды в отдельные группы.
Сделано это было в свое время чисто случайно и почему я не не знаю до сих пор, но ничего случайного не бывает. Это решение, как потом оказалось, принесло свою пользу, причем именно такое разбиение оказалось оптимальным.
Параметры Basic, Long, Medium, Short, Weekly, Daily, IDay, IdT и Hourly при значении логической единицы задают определения результирующего направления торговли для совершения сделки режим использования основного, долгосрочного, среднесрочного, краткосрочного, недельного, дневного, внутридневного и часового трендов соответственно.
Вот собственно и все, что касается общего характера формулирования и записи торговых условий.
На этом долгая вводная часть заканчивается. И в следующей публикации мы наконец перейдем к конкретике проектирования и исследования торговых стратегий в общем, и в частности, торговой стратегии 101.
Это не значит, что до нее было еще 100 стратегий. Она первая. Просто трехзначный номер добавляется в идентификатор позиции, чтобы позиции разных торговых стратегий не смешивались при обработке в случае одновременного использования пула торговых роботов.