Hello,
I'm trying without success to make a cloud/ribbon in one of my oscillators but it doesn't work.
This method works on the main chart for creating candle sticks.
And yet I would like something like this;
In MT4, the only way is to mask out some of the displayed data.
Use the following program as a guide:
//+------------------------------------------------------------------+ //| Test Indicator.mq4 | //| Naguisa Unada | //| https://www.mql5.com/en/users/unadajapon/news | //+------------------------------------------------------------------+ #property copyright "Naguisa Unada" #property link "https://www.mql5.com/en/users/unadajapon/news" #property version "1.00" #property strict #property indicator_separate_window #property indicator_buffers 3 #property indicator_plots 3 //--- plot Histo 1 #property indicator_label1 "Histo 1" #property indicator_type1 DRAW_HISTOGRAM #property indicator_color1 clrLimeGreen #property indicator_style1 STYLE_SOLID #property indicator_width1 2 //--- plot Histo 2 #property indicator_label2 "Histo 2" #property indicator_type2 DRAW_HISTOGRAM #property indicator_color2 clrMagenta #property indicator_style2 STYLE_SOLID #property indicator_width2 2 //--- plot Histo 3 #property indicator_label3 "Histo 3" #property indicator_type3 DRAW_HISTOGRAM #property indicator_color3 clrBlack #property indicator_style3 STYLE_SOLID #property indicator_width3 2 //--- input parameters input int Fast_period = 12; input int Slow_period = 26; input int Signal_period = 9; //--- indicator buffers double Histo1_Buffer[]; double Histo2_Buffer[]; double Histo3_Buffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0, Histo1_Buffer); SetIndexBuffer(1, Histo2_Buffer); SetIndexBuffer(2, Histo3_Buffer); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int i, limit; if (prev_calculated < 0) return(-1); if (prev_calculated == 0) limit = rates_total - Slow_period; else limit = rates_total - prev_calculated; for (i = limit; i >= 0; i--) { Histo1_Buffer[i] = iMACD(NULL, 0, Fast_period, Slow_period, Signal_period, PRICE_CLOSE, MODE_MAIN, i) + 100.0; Histo2_Buffer[i] = iMACD(NULL, 0, Fast_period, Slow_period, Signal_period, PRICE_CLOSE, MODE_SIGNAL, i) + 100.0; if (Histo1_Buffer[i] > Histo2_Buffer[i]) Histo3_Buffer[i] = Histo2_Buffer[i]; else Histo3_Buffer[i] = Histo1_Buffer[i]; } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
No need to mask. He should simply use the method used in the second example he showed (since the first versions of that indicator are free indicators available as mq4 source code it should be easy). Or he can make alternate method to do that (something like this :
In MT4, the only way is to mask out some of the displayed data.
Use the following program as a guide:
No need to mask. He should simply use the method used in the second example he showed (since the first versions of that indicator are free indicators available as mq4 source code it should be easy). Or he can make alternate method to do that (something like this :
Mladen, I've searched for that indicator online but all I find are .ex4 files, do you have a link to the source code ?
Could you as well link to a
code example on how to implement the alternate method you are referring to ?
Thanks.
Thank you Unada, I've tested it and it works well, the only caveat is an additional buffer which I find unsavory. Could you explain why this works ?
I think you will understand if you change the background color.
Histo1 and Histo2 are masked by a black histogram.
Maybe it's about this program.
He is using objects, not histograms.
I think you will understand if you change the background color.
Histo1 and Histo2 are masked by a black histogram.
Ok, that makes sense now.
ChartGetInteger(x,CHART_COLOR_BACKGROUND); // This should then be the histogram3 color
Maybe it's about this program.
He is using objects, not histograms.
Interesting use of Objects, is this cheaper on system resource usage ?
Ok, that makes sense now.
Interesting use of Objects, is this cheaper on system resource usage ?
I'm not sure, but it gets slow when there are too many objects.
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hello,
I'm trying without success to make a cloud/ribbon in one of my oscillators but it doesn't work.
This method works on the main chart for creating candle sticks.
And yet I would like something like this;
Here is the code snippet I use;
Thanks, any help and input will be highly appreciated.