Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 882

 
Artyom Trishkin:
Изучите код

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

у нее три буфера, два для значений начала и конца свечи и третий для хранения цвета этой свечи. 

В примере на который вы указали используется DRAW_COLOR_HISTOGRAM , там два буфера (размер свечи и цвет) и строятся столбики только от "0". От уровня (например 50) такая хистограмма откладывать не умеет.

Нужно будет от диапазона значений массива индикатора отнимать 50, чтобы значение изменялось не от 0 до 100, как в первоисточнике, а от -50 до 50. Вместо уровня 50 будет уровень 0. И 

для того чтобы организовать гистограммы выше и ниже 0 придется использовать два таких, один "отрицательный", ниже 0, второй "положительный" выше 0. Наверное :-))

Это конечно тоже вариант и сейчас он для меня наверное проще реализуем, но ведь хочется разобраться и найти ОШИБКУ.


Что я делаю не так? Значения расчитываются верно (проверял в тестере пошагово), индекс цвета меняется верно, а на сам индикатор это почему-то не влияет, цвет не меняется, нету связи между индексом цвета

SetIndexBuffer(6,ColorHistogram_2Colors,INDICATOR_COLOR_INDEX); 

и отображением. Спасибо в любом случае.

 

Внес изменения, добавил Принты для того что-бы видеть изменения на каждом тике

видно, что индекс равен численному значению зелёного цвета "32768", так и должно видимо быть, ведь 

ExtMainBuffer[i]>50

то-есть стохастик выше 50. А столбики гистограммы всё равно красные.

Файл с расПринтовкой добавил.

Файлы:
 

В качестве примера для себя при написании использовал пример из справочника MQL5 

Справочник MQL5 / Пользовательские индикаторы / Стили индикаторов в примерах / DRAW_COLOR_HISTOGRAM2

двадцать раз все перепроверил, все как у них, и не работает!!!!
Кто знает, подскажите плиз, где ошибка, что не так ???

 
Seric29:

Ну это понятно я просто образно назвал программу компилятором, ну а в целом в каком случае будет лучше?

использовать много маленьких функций, а не одну "большую портянку" кода - так посоветовал @Ilyas

 
Sergey Voytsekhovsky:

В качестве примера для себя при написании использовал пример из справочника MQL5 

Справочник MQL5 / Пользовательские индикаторы / Стили индикаторов в примерах / DRAW_COLOR_HISTOGRAM2

двадцать раз все перепроверил, все как у них, и не работает!!!!
Кто знает, подскажите плиз, где ошибка, что не так ???

Я вам дал ссылку на изучение не гистограммы, а работы с буфером цвета. Абстрагируйтесь от гистограммы, и сосредоточьтесь на том, как нужно с цветом работать.

 
Sergey Voytsekhovsky:

Добрый вечер. Пробовал долго и тщетно. Гистограммы рисует правильно, а вот раскрашивание в разные цвета (выше и ниже уровня 50) так и не победил. Подскажите плиз, где я накосячил. Текст ниже, файл подвязан


Первое что бросилось в глаза, это последовательность буферов.

//--- indicator buffers mapping
   SetIndexBuffer(0,ExtMainBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtSignalBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,ColorHistogram_2Buffer1,INDICATOR_DATA);
   SetIndexBuffer(3,ColorHistogram_2Buffer2,INDICATOR_DATA);
   SetIndexBuffer(4,ExtHighesBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(5,ExtLowesBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(6,ColorHistogram_2Colors,INDICATOR_COLOR_INDEX);

Буферы построения ВСЕГДА должны идти подряд. То-есть если буферы данных под номерами 2 и3, то буфер цвета ОБЯЗАТЕЛЬНО должен быть под номером 4

Если это не единственная ошибка, тогда будем смотреть дальше.

 

Что то совсем голова не варит

Сижу пол часа тыкаю сообразить не могу

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

К примеру если имею переменную со значением в 10

понятно что для сбера это 10 руб

ртс 130 руб

нефть 60 руб

Как это выглядит в коде, что то запутался, с простыми пунктами норм все, а ртс нефть, специфика другая

 
Konstantin Seredkin:

Что то совсем голова не варит

Сижу пол часа тыкаю сообразить не могу

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

К примеру если имею переменную со значением в 10

понятно что для сбера это 10 руб

ртс 130 руб

нефть 60 руб

Как это выглядит в коде, что то запутался, с простыми пунктами норм все, а ртс нефть, специфика другая

SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE) * volume

MQL4

 
Alexandr Sokolov:

SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE) * volume

MQL4

MQL5  нужно

в мт4 у нас фьючерсы не торгуются


вот это надо


 
Konstantin Seredkin:

MQL5  нужно

в мт4 у нас фьючерсы не торгуются


вот это надо


Так а в mql5 то-же самое. Даже чуток расширено. Разве это не то, что надо?

SYMBOL_TRADE_TICK_VALUE

Значение SYMBOL_TRADE_TICK_VALUE_PROFIT

double

SYMBOL_TRADE_TICK_VALUE_PROFIT

Рассчитанная стоимость тика для прибыльной позиции

double

SYMBOL_TRADE_TICK_VALUE_LOSS

Рассчитанная стоимость тика для убыточной позиции

double

SYMBOL_TRADE_TICK_SIZE

Минимальное изменение цены

double

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как...
Причина обращения: