MQL4 - automated forex trading   /  

Code Base

Code Base  Индикаторы  Гистограмма объемов другая интерпритация Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый код

Библиотека программ на новом MQL5
Готовься к Чемпионату -

Этот скрипт для
MetaTrader 4

Мобильный трейдинг!
Купите лицензию и торгуйте мобильно

Имя:
Гистограмма объемов другая интерпритация
Автор: infinum13 (27.05.2009 08:09)
Рейтинг: 7
Скачано: 1612
Скачать:
 VolumesHist2.3.mq4 (2.5 Kb) View

Автор: infinum13 (идея DrShumiloff).

Описание:

Изначально индикатор выглядил вот так: http://codebase.mql4.com/ru/5619. Но мне непонравилось, что весь объём свечки фокусируется только в точке закрытия свечи. Я распределил объём за свечу по всей свечке. Причём в "хвостиках" взял двойной объём (так-как цена там двигалась два раза как минимум). Конечно, при полной тиковой истории картина будет несколоко иная (надо посмотреть). Но первое представление о движении пары (уровни поддержки, пробитие уровней) можно сделать на основе этого индикарота.

Индикатор рисуется на основе завершённых свечей.

Картинка:



Советы:

  • Рекомендую использовать периуд М1. Параметр Period_ind - на ваше усмотрение.
25 комментариев: 1 2 3   Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый комментарий
5555 писал(а):

Пожалуйста, код доработал, убрал лишние if и т.п. Можно удобно обозначить вертикальной линией начало тренда/флэта, например, и смотреть объем по ходу тренда/флэта

// Объём расчитыватся от Low до High.
#property indicator_chart_window

.........

return(0);
}

Поскольку считаю Ваш индикатор полезным вставил бы после #property indicator_chart_window:

extern string Zametki = "Индикатор 'Гистограмма объемов другая интерпритация' определяет Уровни Жизни цены (теория в ссылках постов). Примечание: ДАТА ЭКСПИРАЦИИ ТЕКУЩЕЙ ПОЗИЦИИ ....";
extern string Zametki1 = "Сначала нужно выставить вертикальную линию к которой прикрепится индикатор, т.е. записать ее номер из строки меню Имя. Пример: Имя: Vertical Line 6045";
extern string Vertical_Line_Name = "Vertical Line ...";//
extern string Zametki2 = "Вертикальную линию можно выделять и передвигать вместе с индикатором. При удалении линии индикатор также лучше удалять";
extern string Zametki3 = "По умолчанию, если линия не выставлена индикатор позиционируется на левую границу окна и действует как автопрокрутка. Тогда подбираем удобный MAX масштаб графика и Period_ind - кол-во обсчитываемых баров";

extern string Zametki4 = "Применять можно 2 и больше индикатора (и менять их цвета), лучше разных авторов";

.........

и если нужно вывести на график Заметки, то еще перед return(0);

Comment(
"Заметки: -",Zametki,
"\nЗаметки1: -",Zametki1,
"\nЗаметки2: -",Zametki2,
"\n\nЗаметки3: -",Zametki3);

а кол-во вертикальных линий в индикаторе лучше не менее 2-х т.к. два индикатора сразу не отображаются

11.06.2009 19:55 Geronimo
5555 писал(а):

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

Насчет фрейма от М1 до Д1 не понял, что вы имеете в виду: брать данные для вычисления с этих таймфреймов и рисовать на своем рабочем таймфрейме? Лично я сделал версию для себя которая берет данные с М1,но результат получился хуже чем если брать данные с рабочего таймфрейма.

Хотелось бы привязать к индикатору сессий Кима по умолчанию, а затем двигать линии при небходимости

Уменя работае только на М30,Н1,Н4 на остальных фреймах не работает

08.06.2009 01:31 Geronimo

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

05.06.2009 12:53 5555
5555 писал(а):

Я проверял сигналы для моей ТС, получилось что максимальная точность (данные с М1) дают намного худший результат в торговле, чем данные с рабочего таймфрейма(Н6).

Если взять индюк на минутке с периудом 360*Periud, то должен получиться вариант, идентичный H6 с периудом Periud. И результаты должны быть намного точнее (не расплываться).

05.06.2009 12:09 infinum13

Я проверял сигналы для моей ТС, получилось что максимальная точность (данные с М1) дают намного худший результат в торговле, чем данные с рабочего таймфрейма(Н6).

05.06.2009 09:27 5555
5555 писал(а):

Лично я сделал версию для себя которая берет данные с М1,но результат получился хуже чем если брать данные с рабочего таймфрейма.


Но использовать результаты М1 намного точнее, чем брать с рабочего тайма.

05.06.2009 09:13 infinum13

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

Насчет фрейма от М1 до Д1 не понял, что вы имеете в виду: брать данные для вычисления с этих таймфреймов и рисовать на своем рабочем таймфрейме? Лично я сделал версию для себя которая берет данные с М1,но результат получился хуже чем если брать данные с рабочего таймфрейма.

05.06.2009 07:16 5555
5555 писал(а):

а как сделать 2 линии в одном индикаторе и к ним профиль с разными цветами и фрейм от М1 до D1 ?

05.06.2009 01:01 Geronimo
5555 писал(а):

Пожалуйста, код доработал, убрал лишние if и т.п. Можно удобно обозначить вертикальной линией начало тренда/флэта, например, и смотреть объем по ходу тренда/флэта


Доработки принял во внимание. Спорить не буду. Это на любителя. Я только заметил, что усреднение изменяет диаграмму "вверх". Поставь индюк с шагом 0.0005 вместо и 0.00001. Разница очевидна. Надо покумекать, как это исправить. Пока времени нет.

И ещё может линию среднего объёма здесать?? т.е. суммировать полученный объём и делить на число участков. Получится машка по оъёму.

У меня немного другая реализация. Я её часто использую в кодах, она немного лучше, чем среднее. В сапромате это называется момент инерции (центр тяжести фигуры). в коде это выглядит так:

      double summA, summXA;
      int x0;
      for (i = 0; i <= items; i++)
      {
         if (MaxVolume != 0) 
         {
            Hist[i] = MathRound(Amplitude * Hist[i] / MaxVolume );
            summXA += i*Hist[i];
            summA += Hist[i];
         }
      }
      x0 = MathRound(summXA/summA);
      Srednee[0] = min + x0*Point;

x0 - точка равновесия для диаграммы. Srednee[0] - значение точки равновесия на графике на граффике.

04.06.2009 09:29 infinum13
5555 писал(а):

я заменил "VH" везде в тексте индюка на Vertical_Line_Name - имя вертикальной линии. Теперь к каждой вертикальной линии можно привязать свой индикатор, который не будет путаться с другими.

Спасибо

а как сделать 2 линии в одном индикаторе и к ним профиль с разными цветами и фрейм от М1 до D1 ?

Интересно, что гистограммы всех индикаторов чтоя привел в предыдущем посте сильно отличаются

еще http://forum.mql4.com/ru/11793/page2

http://forum.mql4.com/ru/11685/page4#70908

Yurixx 09.02.2009 11:15

http://forum.mql4.com/ru/19119/page18#140576
Рыночный профиль - хорошая штука, но к квантованию отношения не имеет. Со значительно большей долей правомерности его можно назвать
статистическим профилем, поскольку смысл того, что он показывает, заключается в распределении котировок за определенный период времени
по всему диапазону значений цены.
С моей точки зрения, к квантованию больше отношения имеют уровни Мюррея (http://codebase.mql4.com/ru/2580), хотя у них свои недостатки: эквидистантность и привязка к нулю.

04.06.2009 00:47 Geronimo