XXM
XXM личный блог
15 марта 2016, 07:57

Тестирование торговых стратегий в QUIK. Часть 3.

                                Устал руками торговать? хочешь уйти от эмоций?
                                © Мурен(а) стих 87805 

часть 1: smart-lab.ru/blog/235774.php  09 февраля 2015, 09:11

часть 2: smart-lab.ru/blog/239387.php  26 февраля 2015, 21:07

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

И направление в этом — одно: автоматизация.
Хорошо, если есть четкое понимание своего привычного метода торговли, которое приносит прибыль — ее будет легко прописать.
Неплохо, также, понимание причин своей убыточной торговли — их не следует включать в правила торговли.
И тяжелый случай, когда описание стратегии занимает час путаного рассказа или многостраничный трактат с нечеткими схемами и противоречивыми выводами.
А ведь куда проще, казалось бы: купить по некоторой цене с тем, чтобы продать дороже, или наоборот — продать с тем, чтобы откупить дешевле.
В алготорговле это звучит так: входим в позицию (лонг или шорт) и через некоторое время выходим, с прибылью или убытком.

Тестирование торговых стратегий в QUIK. Часть 3.

Определимся с терминами: OpenLong, CloseLong, OpenShort и CloseShort — открытие и закрытие лонга и шорта. Закрытие позиций может иметь дополнительные правила, например по прибыли/убыткам: TakeProfit и StopLoss.
Остается написать правила срабатывания этих событий в цифрах цен, значений индикаторов и времени, протестировать на исторических данных, подобрать параметры, при которых стратегия показывает устойчивую доходность, сделать предположение, что эти параметры с большей вероятностью принесут прибыль и запустить в торговлю!
Освоение программ теханализа для тестирования стратегий — полезное дело, но не у всех есть время для этого. QUIK же — всегда под рукой. Вот и займемся составлением правил и тестированием прямо в ней.
Скачиваем тестер: http://www.xsharp.ru/tester, устанавливаем в папку с рабочим QUIK.
Бумага, на которой будем тестировать стратегии — Сбербанк, ОА (SBER, TQBR), тайм-фрейм — один час, идентификатор — prSber.
Напишем в настроечном INI-файле:
Security = SBER, TQBR, prSber, A1
«A1» — двухзначный код этой нашей стратегии. Количество лотов — одна штука: WorkSize = 1.
Стратегия на двух скользящих средних будет описана так:
OpenLong = cross(Moving2,Moving1) (открываем лонг при пересечении скользящей средней Moving2 снизу вверх скользящую среднюю Moving1), и OpenShort = cross(Moving1,Moving2) — наоборот. Включим реверс: Reverse = Y
Добавляем на график индикаторы с идентификаторами Moving1 и Moving2 и торговая стратегия, которой присвоим имя [SB_A1], к тестам готова.

[SB_A1]
Security = SBER, TQBR, prSber, A1
WorkSize = 1
OpenLong = cross(Moving2,Moving1,1)
OpenShort = cross(Moving1,Moving2,1)
Reverse = Y

Результат с 01.01.2015: сделок — 260, результат: 41,68. График прибыли/убытков:

Тестирование торговых стратегий в QUIK. Часть 3.

Для построения графика Equity индикатор LbotEquity берет данные с файла-протокола LbotTest.csv, который создается при работе тестера.
Тайм-фрейм графика может быть любым, так же любыми могут быть параметры индикаторов MA.
Подготовим еще одну стратегию: входы те же, на но выходы другие: с тэйк-профитом и стоп-лоссом в единицах цены:
[SB_A2]
Security = SBER, TQBR, prSber, A2
WorkSize = 1
OpenLong = cross(Moving2,Moving1,1)
OpenShort = cross(Moving1,Moving2,1)
StopLoss = 2
TakeProfit = 3.0, 0.3, 0.2

Третья стратегия основана на индикаторе MACD (идентификатор — macd_Sber), реверсная:
[SB_A3]
Security = SBER, TQBR, prSber, A3
OpenLong = cross(macd_Sber.0, macd_Sber.1)
OpenShort = cross(macd_Sber.1, macd_Sber.0)
Reverse = Y

Четвертая тоже на MACD, но с тэйк-профитом и стоп-лоссом:
[SB_A4]
OpenLong = cross(macd_Sber.0, macd_Sber.1)
OpenShort = cross(macd_Sber.1, macd_Sber.0)
StopLoss = 2
TakeProfit = 5, 0.5, 0.2

Пятая — входы на MACD с применением фильтра из пары скользящих средних:
[SB_A5]
OpenLong = cross(macd_Sber.0, macd_Sber.1) and {Moving1} < {Moving2}
OpenShort = cross(macd_Sber.1, macd_Sber.0) and {Moving1} > {Moving2}
StopLoss = 1
TakeProfit = 5, 0.5, 0.2

Напишем пару стратегий, основанных на фиксированных уровнях:
[SB_A6]
Security = SBER, TQBR, prSber, A6
OpenLong = {Close} < {85}
OpenShort = {Close} >= {105}
CloseLong = {Close} >= {95}
CloseShort = {Close} <= {90}

с выходами по тэйк-профиту или стоп-лоссу:

[SB_A7]
Security = SBER, TQBR, prSber, A7
OpenLong = {Close} < {85}
OpenShort = {Close} >= {105}
StopLoss = 10
TakeProfit = 15, 1, 1

Альтернативный способ описания правил входа в позицию: по лимитированным заявкам BuyAtLimit и SellAtLimit с лимитированными выходами TakeProfitLong и TakeProfitShort (особенность конструктора Lbot3D):

[SB_A8]
Security = SBER, TQBR, prSber, A8
BuyAtLimit = if (0 == 0) then {85}
TakeProfitLong = {105}

[SB_A9]
Security = SBER, TQBR, prSber, A9
SellAtLimit = if (0 == 0) then {110}
TakeProfitShort = {90}

Подключим стратегии торговли в каналах.

В качестве примера — каналы Кёльтнера (идентификатор — Keltner_Sber), индикатор брать можно отсюда: http://smart-lab.ru/blog/315944.php

Приступим.
Лонг от нижней линии канала, продажа — по верхней, фиксированный стоп-лосс

[SB_AA]
BuyAtLimit = if (0 == 0) then {Keltner_Sber.2}
TakeProfitLong = {Keltner_Sber.1}
StopLoss = 2

Лонг от нижней линии канала, с фильтром на MACD, стоп-лосс на MACD

[SB_AB]
BuyAtLimit = if ({macd_Sber.0} > {macd_Sber.1}) then {Keltner_Sber.2}
TakeProfitLong = {Keltner_Sber.1}
StopLossLong = {macd_Sber.0} < {macd_Sber.1}

Следующая пара — аналогичная, но торговля от шорта (шорт от верхней линии канала, откуп — по нижней):
[SB_AC]
SellAtLimit = if (0 == 0) then {Keltner_Sber.1}
TakeProfitShort = {Keltner_Sber.2}
StopLoss = 2

Шорт от верхней линии канала, с фильтром на MACD
[SB_AD]
SellAtLimit = if ({macd_Sber.0} < {macd_Sber.1}) then {Keltner_Sber.1}
TakeProfitShort = {Keltner_Sber.2}
StopLossShort = {macd_Sber.0} > {macd_Sber.1}

Комбинированные стратегии лонг/шорт. Пробой каналов. Лонг при прорыве верхней линии, шорт — от нижней, со стопом 
и трейлинг-профитом:
[SB_AE]
OpenLong = {Close}>={Keltner_Sber.1}
OpenShort = {Close}<={Keltner_Sber.2}
StopLoss = 2
TakeProfit = 3.0, 0.3, 0.2

Внутри канала, на пересечениях цены и линий:
[SB_AF]
OpenLong = cross(Keltner_Sber.2,Close)
OpenShort = cross(Close,Keltner_Sber.1)
StopLoss = 2
TakeProfit = 3.0, 0.3, 0.2

Варианты безиндикаторной стратегии: 
[SB_AG]
OpenLong = {Close, 1} < {High, 2}
; цена Close предыдущей 'полной' свечи превысила High предшествующего ей бара
OpenShort = {Close, 1} > {Low, 6-2}
; цена Close предыдущей 'полной' свечи принизила Low предшествующих пяти баров
StopLoss = 2
TakeProfit = 3.0, 0.3, 0.2

Входы — на свечных комбинациях, стоп и тейк-профиты — в процентах:
[SB_AH]
OpenLong = {Close} > {Low, 5-1}
OpenShort = {Close} < {High, 5-1}
StopLoss = 2%
TakeProfit = 3.0%, 0.3%, 0.2%

Все эти стратегии могут быть протестированы двойным нажатием на одну ячейку: «ТЕСТ»

Тестирование торговых стратегий в QUIK. Часть 3.

Итак, алготорговля — это такая тема, которая любит четкие правила входа и выхода из позиций.
Вариантов — бесчисленное множество.
Ищите свои стратегии, тестируйте. 3000 свечек, которые предоставляет QUIK — немного, с одной стороны, но должно хватить для начала.
В качестве актива можно выбрать любую бумагу, кроме опционов.
Успехов в тестировании и поисках грааля!

27 Комментариев
  • Александр
    15 марта 2016, 08:39
    Отличная статья.
    А как будет смотреться стратегия пробой максимума из 5 свечей?
      • Александр
        15 марта 2016, 09:59
        XXM, Отлично и просто. Спасибо. Все вещи простые не надо придумывать лишнего)).
      • vito2000
        15 марта 2016, 12:07
        XXM, Вопрос по поводу Вашего привода SuperScalp.
        Есть одна проблема. Каждый раз при перезапуске Quik не сохраняется положение и размеры таблицы на экране. Их приходится каждый раз настраивать. Если возможно, сделайте  в новой версии, чтобы настройки положения и размера таблицы сохранялись после перезапуска quik. Спасибо.
  • MOcAChOkA
    15 марта 2016, 08:51
    Все хорошо, запятую в ссылках на первые части уберите, переходит на неизвестную страницу.
  • Dikada
    15 марта 2016, 08:52
    Ссылки на первые две части не рабочие (
  • INTELLEKTTRADE
    15 марта 2016, 08:56
    да… не работают ссылки=((
    • Александр
      15 марта 2016, 09:15
      INTELLEKTTRADE, все из-за запятой в конце ссылки уберите ее)
  • valo
    15 марта 2016, 09:23
    Побольше бы подобных статей на сл!!!
      • valo
        15 марта 2016, 09:50
        XXM, почему то не в разделе Алготрейдинг статья. В чем причина?
  • Игорь Семенов
    15 марта 2016, 09:48
    давненько не видел я блок-схем.вспомнилась молодость, институт)))
  • Павел Валин
    15 марта 2016, 11:44
    весь тест ломается, когда доходит до пустой свечи. т.е. Если стратегия использует скажем доп исторические данные, которые создают разрывы в графике цены, то всё, кирдык. )
    • Павел Валин
      15 марта 2016, 14:00
      XXM, тестер тож сломался недавно, перестал запускаться вообще, наверное ограничение пробного периода
    • Павел Валин
      15 марта 2016, 14:36
      XXM, системное сообщение квика «Время вышло...»
        • Павел Валин
          15 марта 2016, 14:48
          XXM, ыыыыыы, сейчас скачаю
          не жалко конечно, я буду только рад если вы устраните эти недочеты, правда пока купить всё равно не смогу ( дороговато для меня, но тестами помогу!!!
        • Павел Валин
          15 марта 2016, 15:28
          XXM, 
            • Павел Валин
              15 марта 2016, 16:01
              XXM, вы видите разрыв цены? вот в этот момент тестер теряет позицию, и при след сигнале лонг скажем, если смотреть на этит график, будет открыта новая позиция, а стараю посчитается как убыток в 71000, т.к. нет свечи в графике.

  • Изя 3%
    16 марта 2016, 00:28
    Вот до чего людей доводят, в квиковские таблички кликать — жесть какая… )

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн