понедельник, 3 февраля 2020 г.

SWT-метод. Торговая стратегия 101. Часть 1. The trend is your friend? Really?



Рис.101.1. Типовая конфигурация индикаторов SWT-метода и интервал тестирования стратегии.

Текст получается большой. Поэтому будем резать на куски.

Мы никак не настраиваемся на рынок и не подгоняем торговые правила под параметры динамики рынка. Мы меняем только правила, их набор и глубину тренда. Конечно, это тоже настройка. Но это не классическая оптимизация под названием kurvefitting, поскольку параметры индикаторов не меняются. Меняется глубина анализа рынка и тип стратегии.

Итак начнем.
И начнем наш процесс с самого простого варианта. С проверки ходячего выражения: - "The trend is your friend".


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

Начнем с реверсивного варианта трендовой стратегии, при котором робот все время находится в рынке, а условия открытия позиций в каком либо направлении, например на покупку, одновременно являются условиями закрытия позиции противоположного направления, в данном случае позиций на продажу.

Тогда мы можем сформулировать логику торговых условий в следующем виде:

      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);

      Opbuy     = OpbuyTD&&OpbuyRT;
      Opsell     = OpsellTD&&OpsellRT;

Символ !  означает операцию логического отрицания (инверсии) НЕ.
Символ && - операцию логического умножения (конъюнкции) И.
Символ || - операцию логического сложения (дизъюнкции) ИЛИ.

Если все записать в явном виде для правил открытия и закрытия позиций, то получим следующие выражения:

      OpbuyTD  = (!Basic              || BT)
                 &&(!Long             || LT)
                 &&(!Medium           || MT)
                 &&(!Short            || ST)
                 &&(!Weekly           || WT);

      ClbuyTD  = (!Basic              || !BT)
                 &&(!Long             || !LT)
                 &&(!Medium           || !MT)
                 &&(!Short            || !ST)
                 &&(!Weekly           || !WT);

      OpsellTD  = (!Basic              || !BT)
                  &&(!Long             || !LT)
                  &&(!Medium           || !MT)
                  &&(!Short            || !ST)
                  &&(!Weekly           || !WT);

      ClsellTD  = (!Basic              || BT)
                  &&(!Long             || LT)
                  &&(!Medium           || MT)
                  &&(!Short            || ST)
                  &&(!Weekly           || WT);

      OpbuyRT  = (!Daily              || DT)
                 &&(!IDay             || IdT)
                 &&(!Hourly           || HT);

      ClbuyRT  = (!Daily              || !DT)
                 &&(!IDay             || !IdT)
                 &&(!Hourly           || !HT);

      OpsellRT  = (!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;

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

Параметры Basic, Long, Medium, Short, Weekly, Daily, IDay и Hourly при значении логической единицы задают при определении результирующего направления торговли режим использования основного, долгосрочного, среднесрочного, краткосрочного, недельного, дневного, внутридневного и часового трендов соответственно.

Как вы заметили, мы объединили в отдельные группы быстрые и медленные тренды. Сделано это было в свое время чисто случайно, но ничего случайного не бывает. Это решение, как потом оказалось, принесло свою пользу, причем именно такое разбиение оказалось оптимальным.

Теперь переходим к тестированию.
Для предварительного тестирования выберем короткий интервал, с 1 декабря 2019 года по 31 января 2020 года. При удовлетворительных результатах будем анализировать работу алгоритмов на более протяженных интервалах времени.
Тестируем только трендовую стратегию в реверсивном режиме. В чистом виде без стопов, правил риск-менеджмента и прочих примочек. Купили по тренду, на развороте продали и открыли встречную позицию.
Тест проводится фиксированным объемом один лот, что по инструменту EURUSD соответствует одному доллару за один пункт в пятом знаке после запятой.

Сначала протестируем стратегию по глубине учитываемых трендов от недельного до основного пп.1-5 таблицы рисунка 101.2.



Рис.101.2. Результаты теста для различной глубины учитываемых трендов.

Результат для основного тренда полностью нулевой, не было ни одной сделки. Причина видна на рисунке 101.1 - на интервале тестирования направления долгосрочного и основного тренда на интервале тестирования противоположны друг другу, что блокирует открытие позиций в любом направлении.
Ситуация улучшается с понижением глубины учитываемых трендов. Результат выходит в плюс начиная с краткосрочного тренда, но глубина просадок ниже всякой критики.
Максимум прибыли при торговле по тренду недельного цикла, потому что в диапазоне тестирования рынок находится в боковой коррекции без выраженного направления движения (рис.101.3).



Рис.101.3. Боковое движение на интервале тестирования.

Ради соблюдения формальностей проведем детальный тест варианта с недельным трендом. Отчет по тесту представлен на рисунке 101.4.



Рис.101.4. Результаты тестирования по тренду недельного цикла.

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


Результат обескураживает?
Меня не очень, я насмотрелся всякого.
Напрашивается вывод, что тренд нам вовсе не друг.  По крайней мере для выбранного инструмента и на выбранном интервале тестирования.
Как с этим жить и что делать дальше мы рассмотрим в следующей публикации. Торговую стратегию номер 101 мы не выбрасываем, мы просто будем правильно ее применять. Не в лоб, а с учетом объективных реалий и ситуации. И с учетом объективных свойств рынка.

Комментариев нет:

Отправить комментарий