English

## difference between buffers

 75 pascalboy 2014.03.15 21:48   Hi, Let us say in an indicator there are three buffers. Can we attend buf_0 (i) minus buf_1 (i-1) to buf_2 (i). Buf_2(i)=buf_0(i)-buf_(i-1). It says out of range error. Why? Notice time difference . (i), (i-1).
 14167 RaptorUK 2014.03.15 22:19 #   pascalboy: Hi, Let us say in an indicator there are three buffers. Can we attend buf_0 (i) minus buf_1 (i-1) to buf_2 (i). Buf_2(i)=buf_0(i)-buf_(i-1). It says out of range error. Why? Notice time difference . (i), (i-1). You can only do this if you have already calculated buf_1[i - 1] . . . so which way does you loop go, increment or decrement ?
 75 pascalboy 2014.03.15 22:21 #   Decrement
 Moderator3503 GumRai 2014.03.15 23:05 #   pascalboy: Hi, Let us say in an indicator there are three buffers. Can we attend buf_0 (i) minus buf_1 (i-1) to buf_2 (i). Buf_2(i)=buf_0(i)-buf_(i-1). It says out of range error. Why? Notice time difference . (i), (i-1). When i = 0 buf[i-1] will give the out of range error
 75 pascalboy 2014.03.15 23:10 #   With (i+1) the same result. No change.
 1815 SDC 2014.03.15 23:23 #   Your indicator loop is decrementing ? If Indicator loop i starts at the highest bar index what is i + 1 ? Bar does not exist. When indicator gets down to calculating zero bar i what is i - 1 ? Bar does not exist.
 75 pascalboy 2014.03.15 23:30 #   How can its logic be then?
 1815 SDC 2014.03.15 23:34 #   Logic goes like this, The highest available Bar is Bars-1. If buffer1[i] begins from Bars-1 and you want buffer2 to call buffer1[i+1] all through the chart, then buffer2[i] should begin from Bars-2 or If you want buffer2[i] to call Buffer1[i-1] you can only do that when buffer2[i] > 0 unless you make buffer1 calculate a value for Bar -1.
 75 pascalboy 2014.03.15 23:48 #   Thanks . You right.
 13116 WHRoeder 2014.03.16 16:14 #   You have a lookback of 1 for buffer2. Test for it. ```int counted = IndicatorCounted(); // if(counted < LB0) counted = LB0; // Do you look at earlier values for buf_0? for(int iBuf0 = Bars - 1 - counted; iBuf0 >= 0; iBuf0--)    buf_0[iBuf0] = ... #define LB1 1 if(counted < LB1) counted = LB1;    // You DO look at earlier values for buf_1 for(int iBuf1 = Bars - 1 - counted; iBuf1 >= 0; iBuf1--)    buf_1[iBuf1] = ... buf_0[iBuf1+LB1] ... // Look back 1 ```