Ошибки, баги, вопросы - страница 1219

 
 
sanyooooook:

Проверял, не работает.

И полоска информативнее как бэ. Хочется думать, что это исправляемый баг, а не очередное новшество.

 
Silent:

Проверял, не работает.

И полоска информативнее как бэ. Хочется думать, что это исправляемый баг, а не очередное новшество.

да, без неё не удобно будет
 

Добрый день. Подскажите пожалуйста, можно ли индикатором рисовать следующие вещи: есть линия, рисуется, например, по ценам максимумов свечей. Дальше наступает момент, когда эта линия перестает рисоваться (значения EMPTY_VALUE). Дальше наступает момент, когда линия снова должна начать рисоваться. И все бы хорошо, только конец предыдущей линии соединяется с началом текущей линии. Вопрос: можно ли как-нибудь этого избежать, т.е., чтобы линии не соединялись? И что для этого нужно сделать/использовать?

P.S. Насколько я понял, каждый стиль рисования соединяет не пустые значения. Тогда разрывы всегда соединяются. Но может я чего упустил...?

 
Tapochun:

Добрый день. Подскажите пожалуйста, можно ли индикатором рисовать следующие вещи: есть линия, рисуется, например, по ценам максимумов свечей. Дальше наступает момент, когда эта линия перестает рисоваться (значения EMPTY_VALUE). Дальше наступает момент, когда линия снова должна начать рисоваться. И все бы хорошо, только конец предыдущей линии соединяется с началом текущей линии. Вопрос: можно ли как-нибудь этого избежать, т.е., чтобы линии не соединялись? И что для этого нужно сделать/использовать?

P.S. Насколько я понял, каждый стиль рисования соединяет не пустые значения. Тогда разрывы всегда соединяются. Но может я чего упустил...?

можно использовать не один буфер для линии а несколько - изменять номер буфера при следующем переходе.

В зависимости от ситуации может понадобиться в целом от 2 до 3 буферов. 3 когда отрезок может состоять из 2-х свеч.

(вот статья очень хорошая - может будет полезная)

 

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

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

Конструктор трейдера: Украшение индикаторов - Статьи по MQL4
  • www.mql5.com
Конструктор трейдера: Украшение индикаторов - Статьи по MQL4: особенности автоматических торговых стратегий
 
Tapochun:

Добрый день. Подскажите пожалуйста, можно ли индикатором рисовать следующие вещи: есть линия, рисуется, например, по ценам максимумов свечей. Дальше наступает момент, когда эта линия перестает рисоваться (значения EMPTY_VALUE). Дальше наступает момент, когда линия снова должна начать рисоваться. И все бы хорошо, только конец предыдущей линии соединяется с началом текущей линии. Вопрос: можно ли как-нибудь этого избежать, т.е., чтобы линии не соединялись? И что для этого нужно сделать/использовать?

P.S. Насколько я понял, каждый стиль рисования соединяет не пустые значения. Тогда разрывы всегда соединяются. Но может я чего упустил...?

Файлы:
nb8dma.mq5  4 kb
 
ALXIMIKS:

можно использовать не один буфер для линии а несколько - изменять номер буфера при следующем переходе.

В зависимости от ситуации может понадобиться в целом от 2 до 3 буферов. 3 когда отрезок может состоять из 2-х свеч.

(вот статья очень хорошая - может будет полезная)

 

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

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

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

1. По-моему, заводить 2-3 буфера для рисования одной линии - не очень хорошая идея. Даже занеся данные по одной линии в один буфер, по второй - во второй, дальше мы столкнемся с ситуацией, когда снова придется задействовать первый буфер и линии все равно соединяться первая с третьей (если для пустого значения устанавливать EMPTY_VALUE, как делал я);

2. Прочитал предложенную Вами статью. Идеи, предложенные в ней,  сейчас (после обновления MQL4/5)  реализуются гораздо эффективнее, благодаря новым возможностям языков;

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

4. Внизу пост MigVRN - оптимальный вариант, я считаю.

 
MigVRN:

Спасибо, то, что нужно! Жаль в справке не написано, что инициализация нулем избавляет от склеек (при стиле DRAW_LINE).
 
Tapochun:
Спасибо, то, что нужно! Жаль в справке не написано, что инициализация нулем избавляет от склеек (при стиле DRAW_LINE).

В справке написано про стиль DRAW_FILLING. Я просто подумал, что в  стиле DRAW_LINE всё то же самое. Лучше посмотрите в справке про  DRAW_FILLING - инициализировать не обязательно нулем. Я так понял любым значением, которое предварительно задано как пустое.

   #define INDICATOR_EMPTY_VALUE -1.0
   ...
//--- значение INDICATOR_EMPTY_VALUE (пустое значение) не будет участвовать в расчете
   PlotIndexSetDouble(индекс_построения_DRAW_FILLING,PLOT_EMPTY_VALUE,INDICATOR_EMPTY_VALUE);
 
MigVRN:

В справке написано про стиль DRAW_FILLING. Я просто подумал, что в  стиле DRAW_LINE всё то же самое. Лучше посмотрите в справке про  DRAW_FILLING - инициализировать не обязательно нулем. Я так понял любым значением, которое предварительно задано как пустое.

Вот как раз про DRAW_FILLING я и не посмотрел, т.к. по логике удовлетворяли только DRAW_LINE и DRAW_SECTION. Но, в этих стилях, при установке пустого значения

PlotIndexSetDouble( 0, PLOT_EMPTY_VALUE, EMPTY_VALUE );

 как раз пустые значения двух соседних линий соединяются, что не требуется. Однако если сделать так, как предложили Вы:

PlotIndexSetDouble( 0, PLOT_EMPTY_VALUE, 0 );

в стиле DRAW_LINE получится то, что требовалось, а в стиле DRAW_SECTION - нет, но, про DRAW_SECTION в справке так и написано, что соединяются два непустых значения! Любые другие значения вместо 0 в DRAW_LINE дают склейку. В DRAW_SECTION вообще любое значение на месте пустого все равно приводят к склейке. Видимо DRAW_FILLING строится по другому принципу.

Причина обращения: