Please edit your post and
use the code button (Alt+S) when pasting code
I know that it is not obvious, but topics concerning MT4 and MQL4 have their own section.
In future please post in the correct section.
I will move your topic to the MQL4 and Metatrader 4 section.
Keith Watford:
Noted and thank you.
Please edit your post and
use the code button (Alt+S) when pasting code
I know that it is not obvious, but topics concerning MT4 and MQL4 have their own section.
In future please post in the correct section.
I will move your topic to the MQL4 and Metatrader 4 section.
You can't get iMAonArray unless the array that you are using it on has at least enough elements filled.
ie iMAonArray [3] will only have iMA[3] to work with as iMA[4] and iMA[5] are both zero.
You must fill the necessary elements of the iMA array first and THEN use iMAonArray.
ie. 2 for loops.
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
Hello
I'm new to mql4 coding so please assist me in understanding why the results from the iMA() are correct
yet the iMAOnArray() is giving me wrong results compared to the ones i have on the charts.
Please review my code and assist me in getting the results as expected.
Code attached.
extern int Base_Period = 13; extern int Signal_Period = 3; double Base_Open1[]; double Base_Close1[]; double Signal_Open1[]; double Signal_Close1[]; int OnInit() { return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { } void OnTick() { //----------------------------------------------------------------------------------- ArrayResize(Base_Open1,1000,100); ArrayResize(Base_Close1,1000,100); ArrayResize(Signal_Open1,1000,100); ArrayResize(Signal_Close1,1000,100); ArrayInitialize(Base_Open1,0); ArrayInitialize(Base_Close1,0); ArrayInitialize(Signal_Open1,0); ArrayInitialize(Signal_Close1,0); ArraySetAsSeries (Base_Open1,true); ArraySetAsSeries (Base_Close1,true); ArraySetAsSeries (Signal_Open1,true); ArraySetAsSeries (Signal_Close1,true); //----------------------------------------------------------------------------------------------------------- for(int i=0;i<3;i++) { Base_Open1[i] = iMA(_Symbol,PERIOD_CURRENT,Base_Period,0,MODE_EMA,PRICE_OPEN,i); // Base_Period is set at int=13 Base_Close1[i] = iMA(_Symbol,PERIOD_CURRENT,Base_Period,0,MODE_EMA,PRICE_CLOSE,i); // Base_Period is set at int=13 Signal_Open1[i] = iMAOnArray(Base_Open1,0,Signal_Period,0,MODE_SMMA,i); // Signal_Period is at int=3 looking for previous indicator's data Signal_Close1[i] = iMAOnArray(Base_Close1,0,Signal_Period,0,MODE_SMMA,i); // Signal_Period is at int=3 looking for previous indicator's data } double PID_MA_Open1 = Signal_Open1[1]; //Previous indicator's data results Signal_Open1[1] bar 1 double PID_MA_Open2 = Signal_Open1[2]; //Previous indicator's data results Signal_Open1[2] bar 2 double PID_MA_Close1 = Signal_Close1[1]; //Previous indicator's data results Signal_Close1[1] bar 1 double PID_MA_Close2 = Signal_Close1[2]; //Previous indicator's data results Signal_Close1[2] bar 2 Print("PID_MA_Open1 " +DoubleToString(PID_MA_Open1)); //the results are not the same as on the chart Print("PID_MA_Open2 " +DoubleToString(PID_MA_Open2)); //the results on the chart Print("PID_MA_Close1 " +DoubleToString(PID_MA_Close1)); //the results on the chart Print("PID_MA_Close2 " +DoubleToString(PID_MA_Close2)); //the results on the chart /* Results: 2020.09.27 10:56:14.743 PID MA #Bitcoin,M1: PID_MA_Close2 3537.47692345 2020.09.27 10:56:14.743 PID MA #Bitcoin,M1: PID_MA_Close1 3537.73260105 2020.09.27 10:56:14.743 PID MA #Bitcoin,M1: PID_MA_Open2 3537.00266591 2020.09.27 10:56:14.743 PID MA #Bitcoin,M1: PID_MA_Open1 3537.32609459 */ //these results are wrong based on the visual results from the chart can anyone please help me address this problem. } //+---------------------------------------------------------------------------------+