Error "Acces Violation Read to 0x0001F5D0" - page 2

 

problem solved if you put the FillArrays in OnTick and remove timer

void OnTick()
 {
  FillArrays(InpHeikTimeframe,ArrayIndex,D_heike_array);
  FillArrays(_Period,ArrayIndex,cur_heike_array);
   double ma=EMA_H(cur_heike_array,1);
   double ma_d = EMA_H(D_heike_array,1);
   
   Print("MA=",ma);
   Print("ma=",ma_d);
 }
This is the complete MQ4 source:
Files:
test.mq4  5 kb
 
Yashar Seyyedin #:

problem solved if you put the FillArrays in OnTick and remove timer

This is the complete MQ4 source:

Unfortunately no.

These is what error I got :

2023.08.07 12:20:10.623	Expert kjbjb EURUSD.r,H1: removed
2023.08.07 12:20:10.620	Access violation write to 0x01D9C93D in 'C:\Users\danie\AppData\Roaming\MetaQuotes\Terminal\B8925BF731C22E88F33C7A8D7CD3190E\MQL4\Experts\Test\kjbjb.ex4'
2023.08.07 12:20:10.613	kjbjb EURUSD.r,H1: uninit reason 1
2023.08.07 12:20:09.990	kjbjb EURUSD.r,H1: ma=1.1026
2023.08.07 12:20:09.990	kjbjb EURUSD.r,H1: MA=1.0992
2023.08.07 12:20:09.863	kjbjb EURUSD.r,H1: ma=1.1026
2023.08.07 12:20:09.863	kjbjb EURUSD.r,H1: MA=1.0992
2023.08.07 12:20:08.453	kjbjb EURUSD.r,H1: ma=1.1026
2023.08.07 12:20:08.453	kjbjb EURUSD.r,H1: MA=1.0992
2023.08.07 12:20:07.802	kjbjb EURUSD.r,H1: ma=1.1026
2023.08.07 12:20:07.802	kjbjb EURUSD.r,H1: MA=1.0992
2023.08.07 12:20:07.646	kjbjb EURUSD.r,H1: ma=1.1026
2023.08.07 12:20:07.646	kjbjb EURUSD.r,H1: MA=1.0992
2023.08.07 12:20:06.574	kjbjb EURUSD.r,H1: ma=1.1026
2023.08.07 12:20:06.574	kjbjb EURUSD.r,H1: MA=1.0992
2023.08.07 12:19:55.159	kjbjb EURUSD.r,H1: ma=1.1026
2023.08.07 12:19:55.159	kjbjb EURUSD.r,H1: MA=1.0992
2023.08.07 12:19:53.915	kjbjb EURUSD.r,H1: ma=1.1026
2023.08.07 12:19:53.915	kjbjb EURUSD.r,H1: MA=1.0992
2023.08.07 12:19:53.062	kjbjb EURUSD.r,H1: initialized
2023.08.07 12:19:53.047	kjbjb EURUSD.r,H1 inputs: InpMAPeriod=21; InpHeikTimeframe=1440; 
2023.08.07 12:19:49.519	Expert Test\kjbjb EURUSD.r,H1: loaded successfully

This is what I get when I close . All values are correctly printed, but when I close EA I get this error

 

Yes. It does not work. I don't know why I thought it is working.

This is even simpler but it does not work.

double cur_heike_array[];

int OnInit()
 {
   FillArrays(30,cur_heike_array);
   return(INIT_SUCCEEDED);
 }
void OnTick()
 {
   double ma=EMA_H(cur_heike_array,1);
   Print("MA=",ma);
 }

double EMA_H(double &array[],int shift) 
 { 
   return(iMAOnArray(array,WHOLE_ARRAY,21,0,MODE_EMA,shift)); 
 }

void FillArrays(int sArrayIndex,double &array[])
 {
  ArrayResize(array,sArrayIndex,0);
  for(int i=0; i<sArrayIndex; i++)
    array[i]= 1;
 }
 


 
Alain Verleyen #:
Can you provide full code that compiles to reproduce this issue ?
Hello! Any thoughts? Thank you! 
 
Daniel Cioca #:
Hello! Any thoughts? Thank you! 
It's an MT4 bug.
 
Alain Verleyen #:
It's an MT4 bug.
Thank you! 
 

This is only happening when array is passed by refrence:

int array [] = { 2,45,56}

  double EMA_DIR(int &arr[] , int buff){return (iMAOnArray(arr,WHOLE_ARRAY,InpMAPeriod,0,MODE_EMA,buff));}  

if array is accesed whithin the function

int array[] = {1,34,56};

  double EMA_DIR(int buff){return (iMAOnArray(array,WHOLE_ARRAY,InpMAPeriod,0,MODE_EMA,buff));}  

it will not give any error

Reason: