Блог им. XXM
Устал руками торговать? хочешь уйти от эмоций?
© Мурен(а) стих 87805
Всякий трейдер рано или поздно осознает необходимость облегчить себе путь к прибыльной торговле.
И направление в этом — одно: автоматизация.
Хорошо, если есть четкое понимание своего привычного метода торговли, которое приносит прибыль — ее будет легко прописать.
Неплохо, также, понимание причин своей убыточной торговли — их не следует включать в правила торговли.
И тяжелый случай, когда описание стратегии занимает час путаного рассказа или многостраничный трактат с нечеткими схемами и противоречивыми выводами.
А ведь куда проще, казалось бы: купить по некоторой цене с тем, чтобы продать дороже, или наоборот — продать с тем, чтобы откупить дешевле.
В алготорговле это звучит так: входим в позицию (лонг или шорт) и через некоторое время выходим, с прибылью или убытком.
Определимся с терминами: 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], к тестам готова.
Результат с 01.01.2015: сделок — 260, результат: 41,68. График прибыли/убытков:
Для построения графика 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%
Все эти стратегии могут быть протестированы двойным нажатием на одну ячейку: «ТЕСТ»
Итак, алготорговля — это такая тема, которая любит четкие правила входа и выхода из позиций.
Вариантов — бесчисленное множество.
Ищите свои стратегии, тестируйте. 3000 свечек, которые предоставляет QUIK — немного, с одной стороны, но должно хватить для начала.
В качестве актива можно выбрать любую бумагу, кроме опционов.
Успехов в тестировании и поисках грааля!
А как будет смотреться стратегия пробой максимума из 5 свечей?
OpenLong = {Close} > {High, 5-1}
OpenShort = {Close} < {Low, 5-1}
---------
закрытие — можно простые:
StopLoss = 3%
TakeProfit = 10.0%, 1.0%, 0.2%
Есть одна проблема. Каждый раз при перезапуске Quik не сохраняется положение и размеры таблицы на экране. Их приходится каждый раз настраивать. Если возможно, сделайте в новой версии, чтобы настройки положения и размера таблицы сохранялись после перезапуска quik. Спасибо.
Механизм сохранения положения таблицы во внешнем INI-файле применен в моих Lbot-программах.
В третий раз, похоже, получилось: тэг «алготрейдинг» был с ошибкой.
Сорри, как принято писать в подобных случаях, за причененные неудобства в виде битых ссылок.
Пришлите скриншот на e-почту. Адрес тут: http://www.xsharp.ru/contacts
Посмотрите протокол работы - LbotTest.csv в каталоге «log». Что там написано? А может этот файл блокирован для записи каким-нибудь ECXEL-ем?
Причин много, почему «перестал запускаться вообще». Вы главное — не отчаивайтесь и не сдавайтесь.
Вы, скорее всего, запускаете прошлогоднюю программу.
Какая там версия? Сегодняшняя — в http://www.xsharp.ru/tester — 1.73
не жалко конечно, я буду только рад если вы устраните эти недочеты, правда пока купить всё равно не смогу ( дороговато для меня, но тестами помогу!!!
1. Про какое «дороговато» вы говорите? Тестером я не торгую. Он не продается! ;)
2. Отрицательный результат — уже результат!
3. Незаданный ваш вопрос — а почему так? Целых минус 71199?
Ответ ищите в у себя в LbotTest.csv.
Если бы вы увидели ошибки при прогоне 17 стратегий, которые приведены тут в примерах или в наборе с тестером на часовиках Сбер ОА, я, скорее всего, смог бы подсказать.
А тут — увы.
©«Нет никакого разрыва!»
И результат, в общем, очень даже ничего.
Возможно, у вас какие-то особые условия, не хотите светить ;)
Тут уж, вслепую, я вам не смогу помочь.