For large amounts of code, attach it
What you have
What you need
for (i=limit; i+CandlePeriod-1; i>=0; i--) double Candle, CandleSum; { // Things inside the brace will execute only once // because they NOT connected to the for loop.
A for loop has (init; check; iterate) your's has 4 sections.for (i=limit; i>=0; i--){ double Candle=High[i]-Low[i]; CandleSum = :
WHRoeder:
For large amounts of code, attach it
What you have
What you need
A for loop has (init; check; iterate) your's has 4 sections.
Thanks WHRoeder for the try!
I am getting graphics now but the graphics and stats are wrong.
No matter what CandlePeriod I enter, the value and look is always the same as CandlePeriod=1 for all periods.
@Theo: hey did you finished coding of your indicator?
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
G'Day Mates. Everybody well I hope.
Help is appreciated to make this indicator work.
What it should do is divide the current Candle high-low range, example 30, by the sum of the CandlePeriods high-low range. Example, if CandlePeriod = 3, and the sum of the three candles at close = 130 (40+60+30), then the last Candle is divided by the CandleSum of candles for the CandlePeriod. Example, current candle at close = 30 (Candle) / 130 (CandleSum) = 23.07%.
//+------------------------------------------------------------------+
//|
//| Candle Percent.mq4
//|
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Gray
#property indicator_width1 8
//---- input parameters
extern int CandlePeriod = 3;
//---- buffers
double MainBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//----
IndicatorBuffers(1);
IndicatorDigits(Digits);
//---- indicator line
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,MainBuffer);
//---- name for DataWindow and indicator subwindow label
short_name="Candle Percent ("+CandlePeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Candle Percent |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
//----
int limit=Bars-counted_bars-1;
for (i=limit; i+CandlePeriod-1; i>=0; i--) //Sum of the CandlePeriods (high-low). Example, if CandlePeriod = 3, and the sum of the three candles at close = 130 (40+60+30).
double Candle, CandleSum;
{
Candle=High[i]-Low[i];
CandleSum+=High[i]-Low[i];
MainBuffer[i]= (Candle/CandleSum) *100; // Current candle divided by the CandleSum of candles for the CandlePeriod. Example, current candle at close = 30 / 130 = 23.07%.
}
//----
return(0);
}
//+------------------------------------------------------------------+