Блог им. XXM

Тестирование торговых стратегий в 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 — немного, с одной стороны, но должно хватить для начала.
В качестве актива можно выбрать любую бумагу, кроме опционов.
Успехов в тестировании и поисках грааля!

4.7К | ★75
27 комментариев
Отличная статья.
А как будет смотреться стратегия пробой максимума из 5 свечей?
avatar
Александр, открытие позиций:

OpenLong = {Close} > {High, 5-1}
OpenShort = {Close} < {Low, 5-1}
---------
закрытие — можно простые:

StopLoss = 3%
TakeProfit = 10.0%, 1.0%, 0.2%

avatar
XXM, Отлично и просто. Спасибо. Все вещи простые не надо придумывать лишнего)).
avatar
XXM, Вопрос по поводу Вашего привода SuperScalp.
Есть одна проблема. Каждый раз при перезапуске Quik не сохраняется положение и размеры таблицы на экране. Их приходится каждый раз настраивать. Если возможно, сделайте  в новой версии, чтобы настройки положения и размера таблицы сохранялись после перезапуска quik. Спасибо.
avatar
vito2000, http://smart-lab.ru/blog/314812.php#comment5408536
Исправьте строку «SetWindowPos(t, 0, 100, 250, 120)» так, как вам будет удобно.

Механизм сохранения положения таблицы во внешнем INI-файле применен в моих Lbot-программах.

xy = 0, 0, 770, 133
top, left, width, height — расположение и размер таблицы робота в QUIK;



avatar
Все хорошо, запятую в ссылках на первые части уберите, переходит на неизвестную страницу.
avatar
Ссылки на первые две части не рабочие (
avatar
да… не работают ссылки=((
avatar
INTELLEKTTRADE, все из-за запятой в конце ссылки уберите ее)
avatar
Побольше бы подобных статей на сл!!!
avatar
valo, согласен: раз в год, хотя бы, один из 10 смарт-лабовцев что-то «подобное». Уже 10 статей в день!!! Читать не перечитать :)
avatar
XXM, почему то не в разделе Алготрейдинг статья. В чем причина?
avatar
valo, чесслово, две попытки сделал  - «не шмогла»
В третий раз, похоже, получилось: тэг «алготрейдинг» был с ошибкой.
avatar
Ссылки на предыдущие посты поправил — запятые убрал.
Сорри, как принято писать в подобных случаях, за причененные неудобства в виде битых ссылок.
avatar
давненько не видел я блок-схем.вспомнилась молодость, институт)))
весь тест ломается, когда доходит до пустой свечи. т.е. Если стратегия использует скажем доп исторические данные, которые создают разрывы в графике цены, то всё, кирдык. )
avatar
Пришлите на почту подробности «ломания»: ini-файл, csv-протокол, скриншот с графиком инструмента и изображение этого, э-э-э, который «всё».
avatar
XXM, тестер тож сломался недавно, перестал запускаться вообще, наверное ограничение пробного периода
avatar
«тестер тож сломался недавно» — в чем это выразилось?
Пришлите скриншот на e-почту. Адрес тут: http://www.xsharp.ru/contacts
Посмотрите протокол работы - LbotTest.csv в каталоге «log». Что там написано? А может этот файл блокирован для записи каким-нибудь ECXEL-ем?
Причин много, почему «перестал запускаться вообще». Вы главное — не отчаивайтесь и не сдавайтесь.
avatar
XXM, системное сообщение квика «Время вышло...»
avatar
Павел Валин, скриншота жалко, да? ;)
Вы, скорее всего, запускаете прошлогоднюю программу.
Какая там версия? Сегодняшняя — в http://www.xsharp.ru/tester — 1.73

avatar
XXM, ыыыыыы, сейчас скачаю
не жалко конечно, я буду только рад если вы устраните эти недочеты, правда пока купить всё равно не смогу ( дороговато для меня, но тестами помогу!!!
avatar
XXM, 
avatar
Павел Валин, 
1. Про какое «дороговато» вы говорите? Тестером я не торгую. Он не продается! ;)
2. Отрицательный результат — уже результат! 
3. Незаданный ваш вопрос — а почему так? Целых минус 71199?
Ответ ищите в у себя в LbotTest.csv.
Если бы вы увидели ошибки при прогоне 17 стратегий, которые приведены тут в примерах или в наборе с тестером на часовиках Сбер ОА, я, скорее всего, смог бы подсказать.
А тут — увы.
avatar
XXM, вы видите разрыв цены? вот в этот момент тестер теряет позицию, и при след сигнале лонг скажем, если смотреть на этит график, будет открыта новая позиция, а стараю посчитается как убыток в 71000, т.к. нет свечи в графике.

avatar
[Si_A1]
Security = SiM6, SPBFUT, SiPrice, A1
WorkSize = 1
OpenSlippage = 10
OpenLong = cross(Close, par_sar)
OpenShort = cross(par_sar, Close)
StopLoss = 500
TakeProfit = 1000, 50, 50
AutoBot = Y
Только что соорудил и запустил. SiM6, минутки, параболик.
©«Нет никакого разрыва!»
И результат, в общем, очень даже ничего.
Возможно, у вас какие-то особые условия, не хотите светить ;)
Тут уж, вслепую, я вам не смогу помочь.
avatar
Вот до чего людей доводят, в квиковские таблички кликать — жесть какая… )
avatar

Читайте на SMART-LAB:
Фото
Как мы участвовали в сторонних первичных размещениях облигаций
👉 Наш канал в MAX 👈 👉 Чат Иволги в MAX 👈 Иволга – сама организатор, правда, только ВДО. И размещенные с нашим участием...
Фото
#MGKL: Купонные выплаты по облигациям за апрель — почти 130 млн ₽
✨ В апреле ПАО «МГКЛ» в срок и в полном объёме исполнило обязательства перед инвесторами. На купонные выплаты направлено почти 130 млн...
В Accent разработали сервис для оценки влияния недвижимости на портфель инвестора
Группа Accent запустила интерактивный инструмент для анализа инвестиционного портфеля. Сервис, доступный на сайте компании, позволяет оценить,...
Фото
Какой убыток мог быть у Магнита в 2025 году?
На этой неделе, вероятно, под занавес сезона годовых отчетов, свои результаты должен опубликовать Магнит. Что ждать и насколько все плохо?

теги блога XXM ☑️

....все тэги



UPDONW
Новый дизайн