Any questions from newcomers on MQL4 and MQL5, help and discussion on algorithms and codes - page 882

 
Artyom Trishkin:
Examine the code

Thanks for the quick reply. I don't mean to be rude, but it's close but not quite right. My case uses DRAW_COLOR_HISTOGRAM2

it has three buffers, two for values of start and end of candle and third for storing colour of this candle.

The example shown above uses DRAW_COLOR_HISTOGRAM , it has two buffers (candlestick size and colour) and builds bars only from "0". Such a histogram cannot plot from the level (e.g. 50).

We should subtract 50 from the range of the indicator array values to shift the value from -50 to 50, instead of 0 to 100 as in the original source. Instead of level 50 it will be level 0. And

to arrange the histograms above and below 0, I will have to use two of them, one "negative", below 0, the other "positive", above 0. I guess :-))

This, of course, is also an option and it's probably easier to implement for me now, but I want to understand it and find ERROR.


What I'm doing wrong? The values are calculated correctly (I checked them in the tester, step by step), the colour index changes correctly, but the indicator itself has no effect, the colour does not change, there is no connection between the colour index

SetIndexBuffer(6,ColorHistogram_2Colors,INDICATOR_COLOR_INDEX); 

and the display. Thanks anyway.

 

Made changes, added Prints to see the changes on each tick

it can be seen that the index is equal to the green value "32768", it must be, because

ExtMainBuffer[i]>50

i.e. stochastic is above 50. But the bars of the histogram are still red.

I've added the file with the printout.

 

I used the example from the MQL5 Reference as an example for myself

MQL5 Reference Guide / Custom Indicators / Indicator Styles in Examples / DRAW_COLOR_HISTOGRAM2

double-checked everything, everything as they do, and it does not work!!!!
Who knows, please advise where the error, what's wrong?

 
Seric29:

I just figuratively called the program a compiler, but in general, in what case would it be better?

to use many small functions rather than one "big chunk" of code - as@Ilyas advised

 
Sergey Voytsekhovsky:

I used the example from the MQL5 Reference as an example for myself

MQL5 Reference Guide / Custom Indicators / Indicator Styles in Examples / DRAW_COLOR_HISTOGRAM2

double-checked everything, everything as they do, and it does not work!!!!
Who knows, please advise where the error, what's wrong?

I gave you a link to learn about working with a colour buffer, not a histogram. Abstract away from the histogram, and focus on how to work with colour.

 
Sergey Voytsekhovsky:

Good evening. Tried for a long time and in vain. The histogram draws correctly, but the coloring in different colours (above and below level 50) has not won. Please tell me where I screwed up. The text below, the file is linked


The first thing that caught my eye was the sequence of buffers.

//--- 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);
   SetIn dexBuffer(6,ColorHistogram_2Colors,INDICATOR_COLOR_INDEX);

The buffers should ALWAYS be consecutive. I.e. if data buffers are number 2 and 3, then the colour buffer MUST be number 4

If this is not the only error, then we will look further.

 

I can't think straight.

I've been poking around for half an hour and can't figure it out.

Please tell me how to know the value in rubles of 1 point of price, if the size of the tick and its price are different in the tool specification.

For example, if I have a variable with value 10

it is clear that for Uber it is 10 rubles

rts 130 rubles

oil 60 rubles

How does it look like in the code? I'm confused, the simple points are ok, but the rts oil is different

 
Konstantin Seredkin:

I can't think straight.

I've been poking around for half an hour and can't figure it out.

Please tell me how to know the value in rubles of 1 point of price, if the size of the tick and its price are different in the tool specification.

For example, if I have a variable with value 10

it is clear that for Uber it is 10 rubles

rts 130 rubles

oil 60 rubles

How does it look like in the code? I'm confused, the simple points are ok, but the rts oil is different

SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE) * volume

MQL4

 
Alexandr Sokolov:

SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE) * volume

MQL4

MQL5 is needed

futures are not traded in mt4


this is what you need


 
Konstantin Seredkin:

MQL5 is needed

futures are not traded in mt4


this is what you need


So it's the same in mql5. It's even extended a little bit. Isn't that what we need?

SYMBOL_TRADE_TICK_VALUE

SYMBOL_TRADE_TICK_VALUE_PROFITvalue

double

SYMBOL_TRADE_TICK_VALUE_PROFIT

Calculated tick value for profitable position

double

SYMBOL_TRADE_TICK_VALUE_LOSS

Calculated value of a tick for a losing position

double

SYMBOL_TRADE_TICK_SIZE

Minimum price change

double

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