English 中文 Español Deutsch 日本語 Português
Новый взгляд на эквиобъемные графики

Новый взгляд на эквиобъемные графики

MetaTrader 4Примеры | 15 января 2008, 13:00
7 827 43
Andrey Khatimlianskii
Andrey Khatimlianskii

Введение

Идея учитывать объемы при построении графика цены, насколько мне известно, была высказана еще в 1971 году Ричардом Армсом младшим (Richard W., Jr. Arms) в книге "Profits in Volume, Equivolume Charting". Бары на графиках, построенных по его методу, имели различную ширину - чем больше объем, тем шире бар.

рис.1 Пример эквиобъемного графика

Действительно, технический анализ - особенно применительно к фондовому рынку - учитывает не только цену, но и объемы торгов. Существует множество индикаторов и методов прогнозирования, основывающихся именно на анализе объемов. В дополнение к ним, как уже было сказано, были созданы эквиобъемные графики.

В условиях рынка Forex, где информации о реальных объемах сделок у трейдера нет, польза от эквиобъемных графиков весьма сомнительна. Как и многие другие методы технического анализа, анализ объемов не имеет такой отдачи, как на фондовом рынке несколько десятилетий назад. Но это ни в коем случае не может стать на пути у "пытливых умов", продолжающих искать закономерности, с помощью которых можно зарабатывать на этом неспокойном и постоянно меняющемся рынке.

Цель данной статьи - добавить в арсенал терминала MetaTrader 4 еще один инструмент - эквиобъемные графики. Сразу оговорюсь, что реализованная эквиобъемность отличается от описанной Ричардом Армсом - у нас она будет заключаться в уравновешивании баров путем составления их из одинакового количества тиков. Таким образом, бар будет измеряться не временем (количеством минут), а количеством изменений цены.


Этап первый - сбор тиков

Для начала нам необходимо собрать тиковую историю - именно из нее мы будем строить наши графики. Было бы непрактичным и недальновидным делать "исключительно онлайновый" график - таким образом была бы потеряна возможность анализировать историю. Поэтому первым этапом реализации эквиобъемных графиков я вижу именно сбор тиков.

Все, что для этого надо сделать - скачать и запустить Сборщик тиков (TickSave). Эксперт будет сохранять тики по всем необходимым инструментам в csv-файлы. Из них и будет брать информацию наш "построитель графиков".

К сожалению, далеко не у всех есть возможность держать постоянно включенный (и подключенный к интернету) компьютер с запущенным сборщиком тиков. Я не хочу закрывать глаза на эту проблему, поэтому попробую предложить вариант ее решения. Естественно, полноценных обновляемых графиков с актуальной информацией получить не удастся, но, по крайней мере, будет возможность анализировать графики, обновляемые вручную.

Итак, чтоб построить эквиобъемный график, не имея тиков, необходимо:

  • скачать тиковую историю по необходимому инструменту с одного из бесплатных источников (например, gaincapital.com или fin-rus.com);
  • привести ее в понятный для эксперта формат - "ГГГГ.ММ.ДД ЧЧ:ММ:СС;Бид" (вручную или специальной программой-конвертером (возможно, я ее напишу чуть позже));
  • сохранить файл(-ы) с тиками в необходимую директорию - "путь_к_терминалу\experts\files\[Ticks]\Имя сервера\";
  • и переименовать их в соответствии с шаблоном - "Символ_Год. Месяц. csv".

Можно поместить тики за несколько месяцев (лет) в один файл, например, "EURUSD_2008.01.csv". Пусть вас не смущает что дата, указанная в имени файла, не соответствует содержимому - имя необходимо только для того, чтоб "построитель графиков" нашел этот файл.

После всех этих манипуляций можно считать, что тиковая история у вас есть. А как ее использовать - мы узнаем в следующей главе.



Этап второй - построение графика

Теперь, когда у нас есть "строительный материал", можем приступать к "строительству" графиков.

Это не намного сложнее, чем наладка сборки тиков:

  • Скачайте эксперта EqualVolumeBars в директорию "MetaTrader 4\experts", откройте и скомпилируйте (F5).
  • Откройте график того финансового инструмента, по которому хотите построить эквиобъемный график (и по которому есть тики). Период графика значения не имеет.
  • Запустите эксперта на открытом графике, указав необходимые значения внешним переменным:
  • TicksInBar - количество тиков в баре;
  • StartYear и StartMonth - год и месяц, с которых начинается ваша тиковая история (используется при поиске файлов);
  • Дождитесь появления сообщений в журнале (на закладке "Эксперты"):
2008.01.11 02:22:13 EqualVolumeBars EURUSD,M5: < - - - Обработано тиков: xxxxx, построено полных баров: xxxxx - - - >
2008.01.11 02:22:13 EqualVolumeBars EURUSD,M5: < - - - Для просмотра результатов откройте график "!EqvEURUSDn" - - - >
  • Наконец, откройте указанный в сообщении файл (вместо последней n будет значение TicksInBar) с помощью команды "Открыть автономно" меню "Файл".


Результат

Результатом работы советника является постоянно обновляемый нестандартный файл истории. После открытия графика эксперт обновляет и его, то есть с ним можно работать как с обычным графиком (за некоторыми исключениями) - новые котировки отображаются автоматически.

Для демонстрации результата я скачал тиковую историю с gaincapital.com (собранной собственноручно у меня, к сожалению, нет). Форматирование и объединение в файлы заняло не больше 20 минут. Вы может скачать готовые для использования архивы тиков - ссылки в конце статьи. Останется только сохранить их в необходимые директории.

Ниже представлены эквиобъемные графики EURUSD за ноябрь и декабрь. "Период" графиков (количество тиков в баре) выбирался произвольно, цифры не основаны на анализе среднего количества тиков за определенный период или на каких-то других данных. Данная статья не ставила целью разработку метода выбора "периода" графиков или способов анализа полученной информации, решалась исключительно приземленная задача - сделать инструмент.

Результат вы можете наблюдать на графиках приведенных ниже либо, произведя некоторые манипуляции, в своем терминале.


рис.2 Эквиобъемный график. В одном баре - 5 тиков.



рис.3 Эквиобъемный график. В одном баре - 10 тиков.



рис.4 Эквиобъемный график. В одном баре - 25 тиков.



рис.5 Эквиобъемный график. В одном баре - 50 тиков.




рис.6 Эквиобъемный график. В одном баре - 100 тиков.



рис.7 Эквиобъемный график. В одном баре - 250 тиков.



рис.8 Эквиобъемный график. В одном баре - 500 тиков.



рис.9 Эквиобъемный график. В одном баре - 1000 тиков.


Как вы уже, наверное, догадались, установив переменной TicksInBar значение 1, можно получить тиковый график - в одном баре будет всего один тик:


рис.10 Эквиобъемный график. В одном баре - 1 тик.

Важно, что описанная система предусматривает как отображение, так и хранение тиков. Таким образом, тиковый график становится полноправным инструментом в руках трейдера.



Особенности эксперта EqualVolumeBars

Работая с файлами истории, я неоднократно натыкался на некоторые "особенности", не позволяющие получить желаемый результат прямым путем. К сожалению, формат файлов hst не достаточно документирован, а алгоритмы проверки файлов истории терминалом и вовсе не озвучены. Приходилось осваивать эту тему "методом тыка" - одним из самых популярных в нашей стране.

В процессе разработки и тестирования советника EqualVolumeBars был обнаружен один из критериев проверки файлов истории. Заключается он в том, что на графике не может быть двух баров с одинаковым временем. При работе с тиками (особенно при малых значениях переменной TicksInBar) нередко получалось несколько баров с одинаковым временем. Проблема была решена просто - время, записываемое в создаваемый файл (и, соответственно, отображаемое на графике) моделировалось. Поскольку правдивость отображаемого времени свелась к 0, я сделал его вообще условным - на всех сгенерированных графиках отсчет начинается с 00:00 01.01.1970, а каждый новый бар представляет следующую минуту. Выходные и праздники при этом не учитываются.

Таким образом, время на созданных экспертом эквиобъемных графиках не представляет ни какой ценности. Анализировать его бесполезно.


Еще одна особенность, которую необходимо озвучить - пропуск тиков.

Эксперт после чтения тиковой истории из файлов продолжает работать в обычном режиме - запускается при поступлении котировки и добавляет ее на эквиобъемный график. Терминал MetaTrader 4 устроен так, что если эксперт не успел завершить обработку предыдущего тика, новый тик он пропустит. Таким образом, на эквиобъемном графике (особенно с маленьким "периодом") может возникнуть искажение в виде пропущенной цены.

Я, например, наблюдая за двухтиковым (TicksInBar=2) графиком, увидел додж - бар, у которого все цены равны (O=H=L=C). На двухтиковом графике такого бара не может быть по определению, условие формирования бара - одно изменение цены. Я предполагаю, что эксперт просто пропустил тик между этими двумя одинаковыми ценами, и получился бар из одной цены, но с объемом = 2.

В принципе, такие ситуации достаточно редки, да и искажения будут заметны только на самых маленьких "периодах". Но проблема есть, и я хочу чтоб вы о ней знали.



И последнее, о чем я хотел сказать - достаточно очевидная вещь - при изменении точки отсчета меняется вся последующая эквиобъемная история.

Например, вы анализировали график, начинающийся с декабря 2007 года. Потом захотелось взглянуть глубже - вы скачали тиковую историю за ноябрь и пересчитали весь график. Количество тиков в ноябре абсолютно не обязательно будет кратно выбранному вами "периоду". Соответственно, изменится и отображение декабрьского графика.

В принципе, это тоже сложно назвать проблемой - скорее, особенность. Просто не забывайте о ней.



Заключение

В статье был рассмотрен процесс создания эквиобъемных графиков - графиков, у которых все бары состоят из одинакового количества тиков.

Были приведены примеры работы с готовой тиковой историей и описан процесс настройки обновляемых графиков.

В завершении статьи были озвучены особенности, которые необходимо учитывать при работе с экспертом EqualVolumeBars.


Надеюсь, статья даст пищу для размышления и удобный инструмент каждому, кто ее прочитал.

Прикрепленные файлы |
Последние комментарии | Перейти к обсуждению на форуме трейдеров (43)
Alex969
Alex969 | 28 нояб. 2018 в 13:27

Жаль, ветка угасла.

А никто не пробовал input int TicksInBar = n; сделать  переменной величиной?

Например, навскидку, как значение МА от Volume, да от разных таймфреймов,

или от фазы рынка на основании какого-нить осциллятора, и т.д.

...производная от производной, от производной :) ... Ну, примерно, как в студенчестве чай заваривали.

Maxim Kuznetsov
Maxim Kuznetsov | 28 нояб. 2018 в 14:01
Alex969:

Жаль, ветка угасла.

А никто не пробовал input int TicksInBar = n; сделать  переменной величиной?

Например, навскидку, как значение МА от Volume, да от разных таймфреймов,

или от фазы рынка на основании какого-нить осциллятора, и т.д.

...производная от производной, от производной :) ... Ну, примерно, как в студенчестве чай заваривали.

а смысл ? в тупом переборе вариантов в поисках "где звякнет" ??

эквиобъём полезен поскольку колебания меньше пары спредов по величине и менее 10-15 тиков  в ширину
вообще не интересны - они съедаются накладными  (задержками, проскальзыванием и проч.) это просто шум которым технически нельзя воспользоваться

Alex969
Alex969 | 28 нояб. 2018 в 14:46
Maxim Kuznetsov:

а смысл ? в тупом переборе вариантов в поисках "где звякнет" ??

Не дают покоя  лавры Д. Лэйна.  Тот тупо перебирал.

Alex969
Alex969 | 28 нояб. 2018 в 14:50
Maxim Kuznetsov:

эквиобъём полезен поскольку колебания меньше пары спредов по величине и менее 10-15 тиков  в ширину
вообще не интересны - они съедаются накладными  (задержками, проскальзыванием и проч.) это просто шум которым технически нельзя воспользоваться

- ваабче не интересно мне.

Не алго, не скальпер.

Хочу новый взгляд на стандартные вещи, мне такое помогало, упс. Всегда от скуки.

Aleksey Panfilov
Aleksey Panfilov | 28 апр. 2020 в 21:03
Alex969:

Жаль, ветка угасла.

А никто не пробовал input int TicksInBar = n; сделать  переменной величиной?

Например, навскидку, как значение МА от Volume, да от разных таймфреймов,

или от фазы рынка на основании какого-нить осциллятора, и т.д.

...производная от производной, от производной :) ... Ну, примерно, как в студенчестве чай заваривали.

Мне, не одолеть, а хотелось бы увидеть как выглядит график натянутый на синусоиду.  :)

В базе кода есть индикаторы рассчитывающие тригонометрическую фазу (в градусах) предполагаемой волны. МТ4МТ5. Значение меняется по возрастанию. Шаг отсечки бара может быть определен разностью фаз.

"График равной дельты тригонометрической фазы".  Вдруг заинтересует как тема новой статьи? 


 

Предсказание финансовых временных рядов Предсказание финансовых временных рядов
Предсказание финансовых временных рядов - необходимый элемент любой инвестиционной деятельности. Сама идея инвестиций - вложения денег сейчас с целью получения дохода в будущем - основывается на идее прогнозирования будущего. Соответственно, предсказание финансовых временных рядов лежит в основе деятельности всей индустрии инвестиций - всех бирж и небиржевых систем торговли ценными бумагами.
Моделирование беттинга как средство развития "чувства рынка" Моделирование беттинга как средство развития "чувства рынка"
В статье рассказано о таком понятии, как "чувство рынка" и о способе его развития. Способ основан на моделировании финансового беттинга в виде простой игры.
Использование платформы MetaTrader 4 для выявления благоприятных временных окон (паттернов времени) Использование платформы MetaTrader 4 для выявления благоприятных временных окон (паттернов времени)
Анализ паттернов времени может применяться для рынка Форекс с целью определения наилучшего времени для открытия сделок, а также периодов, когда не следует торговать вовсе. В данном случае мы используем торговую платформу MetaTrader 4 для анализа истории и оптимизации результатов, которые могут быть использованы в механических торговых системах.
Язык MQL4 для "чайников". Пользовательские индикаторы (часть 2) Язык MQL4 для "чайников". Пользовательские индикаторы (часть 2)
Это пятая статья из цикла "Язык MQL4 для 'чайников'". Сегодня мы научимся использовать графические объекты - очень мощное средство разработки, которое позволяет существенно расширить возможности индикаторов. Кроме того, вы можете использовать их также в скриптах и советниках. Мы узнаем как создавать объекты, изменять их параметры, проверять ошибки. Конечно, мне не удастся описать полностью все объекты, их слишком много. Но вы получите все необходимые знания, чтобы разобраться в этом самостоятельно. Также в этой статье содержится пошаговое руководство-пример по созданию сложного сигнального индикатора. При этом, многие параметры будут доступны пользователю для настройки, что позволит гибко изменять внешний вид.