Индикаторы: Тиковый индикатор ZoomPrice
Можно индикатор переместить в окно графика без рамки или будет тормозить терминал?
и еще можно сделать линии [коричневые, синяя, красная] отключаемые в настройках?
Можно индикатор переместить в окно графика без рамки или будет тормозить терминал?
Это интерактивный графический объект, некоторые свойства которого меняются (например, координаты) через CTRL+B (будет виден, как Chart, если нажать "Все"). Поэтому с ним можно делать все то же, что и со стандартными графическими объектами. В частности, помещать в любое окно (подокно).
Короткий исходник советника, что в описании, как раз это и делает.
в таком варианте Вы можете переключать чарт на другие символы, а объект продолжит показывать тот символ, на котором был изначально создан.
и еще можно сделать линии [коричневые, синяя, красная] отключаемые в настройках?
Эти линии несут определенную информацию
- коричневая (по умоланию) - вертикальная показывает положение времени в месте курсора, горизонтальная - цену.
- синяя (по-умолчанию) - показывает bid-цену в положении курсора. При этом справа (вдоль вертикальной шкалы) выводится время этого тика и спред.
- красная (по-умолчанию) - тоже самое для ask-цены.
Это интерактивный графический объект, некоторые свойства которого меняются (например, координаты) через CTRL+B (будет виден, как Chart, если нажать "Все"). Поэтому с ним можно делать все то же, что и со стандартными графическими объектами.
Там же возможно отключить вертикальную шкалу и поместить объект на задний фон графика.
Получив таким образом, например, фоновый тиковый график (исторический/реалтайм) изменяемого масштаба.
В общем, как использовать этот объект - дело фантазии.
По-умолчанию, "Отображение на графике торговых уровней (уровни открытых позиций, Stop Loss, Take Profit и отложенных ордеров)" отключено на тиковом графике.
Но включение этого режима иногда бывает полезным
На скрине хорошо видно, что открыта SELL-позиция и bid-цена (предпоследний бар) опускалась ниже TP-уровня. Однако, становится понятно, почему TP не сработал - ask-цена (красная ломанная) не доходила до TP.
Включается отображение правкой в исходнике
в этой строчке нужно false заменить на true. Либо, если хочется, чтобы тиковый график получил такие же настройки, как и основной, - закомментировать эту строчку.
По-умолчанию, "Отображение на графике торговых уровней (уровни открытых позиций, Stop Loss, Take Profit и отложенных ордеров)" отключено на тиковом графике.
Но включение этого режима иногда бывает полезным
На скрине хорошо видно, что открыта SELL-позиция и bid-цена (предпоследний бар) опускалась ниже TP-уровня. Однако, становится понятно, почему TP не сработал - ask-цена (красная ломанная) не доходила до TP.
Включается отображение правкой в исходнике
в этой строчке нужно false заменить на true. Либо, если хочется, чтобы тиковый график получил такие же настройки, как и основной, - закомментировать эту строчку.
Первый тиковый индикатор "fxsaber" более функционален и удобен. Поверх него можно было наложить стандартные индикаторы в окне графика. К графику можно было применить 'масштаб по пунктам на бар'. Все четко. В этом же индикаторе "zoomprice" все скачет сползает, пока настроишь под себя сто лет пройдет. Перекрестие и синяя, красная линия вообще лишние, только отвлекают.
Единственное достоинство "zoomprice" он выглядит шустрее, чем "fxsaber".
Первый тиковый индикатор "fxsaber" более функционален и удобен. Поверх него можно было наложить стандартные индикаторы в окне графика. К графику можно было применить 'масштаб по пунктам на бар'. Все четко.
Я слабый пользователь терминала, поэтому не в курсе, что нужно продвинутым. Было бы полезно узнать, как используете. Например, режим 'масштаб по пунктам на бар' никогда не включал и не знаю, чем он может быть удобен. В общем, поделитесь опытом.
В этом же индикаторе "zoomprice" все скачет сползает, пока настроишь под себя сто лет пройдет.
Ничего скакать и сползать не должно. Разберитесь в интерфейсе взаимодействия. Он очень интуитивен, как мне показалось. Настраиваю масштаб влет с помощью мыши. Если у кого-то есть с этим проблемы - прошу высказаться. Пока же только одно неудовольствие.
Для понимания, как задавать те же настройки объекту, привожу советник-пример
input int exY = 50; // Y-координата
input int exWidth = 450; // Ширина
input int exHeight = 300; // Высота
input bool exShowGrid = true; // Сетка
input color exColorBackGround = clrSnow; // Цвет фона
input bool exTradeLevels = true; // Ордера
input bool exPriceScale = true; // Ценовая шкала
#include <fxsaber\ChartObjects\ChartObject_ZoomPrice.mqh>
// CHARTOBJECT_ZOOMPRICE ChartObject;
CHARTOBJECT* ChartObject;
void OnInit( void )
{
ChartObject = new CHARTOBJECT_ZOOMPRICE; // Создаем ZoomPrice-объект
// Возможно задавать и читать любые свойства объекта из перечислений (F1 - справка)
// ENUM_OBJECT_PROPERTY_INTEGER, ENUM_OBJECT_PROPERTY_DOUBLE, ENUM_OBJECT_PROPERTY_DOUBLE
// ENUM_CHART_PROPERTY_INTEGER, ENUM_CHART_PROPERTY_DOUBLE, ENUM_CHART_PROPERTY_STRING
// Запись свойств через ChartObject.SetProperty
ChartObject.SetProperty(OBJPROP_XDISTANCE, exX); // Дистанция в пикселях по оси X от угла привязки
ChartObject.SetProperty(OBJPROP_YDISTANCE, exY); // Дистанция в пикселях по оси Y от угла привязки
ChartObject.SetProperty(OBJPROP_XSIZE, exWidth); // Ширина объекта по оси X в пикселях.
ChartObject.SetProperty(OBJPROP_YSIZE, exHeight); // Высота объекта по оси Y в пикселях.
ChartObject.SetProperty(CHART_SHOW_GRID, exShowGrid); // Отображение сетки на графике
ChartObject.SetProperty(CHART_COLOR_BACKGROUND, exColorBackGround); // Цвет фона графика
ChartObject.SetProperty(CHART_SHOW_TRADE_LEVELS, exTradeLevels); // Отображение на графике торговых уровней (уровни открытых позиций, Stop Loss, Take Profit и отложенных ордеров)
ChartObject.SetProperty(OBJPROP_PRICE_SCALE, exPriceScale); // Признак отображения ценовой шкалы для объекта "График"
#define TOSTRING(A) #A + " = " + (string)(A)
// Чтение свойств через ChartObject.GetProperty
Print(TOSTRING(ChartObject.GetProperty(OBJPROP_XDISTANCE)));
Print(TOSTRING(ChartObject.GetProperty(CHART_COMMENT)));
}
void OnDeinit( const int Reason )
{
delete ChartObject; // Удаляем графический объект
}
void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
EVENTBASE::MyEvent(id, lparam, dparam, sparam); // Нужно для интерактивности объекта
}
void OnTimer( void )
{
EVENTBASE::MyEventTimer(); // Нужно для интерактивности объекта
}
void OnTick( void )
{
EVENTBASE::MyEventTick(); // Нужно для интерактивности объекта
}
Перекрестие и синяя, красная линия вообще лишние, только отвлекают.
Чтобы отключить линии и текст, нужно найти в исходниках функцию
{
if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
return;
const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
this.GetProperty(CHART_WIDTH_IN_PIXELS) - 0.5));
this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
this.TextCross.SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));
this.TextCross = CHARTOBJECT::TimeToString(TimeCross);
this.SetTextPrices(TimeCross, Y);
return;
}
и закомментировать ее тело.
{
/* if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
return;
const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
this.GetProperty(CHART_WIDTH_IN_PIXELS) - 0.5));
this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
this.TextCross.SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));
this.TextCross = CHARTOBJECT::TimeToString(TimeCross);
this.SetTextPrices(TimeCross, Y);
*/
return;
}
Чтобы отключить перекрестие, нужно найти строки
this.VLineCross = time;
и закомментировать их
// this.VLineCross = time;
Единственное достоинство "zoomprice" он выглядит шустрее, чем "fxsaber".
ZoomPrice может быть замечательным дополнением к Ticks - позволяет подробно рассмотреть то, что показывает Ticks. После написания ZoomPrice, сам прекратил пользоваться Ticks.

- голосов: 19
- 2016.10.14
- //www.mql5.com/ru/users/fxsaber">
- www.mql5.com
Вот пример
Мне необходимо наложить поверх индикатора ZoomPrice другой индикатор сетка, чтобы визуально определять сколько пунктов прошла цена. Между соседними синими линиями 40 пунктов, между соседними оранжевыми линиями 200 пунктов. Мне не нужны ни какие перекрестия, только уровни сетки, которые привязаны к масштабу. Одного взгляда достаточно, чтоб оценить обстановку. Причем оранжевые линии в сетке это круглые числа графика, если линия находится на значении графика 1.10900, то как бы мы не изменяли масштаб, но линия не изменит своего значения.
Я попытался наложить поверх ZoomPrice индикатор сетки и привязать линии к шкале, ничего не получилось. В коде я почти не разбираюсь.
Все не нужное я закомментировал, теперь осталось сделать сетку и это будет идеально.
Масштаб по пунктам на бар устанавливается в вкладке: свойства>>общие
Я попытался наложить поверх ZoomPrice индикатор сетки и привязать линии к шкале, ничего не получилось. В коде я почти не разбираюсь.
Все не нужное я закомментировал, теперь осталось сделать сетку и это будет идеально.
Горизонтальную сетку сделать можно, повесив на этот графический объект соответствующий индикатор. Но это, скажем так, совсем не тривиально для человека, кто в коде не разбирается.
Масштаб по пунктам на бар устанавливается в вкладке: свойства>>общие
ZoomPrice - это единственный индикатор за 16-и летнюю историю MQ, который позволяет делать ЛЮБОЙ уровень масштаба. Т.е. не шесть четко заданных масштабов, а какие угодно. Для этого потребовалось пойти на некоторые нестандартные решения (именно по этой причине у объекта отсутствует горизонтальная шкала). И именно из-за этих нестандартных решений ZoomPrice обладает некоторыми ограничениями, не позволяющими определенные виды индикаторов накладывать на объект (это не касается горизонтальной сетки). И задание иного вида масштаба - это надо думать уже мне. Я так и не понял, что такое "масштаб по пунктам на бар", даже прочтя Справку.
На самом деле Вы, сами того не понимая, затронули тему правильного поведения индикаторов. Из-за возможного наличия OBJ_CHART-объектов, можно бросить индикатор не на сам чарт, а на объект OBJ_CHART. И логично в этом случае индикатор запускать именно на OBJ_CHART, а не на основном чарте.
Скиньте ссылку на индикатор с горизонтальной сеткой. Посмотрим, что можно придумать.

- Бесплатные приложения для трейдинга
- Форексный VPS бесплатно на 24 часа
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Тиковый индикатор ZoomPrice:
Автор: fxsaber