Can we plot the indicator using an EA, for example if I have an EA trading 5-MA 15 MA cross, can I plot those indicator lines in EA- I badly need this way for some testing purposes
Please share some example or a tutorial, I tried for days but couldnt do it in MT4; Thanks
You can obtain the values of 5-MA (for example) using codes like these:
int P = 5; // Period of Moving Average int S = 0; // Shift of Moving Average int B = 1; // Bar that you're interested in double MA5 = iMA(_Symbol,_Period,P,S,MODE_SMA,PRICE_CLOSE,B);
There is no need for your EA to plot those lines on the chart, since it should be even more straightforward to just drop the moving average indicator on the chart.
- EAs have no eyes. If you want to see the indicators on the chart, put them there.
-
Why did you post your MT4 question in the
Root /
MT5 EA section
instead of the MQL4 section,
(bottom of the Root page?)
General rules and best pratices of the Forum. - General - MQL5 programming forum
Next time post in the correct place. The moderators will likely move this thread there soon.
You can obtain the values of 5-MA (for example) using codes like these:
There is no need for your EA to plot those lines on the chart, since it should be even more straightforward to just drop the moving average indicator on the chart.
Tk u, I do have an EA and an Indicator developed however when I back test I see the Indicator crossover and the EA open trades differing and the values when printed differs as well, so I'm trying to draw the indicator thru the EA to visualize the buy and sell, is there a way that we can do it? like using dll or some other way
Tk u, I do have an EA and an Indicator developed however when I back test I see the Indicator crossover and the EA open trades differing and the values when printed differs as well, so I'm trying to draw the indicator thru the EA to visualize the buy and sell, is there a way that we can do it? like using dll or some other way
You can always draw trendlines without ray, from within your EA to depict the exact point that the crossover happened:
ObjectCreate(ChartID(),<Name1>,OBJ_TREND,0,T1,P1,T2,P2); // Draws '/' ObjectSet(<Name1>,OBJPROP_RAY,FALSE); ObjectCreate(ChartID(),<Name2>,OBJ_TREND,0,T1,P3,T2,P4); // draws '\' ObjectSet(<Name2>,OBJPROP_RAY,FALSE);
Just have to generate appropriate names dynamically.
But I think the right way, given that you've already printed the values from the EA and they differ from what the indicators provided, is to check through your code for all parameters used to calculate the moving averages, rather than to plot out the lines via your EA - it serves no real purpose.
You can always draw trendlines without ray, from within your EA to depict the exact point that the crossover happened:
Just have to generate appropriate names dynamically.
But I think the right way, given that you've already printed the values from the EA and they differ from what the indicators provided, is to check through your code for all parameters used to calculate the moving averages, rather than to plot out the lines via your EA - it serves no real purpose.
Thank you, I will try this code to draw the lines, and I did check the code, its all exactly the same, I even tried the iMA function- as below (Please check the code and kindly guide me if there is something wrong... because the difference between both Indi and EA MAs are varies and sometimes really huge upto 400 points difference... ex if Indi MA5 value is 1.32300 the EA MA5 prints 1.32700 I'm totally lost and have no clue why... I tried with different forex companies demo accounts, still the same issue
//Indicator //INIT Function int shift_begin=int(MathSqrt(period)+period+1); IndicatorShortName("Name"); SetIndexBuffer(0,MA5); SetIndexBuffer(1,MA10); SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); SetIndexDrawBegin(1,shift_begin); SetIndexDrawBegin(2,shift_begin); //onCal function int limit=rates_total-prev_calculated; if(prev_calculated==0)limit--; else limit++; for(i=0; i<limit && !IsStopped(); i++) MA5[i] = iMA(Symbol(), PERIOD_CURRENT, 5,0, 3, 0,Shift); for(i=0; i<limit && !IsStopped(); i++) MA10[i] = iMAOnArray(MA5,0,(int)MathRound(period),0,3,i); //------------------------------------------------------------------------ //EA Code //------------------------------------------------------------------------ //Calc MA Function double MA5[],MA10[]; ArraySetAsSeries(MA5,true); ArraySetAsSeries(MA10,true); max=1000; ArrayResize(MA5,max); ArrayResize(MA10,max); for(int i=max-1; i>=0; i--) MA5[i] = iMA(Symbol(), PERIOD_CURRENT, 5, 0, 3, 0,Shift); for(int i=max-1; i>=0; i--) MA10[i] = NormalizeDouble(iMAOnArray(MA5,0,(int)MathRound(period),0,3,i),_Digits);
Thank you, I will try this code to draw the lines, and I did check the code, its all exactly the same, I even tried the iMA function- as below (Please check the code and kindly guide me if there is something wrong... because the difference between both Indi and EA MAs are varies and sometimes really huge upto 400 points difference... ex if Indi MA5 value is 1.32300 the EA MA5 prints 1.32700 I'm totally lost and have no clue why... I tried with different forex companies demo accounts, still the same issue
Since you have the indicator, you can just use iCustom in your EA to retrieve the values calculated by it, as follows:
double MA5 = iCustom(Symbol(),PERIOD_CURRENT,<Indicator Name>,<Indicator parameters>,0,Bar); double MA10 = iCustom(Symbol(),PERIOD_CURRENT,<Indicator Name>,<Indicator parameters>,1,Bar);
This way, you can just focus on checking that the calculations within your indicator are exactly what you expected.
I have tested, and these lines are able to retrieve the MA5 and MA10 values from your indicator, without any discrepancy.

- 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 Gurus
Can we plot the indicator using an EA, for example if I have an EA trading 5-MA 15 MA cross, can I plot those indicator lines in EA- I badly need this way for some testing purposes
Please share some example or a tutorial, I tried for days but couldnt do it in MT4; Thanks
Regards
Arun