Блог им. t-trade

Пост шестой. О том, как тестировать стратегии используя сразу несколько графиков одновременно

Этот топик о том, как искать условия для входа на одном графике, торгуя при этом на другом. Также здесь я покажу, как открывать позицию в программе Multicharts не «по рынку», а по стопу или по лимитному ордеру.
 
Использование нескольких графиков одновременно – это может быть как один инструмент с несколькими открытыми таймфреймами, так и несколько инструментов. Например, можно торговать расхождение Си и Ри. Или смотреть на Америку, торгуя Россию. Правда, во втором случае, придется попариться с первоначальными настройками инструментов – так, чтобы разное время свечек американских инструментов и российских совпадали по моменту, когда они реально торгуются. Для этого в настройках биржи и инструментов указываются часовые пояса, правила перехода на летнее/зимнее время. А поскольку наш любимый МирДверьМяч отменил перевод часов, делать всё автоматически сложно. Наверное. Скажу честно – сам я никогда этим не занимался. Когда будет необходимость – буду постигать. А пока что мне хватает сравнения разных инструментов на одной площадке.


 
Сегодня я покажу вам использование разных графиков на примере двух разных таймфреймов. Дневки и минутки.
 
Допустим, мы хотим покупать при пробое хая предыдущего дня, а продавать при пробое лоу предыдущего дня. Можно и на минутках с помощью моих любимых динамических переменных сделать так, чтобы и анализ и торговля происходили на одном графике.
 
А можно ту же задачу выполнить по-другому, используя для анализа таймфрейм «день», а для торговли – таймфрейм «минута». Откроем наш минутный график. Это будет основной. И добавим на рабочий стол ещё один. Для этого на графике Правой кнопкой Мыши -> Insert Instrument, выбираем необходимый нам РТС, ставим 1 day таймфрейм, выбираем японские свечи для отображение и нажимаем ОК. (как настраивать график я уже рассказывал тут)
 
Мультичартс автоматически присвоил новому графику название data2. Если в коде указывать номер данных, Multicharts будет это учитывать. А по умолчанию все действия производятся на Data1. В данном случае – это минутки у нас.
 
Вот так выглядит рабочий стол теперь. Обратите внимание: дневная свеча рисуется в 23:50, тогда как минутки заканчиваются в 23:49 того же дня. Это из-за того, что в настройках бирже end of session был указан в 23:50. Что ж, сейчас это только на руку.
 
 Пост шестой. О том, как тестировать стратегии используя сразу несколько графиков одновременно
 
Теперь всё просто. Берем и пишем код, указывая в нужных местах обращение к данным графика data2.
 
Введем variables: buylevel(1000000000), selllevel(0);
 
Значения по умолчанию я такие указал для того, чтобы на первом дне на минутном графике не происходило никаких сделок, потому что в этот момент ещё не посчитаны уровни предыдущего дня (т.к. не было ещё никакого предыдущего дня).
 
Если время на графике data2=2350, тогда начнем считать уровни:
 
If time of data2=2350 then begin
buylevel=High of data2;
selllevel=low of data2;
end;
 
Уровни готовы. Пора вводить условие на вход.
 
Сейчас мы будем использовать новый для этой серии постов метод входа в позицию – по стопу. Вообще существует несколько типов заявок – «по рынку», стоп заявка, лимитная заявка. «По рынку» в программе бэктестирования реализуется входом по закрытию текущей свечи, либо по открытию следующей. Есть ещё заявка next bar at Market – используется для реальной торговли. При бэкстировании соответствует цене открытия обычно.
 
Стоп заявка исполняется при достижении цены определенного уровня в сторону движения цены. То есть, если надо купить по цене 150 или выше, то используется стоп заявка. Цена растет: 148, 149, достигает уровня 150 – и происходит покупка «на пробой», что называется. Этот тип заявок можно использовать как для открытия новых, так и для закрытия по стоп-лоссу уже открытых позиций.
 
Лимитная заявка – это уровень, не выше которого должна произойти покупка. То есть если лимит 150, и цена опускается 155, 153, 151 – покупка произойдет только в том случае, если цена достигнет 150. И ниже 150 не пойдет до тех пор, пока не будет целиком исполнена ваша заявка (в реальных рыночных условиях).
 
Ещё раз: если мы играем «на пробой», на продолжение тенденции – тогда используется stop заявка. Если идет работа «на отскок», то используется limit заявка.
 
Запишем условие покупки по уровню хай предыдущего дня:
 
If time>=1000 and time<2349 then begin
buy next bar at buylevel stop;
sell short next bar at selllevel stop;
end;
 
Выход будет происходить просто в 2349. И сразу после этого будет производиться расчет новых уровней на следующий день.
 
Код целиком:
 
Vars:
buylevel(1000000000),
selllevel(0);
 
If time of data2=2350 then begin
buylevel=High of data2;
selllevel=low of data2;
end;
 
If time>=1000 and time<2349 then begin
buy next bar at buylevel stop;
sell short next bar at selllevel stop;
end;
 
If time=2349 then begin
sell this bar close;
buy to cover this bar close;
end;
 
Всё. Теперь все данные берутся из графика дневок, а торговля идет на минутках.
 
Точно также можно использовать разные инструменты. Можно дожидаться сигнала на разных таймфреймах (использование стратегий типа «три экрана»).
 
В данном коде не предусмотрено много моментов. Например, если рынок откроется сильным гэпом вниз, то произойдет продажа не на пробое уровня, а сильно ниже его. Или если вы введете стопы, то при «болтанке» около уровня пробоя будет постоянно «выносить по стопу» и снова входить в позицию в течение одного дня…
 
Подобные моменты легко выявляются в процессе тестирования. Вы пишете код, вешаете его на график и смотрите сделки. Понимаете, что что-то не то. Устраняете неточности и ошибки. Думаете, какие ещё могут возникнуть проблемы, чего вы не учли.
 
В принципе, если вы прочитали все мои посты из этой серии, вы уже можете создавать свои системы. И уже имеете необходимую почву для того, чтобы освоить язык. Я в свое время многое дал бы за то, чтобы кто-нибудь показал мне эту дорогу.
 
Но ещё больше я отдал бы человеку, который избавил бы меня от шишек и синяков при более детальном изучении языка программирования и этой деятельности в целом. Дорого бы я заплатил за правильный взгляд на рынок. За сэкономленные годы бессистемной торговли. За избавление от иллюзий граальности некоторых индикаторов и методов торговли.
 
Где-то я видел формулу: деньги-время-опыт. Кажется, как-то так. Вы можете выиграть время, если у вас есть деньги и опыт решения проблем. Вы можете заработать деньги, если некоторое время будете использовать свой опыт. И, наконец, для того, чтобы получить опыт, знания – нужно потратить либо немало времени, либо деньги.
 
Я дал вам хороший старт для того, чтобы вы смогли получить необходимые знания и опыт. Всё есть в интернете, всё можно изучить со временем. Да и я буду продолжать выкладывать материалы по мере их написания, хотя уже и не так активно, как последний месяц – тут у меня с лета накопилось «неопубликованного», что называется.
 
Но если вы хотите сэкономить время, стать крутым профессионалом своего дела, приобрести знания и опыт, на поиски которых я потратил больше 8 лет своей жизни, занимаясь инвестициями с различной степенью интенсивности – то мой курс точно для вас.
 
В этих статьях я просто рассказываю о конкретных ситуациях, объясняя в лучшем случае примером. При живом общении же я не отстану от вас до тех пор, пока вы не поймете сказанное, не научитесь видеть все возможные ошибки, не постигнете всех тонкостей проганья, о которых известно мне:)
 
Будьте честны сами с собой прежде всего. Не переставайте учиться. И stay tuned, как говорится:)
 
Для тех, кто только что подключился, рассказываю. Серия постов:
 
1. Установка и настройка программы Multicharts.
2. Основы кодинга, структура кода.
3. Исправление ошибок. Дата и время. Проскальзывание.
4. Основы оптимизации и практические примеры в Multicharts.
5. Динамические переменные.
6. Использование нескольких таймфреймов одновременно.
7. Использование мультипозиционных систем.
8. Настройка программы Multicharts, часть 2, атака роботов.
9. Что-нибудь ещё придумаю. Примеры кусков кодов, разбор словаря с наиболее полезными функциями.

 
Профитов!


P.S. Это было «хорошо»?.. 
★16
9 комментариев
а где про Герчика и МММ? Автор обманщик!
avatar
GHJK, ;)
GHJK,

Видишь Герчика? — Нет — И я не вижу. А он есть. ©

avatar
GHJK, про 1000% не спросил… скромняга.
Владимир Спицын, :D
avatar
ужасный синтаксис языка =(
avatar
дорогущая платформа, мне кажется мало кто из здесь сидящих ее пользует
avatar
Тоже самое в .Net версии — просто обращаемся к барам с другого фрейма: вместа Bars.Close пишем BarsOfdata(2).Close. Аналогично в коде можно рассчитывать любую функцию по соседним чартам. Причем не обязательно чтобы инструменты на разных графиках были одинаковые. Аналогичную вещь можно сделать в portfolio backtester. В принципе вся информация по этому есть в мануале. Просто до элементарности.
avatar
>> Также здесь я покажу, как открывать позицию в программе Multicharts не «по рынку»

Сам MultiCharts можно взять здесь: http://getanyplatform.com
avatar

теги блога Иван Коваль-Зайцев

....все тэги



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