Download MetaTrader 5

Output Custom Indicator Buffers from an Include Function

To add comments, please log in or register
paddythehotmail
20
paddythehotmail  

Hi Guys, 

 

I'm stumped on some code...can you help? 

 

I've got two functions in an include file (GetA and GetB). I want to use these two functions to populate two arrays that will later be used in two custom indicator buffers.

But for some reason, I can only get one array to populate. Please see my MWE below: 

 

Am I missing something about only being able to populate one custom indicator at a time within the special function start?  

int start()   {                       
   
   for(int i = 0; i <= 9;i++) {
      
      Var_a[i] = GetA(Lookback, T, R);  //Where GetA is a function in an include file
      Var_b[i] = GetB(Lookback, T, S);  //Where GetB is an identical function in the same include file
   
     
  
  Print("Var_a=",Var_a[i]);           //Interrogate the value of Var_a (successful)
  Print("Var_b=" , Var_b[i]);         //Interrogate the value of Var_b  (not successful) Why???
  
  Print("Var_a=",GetA(Lookback, T, R));  //Directly Interrogate the value of Var_a (successful)
  Print("Var_b=",GetB(Lookback, T, S)); //Directly Interrogate the value of Var_b (successful)
      
    
}    
   return;
}
honest_knave
Moderator
2431
honest_knave  
Please can you show the code where you declared/sized the arrays Var_a[] and Var_b[]
Keith Watford
Moderator
9641
Keith Watford  

We don't know whether Var_b[] is an indicator buffer or an array

If it is an array, have you sized it? 

paddythehotmail
20
paddythehotmail  

Hi guys, 

 

Thanks for chipping in. I have defined Var_a and Var_b globally at the beginning of my code. Apologies, I should have included it. 

So I define the the variables globally as an array (without sizing them), then look to use those arrays as a buffer for my custom indicator.  

 

#property indicator_separate_window
#property indicator_buffers 5

#define NEGATIVE_VALUE -1
#define THRESHOLD 0

#include <Functions.mqh>

extern   int      Lookback       =  5;


int file_handle;
int file_result;

double Var_a[];
double Var_b[];
 

 

SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,Var_a);
SetIndexLabel(0,"Variable A");

SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,Var_b);
SetIndexLabel(1,"Variable B");
paddythehotmail
20
paddythehotmail  
GumRai:

We don't know whether Var_b[] is an indicator buffer or an array

If it is an array, have you sized it? 

Forgive my stupid question GumRai, can it be both? My understanding is that I have defined Var_b[] as an array. I then call on this array to populate my indicator buffer

Thank you kindly for your help, I am truly stumped on this one.  

paddythehotmail
20
paddythehotmail  

Ah, gents I've solved it. 

 

My problem was that I was actually using 5 buffers, and I had Var_b[] being called using the 5th buffer. So there was a few blank buffers before Vab_b[]. Changing the buffer to the next available free one has worked.

Can I thank you both for taking the time to help, I thought that I had tried this solution before but obviously I'd done something incorrectly. 

 

Thanks again for your time.

Paddy.  

To add comments, please log in or register