Господа, выкладываю на всеобщее обозрение аналитического робота. Он не торгует, только анализирует. В нём реализована несложная стратегия по скользящим средним. Дополнительный индикатор — Боллинджер. Изюминка робота: встроенный тестер стратегии. Он подбирает самый прибыльный период скользящий средней: перебирает мувинги с разными периодами и выдаёт тот, при котором получена наибольшая прибыль. Этот проект мне очень интересен. Согласно вашим пожеланиям я готов разивать этого робота и данный путь исследования.
---
Сразу огорчу новичков: если робот вам посчитал, что при скользящей средней с периодом 55 вы заработали 10 000 рублей на РТС, это вовсе не означает, что вы действительно хоть что-нибудь заработаете, начав торговать на реале. Прошлый успех не гарантирует успех в будущем. Наилучший подобранный мувинг может дать сбой уже завтра, и вы начнёте терять деньги. Поэтому любителей Граалей сразу хочу охладить. Робот будет полезен разработчикам стратегий, алго-трейдерам и трейдерам, которые трезво смотрят на рынок. Мой личный опыт торговли по мувингам, «посоветованным» этим роботом является неудачным. Торговал ликвидными фьючерсами на 5-минутках на отдельном экспериментальном счёте (реальный счёт, разумеется). Каждый день запускал тестер, чтобы он показал новый самый прибыльный мувинг по результатам анализа имеющихся в КВИКе свечек. В другом роботе, который торгует по этой стратегии, обновлял периоды мувингов согласно результатам тестера. (Торгового робота я здесь не выкладываю, публикую только тестер стратегии) Итог: убыток 10% за месяц (было 35 тысяч, осталось 32 тысячи). Именно поэтому стратегия называется "
Орлёнок", а не «Орёл». Робот только учится летать :).
Так что ещё раз подчеркну:
денег здесь нет. Приглашаю трейдеров прокомментировать эту стратегию и дать советы по выводу её в прибыльную зону. Код открытый. Весь код я пометил описаниями, чтобы было понятно. (Я программист-самоучка, опытный кодер многое написал бы лучше). Буду рад, если программисты поковыряются в этом скрипте и дадут советы по его оптимизации.
По состоянию на сейчас я эту стратегию отбрасываю как неэффективную. Но ваши добрые советы будут приветствоваться! Я готов совершенствовать этого робота по мере появления интересных идей.
---
Торговать будем
фьючерсами и
акциями. Под спотовые валюты робот не оптимизирован.
---
Описание стратегии. Объяснять буду пошагово, постепенно накладывая на график новые индикаторы. Индикаторы, которые я сейчас наложу на график, нужны для наглядности. Робот все свечки берёт с сервера брокера и индикаторы считает сам, то есть ему безразлично, открыты у вас графики с индикаторами или нет.
На графиках, приведённых ниже, тайм-фрейм 5-минутный (тестер умеет работать с разными тайм-фреймами).
Индикатор №1. Скользящая средняя с длинным периодом. Это и есть мувинг, который анализируется тестером. Он перебирает разные периоды от 7 до 100 и находит тот, который даст наибольшую прибыль. Допустим, тестер посчитал, что лучший мувинг имеет период 59.
Параметры мувинга: метод Simple, поле цены Typical
Чтобы построить мувинг в виде разноцветной гистограммы как у меня, надо сделать так:
Если мувинг растёт, он будет зелёным, если падает, красным. При зелёном мувинге мы считаем тренд растущим. При красном мувинге тренд нисходящий.
Если цена выше мувинга (то есть выше гистограммы), значит она находится в
сильной позиции. Если цена ниже мувинга, значит цена в
слабой позиции.
Для входа в лонг тренд должен быть растущим (зелёная гистограмма) и цена должна быть выше мувинга (сильная позиция). Для входа в шорт тренд должен быть падающим (красная гистограмма) и цена должна быть ниже мувинга (слабая позиция). Это не единственные критерии открытия позиции. Они важные, но их не достаточно. Одновременно с этими признаками должны быть и другие, о которых я расскажу далее.
Индикатор №2. Скользящая средняя с коротким периодом (синяя). Этот период будет 5. Внутри тестера он всегда одинаковый. Предыдущий мувинг робот подбирает и даёт ответ, какой лучше: с периодом 59 или с периодом 30. Что касается короткого мувинга, то он в нашей стратегии не меняется. Период 5 для него является неизменным.
Этот мувинг является дополнительным критерием входа в рынок. Мы будем покупать только если короткий тренд идёт вверх. И будем продавать только если короткий мувинг идёт вниз. Это третий критерий открытия позиции в дополнение к первым двум. Далее будут новые критерии. Все они должны сойтись одновременно. Если не будет хотя бы одного критерия, позиция не открывается.
Индикатор № 3. Боллинджер с узкими полосами. Его период такой же как у нашего длинного мувинга: 59. Ширина полос равна 1 стандартному отклонению. Центральная линия Боллинджера — это обычная скользящая средняя. Поэтому она ровненько легла на нашу гистограмму и совпала с ней.
Предназначений у Боллинджера три.
Первое. Мы будем открывать лонг, только если цена находится внутри полос Боллинджера: там, где нарисованы прямоугольники:
Если цена выше полос Боллинджера, мы говорим: «покупать поздно, цена уже улетела вверх. Подождём следующего раза.» Это позволяет нам находить тренды в самом зародыше и избегать перегретого рынка, на котором значительная часть роста уже произошла.
Для шортов аналогично: открывать шорты можно только внутри полос Боллинджера. Если цена ниже нижней линии Боллинджера, мы новых шортов не открываем, потому что уже поздно.
Второе предназначение Боллинджера. По нему выставляются стоп-лоссы. Если вы в лонгах, то скользящий стоп следует за нижней линией Боллинджера. Позиция закрывается, если цена доходит до него.
Вот примеры, где надо закрывать лонги по стопу:
То же самое (только наоборот) для шортов. Если цена выросла до верхней линии Боллинджера, значит надо откупать шорт.
Третье предназначение Боллинджера. Совместно с коротким 5-периодным мувингом получаем ещё один критерий выхода из рынка. Вы в лонгах. Цена пошла в вашу сторону. Поднялась выше Боллинджера, но потом рост прекратился. Цена пошла вспять, короткий мувинг повернулся вниз. Значит надо выходить.
Пример:
Для шортов аналогично, только наоборот: вы в шортах. Цена упала, как вы и планировали. Но потом начала расти и короткий мувинг пошёл вверх. Значит откупаем шорт.
Пример:
Также узкий Боллинджер является важным фильтром для открытия новых позиций. Лонг НЕ ОТКРЫВАЕТСЯ, если цена недавно (5 прошедших свечек) была выше узкого Боллинджера. Вот пример, когда не следует октрывать лонг по этой причине:
Смысл этого ограничения следующий: рынок недавно был в зоне, когда цены считаются перегретыми. Сейчас цена скорее всего откатывает вниз. Значит, надо взять паузу.
То же самое для шортов:
Шорт НЕ ОТКРЫВАЕТСЯ, если цена за последние 5 свечек опускалась ниже нижнего Боллинджера.
Пример:
И последний
индикатор №4. Ещё один Боллинджер. Период у него такой же как у длинного мувинга. То есть центральная линия этого Боллинджера ляжет по уже знакомой нам линии. А вот ширина полос будет больше: 3 сигмы (т.е. 3 стандартных отклонения).
Сделаем его весёлым оранжевым цветом, потому что назначение у этого Боллинджера приятное: это тейк-профит. Самый счастливый момент торговли по этой стратегии. На верхней оранжевой линии продаём лонги, на нижней оранжевой линии откупаем шорты.
На этом изложение стратегии заканчивается. Напомню вкратце все критерии входа и выхода:
Открытие лонга происходит, если одновременно складываются следующие факторы:
1. Цена выше длинного мувинга (на графике этот мувинг — гистограмма).
2. Длинный мувинг растёт (гистограмма зелёная)
3. Короткий мувинг растёт
4. Цена внутри узкого Боллинджера.
5. Цена за последние 5 свечек не находилась выше узкого Боллинджера.
Закрытие лонга:
1. Цена дошла до скользящего стоп-лосса (нижняя линия узкого Боллинджера)
2. Цена поднялась выше узкого Боллинджера, но потом начала падать и короткий мувинг развернулся вниз.
3. Цена дошла до тейк-профита, то есть до широкого оранжевого Боллинджера
4. Если мы торгуем на младших таймфреймах, например на 5-минутке, то надо закрываться в конце дня. Робот-тестер это умеет. Младшие тайм-фреймы — это те, которые меньше часовика.
Открытие шорта происходит при одновременном наличии следующих факторов:
1. Цена ниже длинного мувинга.
2. Длинный мувинг падает (гистограмма красная).
3. Короткий мувинг падает.
4. Цена внутри узкого Боллинджера
5. За последние 5 свечек цена не была ниже узкого Боллинджера
Закрытие шорта:
1. Цена дошла до скользящего стоп-лосса (верхняя линия узкого Боллинджера)
2. Цена упала ниже узкого Боллинджера, но потом начала расти и короткий мувинг повернул вверх.
3. Цена дошла до тейк-профита, то есть до нижнего оранжевого Боллинджера.
4. Настал конец дня, если торгуем на младшем тайм-фрейме.
---
Переходим к роботу.
Скачать его можно здесь:
https://yadi.sk/d/kfa8opCq3WmRTR
Он состоит из 2 файлов:
В КВИКе нужно запускать
orlenok tester.lua Делается это так: Сервис=>Lua-скрипты=>Добавить=>Запустить.
Соседний файл Bollinger.lua сам подключится в работу. С его помощью рассчитываются линии индикаторов. С ним не нужно ничего делать, лишь бы он лежал рядом с основным файлом.
---
Задача робота — подобрать период длинного мувинга. Для этого он прочёсывает свечки слева направо. Начинает с мувинга с периодом 10 и заканчивает мувингом с периодом 100. С чего начинать и чем заканчивать вы можете выбирать сами. Это делается здесь в файле
orlenok tester.lua:
Код сопровождается моими многочисленными комментариями, чтобы было удобнее разобраться что там происходит.
Результаты выводятся в таблицу сообщений. Её можно открыть в КВИКе таким способом:
Создать окно=>Все типы окон=>раздел Прочее — Таблица сообщений:
Вот какие значения выводятся роботом в эту таблицу:
Расшифрую что это значит. Ну, к примеру, первая строчка (№261):
Инструмент EuM8 (фьюч евро-рубль). При длинном мувинге с периодом 40 было заключено 44 сделки. Результат в рублях 982.21. Соотношение числа лосёвых сделок к прибыльным равно 0.52 (лосёвых примерно половина по сравнению с прибыльными). Это хороший результат. Поэтому написано GOOD! Убыток лосёвых сделок относится к прибыли удачных сделок как 0.6. Это хороший результат, поэтому справа ещё одно слово GOOD! Чтобы робот одобрил этот мувинг, надо чтобы было два раза GOOD! Иначе он его забракует, даже если там будет показана максимальная прибыль.
Фильтр какое соотношение хорошее, а какое плохое задаётся здесь:
Продолжаем читать что нам пишет робот.
Строка № 264. Найден период мувинга, давший наибольшую прибыль 1472.52 рубля. Этот период 43. Следующая строчка (фиолетовая) расшифровывает это более детально: количество лонгов 19, количество шортов 28, убыточных сделок 21 штука. (Но убытки не помешали получить максимальную прибыль)
После этой строчки поиск продолжается. Возможно, будут найдены новые мувинги с прибылью выше, чем эта.
Перебор мувингов по евро-рублю подходит к концу. Строка №283 говорит, что мувинг с периодом 43 дал рекордную прибыль 1472.52 рубля. Не считайте это победой. Реальная торговля с этим параметром будет неудачной (личный опыт).
После этого он выдаёт список сделок, заключённых при торговле с наилучшим мувингом.
Тут всё просто и легко догадаться где открытие позиции, где закрытие. Указаны дата и время. Дата в формате ГГГГ-ММ-ДД. Если тайм-фрейм дневки-недельки-месяцы, то время будет равно 0. Расшифровка подписи надеюсь интуитивно понятна (дата, время, цена, результат по текущей сделке за 1 единицу актива в валюте актива, результат накопленный в рублях с учётом комиссии). В конце там где true/false показано, какой критерий сработал: у него значок
true. В данном случае позиция закрылась по критерию end (конец дня). Другие критерии:
sl — стоп лосс по узкому боллинджеру,
tp — тейк профит по широкому боллинджеру,
reverse — разворот короткого мувинга после подъёма выше узкого боллинджера.
Эти же сделки будут нанесены на график. Чтобы робот мог рисовать метки на графике, на него нужно нанести идентификатор. Идентификатором служит тикер инструмента.
Сделки отмечены звёздочками. Покупки зелёные, продажи красные.
Внутри кода можно менять цвет метки и её символ:
Коды цветов можно взять
здесь:
Если навести курсор на звёздочку, будет показана подпись сделки:
Не забудьте на графике руками поставить тот период индикаторов (длинный мувинг и оба Боллинджера), которые посоветовал робот. Это позволит вам осознанно смотреть на нарисованные точки с пониманием того, почему была заключена сделка. Напомню, что в Боллинджере центральная линия — это и есть наш длинный мувинг.
Важно! Значки входа-выхода рисуются слева от свечи, на которой произошло это событие. То есть метки рисуются рядом со свечкой, а не ровно на ней.
Если робот не нашёл ни одного хорошего мувинга, он выдаст грустное сообщение:
SBER vse muvingi ploxie. При этом может попадаться много прибыльных мувингов, но возле них всё равно стоят значки BAD! BAD! Или GOOD! BAD! А должно быть GOOD! GOOD!
В конце работы скрипта будут выведены все подобранные мувинги. Если хорошего мувинга не нашлось, будет написано как здесь: GZM8=NO.
У меня таблица сообщений разноцветная, потому что я настроил в ней подсветку вот так:
Попутно эти параметры запишутся в файлик
orlenok_result.txt, лежащий в той же папке.
---
Файл робота
orlenok tester.lua открывается блокнотом. Я пользуюсь Notepad++. В самом начале кода указаны параметры, которые могут меняться пользователем на своё усмотрение, например тикер лист — перечень анализируемых бумаг:
ticker_list={«BRN8»,«EDM8»,«EuM8»,«GDM8»,«GZM8»,«MXM8»,«RIM8»,«SiM8»,«SRM8»,«SBER»}
Писать нужно с таким синтаксисом как у меня: в фигурных скобках, через запятую, каждый тикер в кавычках.
Также там можно делать другие гибкие настройки. Если надо добавить какую-то опцию, и совет будет разумным, пишите, я добавлю.
В файле настроек можно менять:
1) Дату, с которой начинать сделки. Она работает только для фьючерсов. Позволяет игнорировать кривые графики, которые были во времена неликвидности фьючерса. По акциям этот параметр не используется. Если вы торгуете только акциями, не трогайте эту строчку вообще.
2) Тайм-фрейм, например INTERVAL_H1. Полный список тайм-фреймов можно взять в мануале КВИКа по языку Луа. Это файлик QLUA.chm в папке с КВИКом.
3) Соотношение плохих сделок к хорошим в штуках, соотношение лосей к профитам в рублях. Это параметры, которые робот оценивает как GOOD! или BAD! Если убыточных сделок много, робот забракует мувинг, даже если он принесёт прибыль.
4) Минимально допустимое количество сделок. По умолчанию должно быть минимум 10 сделок. Если сгенерировалось меньше 10 сделок, значит выборка признаётся нерепрезентативной и игнорируется.
5) Также настраивается ширина узкого и широкого Боллинджера в сигмах (сигма-это стандартное отклонение).
6) Период короткого мувинга.
7) С какого значения по какое делать перебор длинного мувинга. По умолчанию он подбирается от 7 периода до 100-го. Ищется лучший из них.
8) Задаётся комиссия вашего брокера на споте и срочке.
---
Пути к улучшению стратегии, которые приходят мне в голову:
1. Самый очевидный недостаток тестера: в КВИКе мало истории. Поэтому результаты получаются не репрезентативными. Надо тянуть графики с Финама, но я пока не научился это делать.
2. Торговать на более крупном тайм-фрейме. Мои тесты проходили на 5-минутках. Это скальперский тайм-фрейм. Может быть, на часовике меня ждала бы удача. Чем выше тайм-фрейм, тем лучше работает теханализ.
3. Раньше это было в коде, но сейчас я убрал:
фильтр шума. Если мувинг часто меняет направление, значит на рынке «пила». Тренда нет. Торговать нельзя. На графике это видно как частая смена цвета с красного на зелёный, с зелёного на красный и так много раз. Если мувинг поменял направление больше 5 раз за последние (к примеру) 60 периодов, значит новых позиций открывать нельзя. Вернуть этот критерий в код или не возвращать, для меня не очевидно.
Надеюсь, этот пост будет вам полезен.
---
Мой поход в крымские горы. Встреча с зайцем!
Давно уже.
p.s. Причём интервал не важен. С этими параметрами мувинги работают НА ЛЮБОМ ТАЙМЕ. У меня обычно Н1 и Д1, но и на М1 изредка поглядываю.
Только не факт что биржа даст много забрать нахаляву)
Потом поценю
2. Вместо средних нужно брать КАМА. Это улучшит результаты всех тестов. Однако всё равно не позволит быть всегда в выигрыше. Только на отдельных инструментах в отдельные периоды.
Но поверьте, если туда прикрутить мани менеджмент, оно начнет работать. По тому что оно работает вообще не зависимо от точек входа. Вы ищите грааль?
Так вот, вы можете мне вообще говорить где покупать или продавать, где угодно на графике, пальцам в небо.
И поверьте, буду в плюсе, за счет мани менеджмента, соблюдения рисков!
Но она не работает, потому что в будущем успех не повторяется.
Albus, так я говорю, попробуй ничего не перебирать. Поставь жёстко 21 смусед мувинг в качестве быстрого, 144 или 233 мувинг в качестве медленного. И ты офигеть как удивишься результатам. Только вот в квике смусед какой-то странный, у меня он чистой воды симпл там. Если ставить WMA — то реально как Smoothed :) Я работаю через метатрейдер. Если хочешь просто посмотреть результаты — на tradingview посмотри хорошие волатильные бумаги и фьючерсы с этими параметрами. Периоды Н1, Д1. На нефти большую часть времени идеально работает М1.
И работает уже очень давно и в прошлом и в будущем :) Я не умею это всё автоматизировать, потому что нужны фильтры входа, такие как:
— не торговать на новостях
— смотреть объёмы пробития мувинга и импульсность
— смотреть как на откате задержались у мувинга
и т.д. Я просто не знаю, как это алгоритмизировать.