Блог им. 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. Это было «хорошо»?.. 
375 | ★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

Читайте на SMART-LAB:
Акции Газпрома и НОВАТЭКа поддержал рост спроса на газ в ЕС
По данным Gas Infrastructure Europe (GIE), страны Евросоюза в конце февраля установили суточный рекорд импорта газа на фоне опустошения подземных...
Фото
Как в OsEngine создаются торговые роботы: класс BotFactory. Видео.
В этом видео разбираем, как в OsEngine создаются торговые роботы и работает класс BotFactory. Заглянем в исходный код, посмотрим где хранятся...
Инвестиции без спешки: торгуем в выходные
Рынок часто движется импульсами, и тем важнее оценивать активы без спешки, не отвлекаясь на инфошум. Для этого отлично подходят выходные дни. В...
Фото
Ростелеком. МСФО за Q4 2025г. Всё неплохо… но всё равно печально…
Компания Ростелеком опубликовала финансовые результаты за 4 квартал 2025г.: 👉Выручка — 270,5 млрд руб. (+15,6% г/г) 👉Операционные...

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

....все тэги



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