[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: System development tutorial by Herman van den Bergen



PureBytes Links

Trading Reference Links




hello,
 
what I sometime notice is that certain symbols 
whcih I try to put at certain places in the chart seem to change if I blow up 
the chart and scroll through it. 
 
My question is: is this an indication of an error 
in the code or do I not understand how exactly Amibroker operates when plotting 
the chart. As an example I give the code below which is part my interpretation 
of Welles Wilders "Reaction Trend System". I give here only the calculation of 
the "phase". This phase is added to the chart using the numbers 1, 2 and 3. 

 
Now if you make a chart of INTRADAY data (e.g. the 
hourly data) and not plot all the data but just like 30 days and use the 
mouse-scroll to move the chart from left to right or the other way around you 
will notice that sometimes the numbers change. Why is that? Is it due to an 
error in coding or is it the way Amibroker calculates the chart?
 
So maybe in general my question is: if I see 
indicators changing in the chart when scrolling through it is this immediatelly 
a sign that there is an error in the code?
 
thnks, Ed
 
 
part of the code. Note: try it using Intraday data 
(hourly)
 
 
 
<FONT 
color=#0000ff>TimeFrameSet( <FONT 
color=#000000>inDaily<FONT 
size=2> ); // 
--------------------------------------<FONT 
face="Courier New"> <FONT 
color=#008000>//calculate the average + the four price action 
points.<FONT 
color=#000000> // 
average<FONT 
color=#000000> xx = (H<FONT 
color=#000000> + L 
+ C) / <FONT 
color=#ff00ff>3<FONT 
color=#000000>; // four price action 
points<FONT 
color=#000000> // 1) Buy 
point<FONT 
color=#000000> B1 = 2 
* Ref(xx,-<FONT 
color=#ff00ff>1) - <FONT 
color=#0000ff>Ref(<FONT 
color=#000000>H,-<FONT 
color=#ff00ff>1<FONT 
color=#000000>); // 2) Sell 
point<FONT 
color=#000000> S1 = 2 
* Ref(xx,-<FONT 
color=#ff00ff>1) - <FONT 
color=#0000ff>Ref(<FONT 
color=#000000>L,-<FONT 
color=#ff00ff>1<FONT 
color=#000000>); // 3) High break out 
point<FONT 
color=#000000> HBOP = 2<FONT 
color=#000000> * Ref<FONT 
color=#000000>(xx,-1) - 
2 * <FONT 
color=#0000ff>Ref(<FONT 
color=#000000>L,-<FONT 
color=#ff00ff>1) + <FONT 
color=#0000ff>Ref(<FONT 
color=#000000>H,-<FONT 
color=#ff00ff>1<FONT 
color=#000000>); // 4) Low break out point 
<FONT face="Courier New" 
size=2>LBOP = <FONT 
color=#ff00ff>2 * <FONT 
color=#0000ff>Ref(xx,-<FONT 
color=#ff00ff>1) - <FONT 
color=#ff00ff>2 * <FONT 
color=#0000ff>Ref(<FONT 
color=#000000>H,-<FONT 
color=#ff00ff>1) + <FONT 
color=#0000ff>Ref(<FONT 
color=#000000>L,-<FONT 
color=#ff00ff>1<FONT 
color=#000000>); // short trail stop: highest 
high made in previous 2 days (used in trend mode only)<FONT 
face="Courier New"> trailstop_short = 
Ref(<FONT 
color=#0000ff>HHV(<FONT 
color=#000000>H,<FONT 
color=#ff00ff>2),-<FONT 
color=#ff00ff>1<FONT 
color=#000000>); // long trail stop: lowest low 
made in previous 2 days (used in trend mode only)<FONT 
face="Courier New"> trailstop_long = 
Ref(<FONT 
color=#0000ff>LLV(<FONT 
color=#000000>L,<FONT 
color=#ff00ff>2),-<FONT 
color=#ff00ff>1<FONT 
color=#000000>); // 
--------------------------------------<FONT 
face="Courier New"> phase_arr = 
C<FONT 
face="Courier New">; phase_arr = 
0<FONT 
size=2>; phase_arr_l1 = phase_arr; <FONT 
color=#008000>// additional layer of phase changes<FONT 
face="Courier New"> stop_short = phase_arr; 
stop_long = stop_short; short_index_position = phase_arr; 
long_index_position = short_index_position; b_day = phase_arr; s_day = 
phase_arr; // first determine "B" and "S" 
days<FONT 
color=#000000> idx = 0<FONT 
face="Courier New">; <FONT 
color=#800000>for (i = <FONT 
color=#ff00ff>0; i < <FONT 
color=#000000>BarCount<FONT 
size=2>; i++) {    <FONT 
color=#008000>// short trend mode<FONT 
face="Courier New"> 
   if<FONT 
color=#000000> (L[ 
i ] < LBOP[ i ] <FONT 
color=#000000>AND<FONT 
size=2> i >= idx) {     
      // indicate 
the short trend mode outbreak<FONT 
size=2> 
      short_index_position[ i ] = <FONT 
color=#ff00ff>1<FONT 
color=#000000>;     
      // variables 
tracking lowest day in short trend mode<FONT 
face="Courier New"> 
      idx_b = i; 
      loi = <FONT 
color=#000000>L<FONT 
size=2>[ i ];        
      // exit at 
trailing stop<FONT 
color=#000000>       <FONT 
color=#800000>for (j = i + <FONT 
color=#ff00ff>1; j < <FONT 
color=#000000>BarCount<FONT 
size=2>; j++) {        
         <FONT 
color=#800000>if (<FONT 
color=#000000>L<FONT 
size=2>[ j ] < loi) { 
          
            loi 
= L<FONT 
face="Courier New">[ j ]; 
             
            <FONT 
color=#008000>// track index of lowest point in trend mode 
<FONT face="Courier New" 
size=2>            idx_b 
= j;           
         } 
       
         <FONT 
face="Courier New">if<FONT 
color=#000000> (H<FONT 
face="Courier New">[ j ] > trailstop_short[ 
j ]) {           
            stop_short[ 
j ] = 1<FONT 
face="Courier New">; 
             
            <FONT 
color=#008000>// idx is used to make sure we finish a position before starting a 
new one<FONT 
color=#000000> 
            idx 
= j; 
             
            <FONT 
color=#008000>// used to exit the j-for loop<FONT 
face="Courier New"> 
            j = 
BarCount - 
1<FONT 
size=2>; 
          
         } 
       
      } 
       
      // save index 
position of lowest point in short trend mode<FONT 
face="Courier New"> 
      b_day[ idx_b ] = <FONT 
color=#ff00ff>1<FONT 
color=#000000>;        } <FONT 
color=#800000>else <FONT 
color=#800000>if (<FONT 
color=#000000>H[ i ] > HBOP[ i ] 
AND<FONT 
face="Courier New"> i >= idx) { 
          <FONT 
color=#008000>// indicate the long trend mode outbreak<FONT 
face="Courier New"> 
      long_index_position[ i ] = <FONT 
color=#ff00ff>1<FONT 
color=#000000>;     
      // variables 
tracking highest day in long trend mode<FONT 
face="Courier New"> 
      idx_s = i; 
      hii = <FONT 
color=#000000>H<FONT 
size=2>[ i ];     
      // exit at 
trailing stop<FONT 
color=#000000>       <FONT 
color=#800000>for (j = i + <FONT 
color=#ff00ff>1; j < <FONT 
color=#000000>BarCount<FONT 
size=2>; j++) {        
         <FONT 
color=#800000>if (<FONT 
color=#000000>H<FONT 
size=2>[ j ] > hii) { 
          
            hii 
= H<FONT 
face="Courier New">[ j ]; 
             
            <FONT 
color=#008000>// track index of highest point in trend mode 
<FONT face="Courier New" 
size=2>            idx_s 
= j;           
         } 
          
         <FONT 
face="Courier New">if<FONT 
color=#000000> (L<FONT 
face="Courier New">[ j ] < trailstop_long[ j 
]) {           
            stop_long[ 
j ] = 1<FONT 
face="Courier New">; 
             
            <FONT 
color=#008000>// idx is used to make sure we finish a position before starting a 
new one<FONT 
color=#000000> 
            idx 
= j; 
             
            <FONT 
color=#008000>// used to exit the j-for loop<FONT 
face="Courier New"> 
            j = 
BarCount - 
1<FONT 
size=2>; 
          
         } 
       
      } 
       
      // save index 
position of highest point in long trend mode<FONT 
face="Courier New"> 
      s_day[ idx_s ] = <FONT 
color=#ff00ff>1<FONT 
color=#000000>;           } 
    } // fill in the 
rest of the phase array. Sequence: 1 - 2 - 3 - 1 - 2 - 
etc<FONT 
color=#000000> for<FONT 
color=#000000> (i = 1; i 
< BarCount<FONT 
face="Courier New">; i++) { 
   if<FONT 
color=#000000> (b_day[ i ] == <FONT 
color=#ff00ff>1<FONT 
color=#000000>) {     
      phase_arr[ i ] = <FONT 
color=#ff00ff>1<FONT 
color=#000000>;        
      // if b_day 
equal to the day of outbreak store the original phase<FONT 
face="Courier New"> 
      <FONT 
color=#800000>if (b_day[ i ] == <FONT 
color=#ff00ff>1 <FONT 
color=#000000>AND short_index_position[ i ] == 
1<FONT 
size=2>) {        
         <FONT 
color=#800000>if (phase_arr[ i - <FONT 
color=#ff00ff>1 ] == <FONT 
color=#ff00ff>1<FONT 
color=#000000>) {           
            phase_arr_l1[ 
i ] = 2<FONT 
face="Courier New">; 
             
         } <FONT 
color=#800000>else<FONT 
size=2> 
          
         <FONT 
color=#800000>if (phase_arr[ i - <FONT 
color=#ff00ff>1 ] == <FONT 
color=#ff00ff>2<FONT 
color=#000000>) {           
            phase_arr_l1[ 
i ] = 3<FONT 
face="Courier New">; 
          
         } 
          
         <FONT 
color=#800000>if (phase_arr[ i - <FONT 
color=#ff00ff>1 ] == <FONT 
color=#ff00ff>3<FONT 
color=#000000>) {           
            phase_arr_l1[ 
i ] = 1<FONT 
face="Courier New">; 
          
         } 
          
         <FONT 
color=#800000>if (phase_arr[ i - <FONT 
color=#ff00ff>1 ] == <FONT 
color=#ff00ff>0<FONT 
color=#000000>) {           
            phase_arr_l1[ 
i ] = 1<FONT 
face="Courier New">; 
          
         }          
       
      } 
          } <FONT 
color=#800000>else <FONT 
color=#800000>if (s_day[ i ] == <FONT 
color=#ff00ff>1<FONT 
color=#000000>) {     
      phase_arr[ i ]  = <FONT 
color=#ff00ff>3<FONT 
color=#000000>;        
      // if s_day 
equal to the day of outbreak store the original phase<FONT 
face="Courier New"> 
      <FONT 
color=#800000>if (s_day[ i ] == <FONT 
color=#ff00ff>1 <FONT 
color=#000000>AND long_index_position[ i ] == 
1<FONT 
size=2>) {        
         <FONT 
color=#800000>if (phase_arr[ i - <FONT 
color=#ff00ff>1 ] == <FONT 
color=#ff00ff>1<FONT 
color=#000000>) {           
            phase_arr_l1[ 
i ] = 2<FONT 
face="Courier New">; 
             
         } <FONT 
color=#800000>else<FONT 
size=2> 
          
         <FONT 
color=#800000>if (phase_arr[ i - <FONT 
color=#ff00ff>1 ] == <FONT 
color=#ff00ff>2<FONT 
color=#000000>) {           
            phase_arr_l1[ 
i ] = 3<FONT 
face="Courier New">; 
          
         } 
          
         <FONT 
color=#800000>if (phase_arr[ i - <FONT 
color=#ff00ff>1 ] == <FONT 
color=#ff00ff>3<FONT 
color=#000000>) {           
            phase_arr_l1[ 
i ] = 1<FONT 
face="Courier New">; 
          
         } 
          
         <FONT 
color=#800000>if (phase_arr[ i - <FONT 
color=#ff00ff>1 ] == <FONT 
color=#ff00ff>0<FONT 
color=#000000>) {           
            phase_arr_l1[ 
i ] = 1<FONT 
face="Courier New">; 
          
         }          
       
      }       
       
          } <FONT 
color=#800000>else <FONT 
color=#800000>if (b_day[ i ] == <FONT 
color=#ff00ff>0 <FONT 
color=#000000>AND s_day[ i ] == <FONT 
color=#ff00ff>0 <FONT 
color=#000000>AND phase_arr[ i - <FONT 
color=#ff00ff>1 ] == <FONT 
color=#ff00ff>3<FONT 
color=#000000>) {     
      phase_arr[ i ] = <FONT 
color=#ff00ff>1<FONT 
color=#000000>;        } <FONT 
color=#800000>else <FONT 
color=#800000>if (b_day[ i ] == <FONT 
color=#ff00ff>0 <FONT 
color=#000000>AND s_day[ i ] == <FONT 
color=#ff00ff>0 <FONT 
color=#000000>AND phase_arr[ i - <FONT 
color=#ff00ff>1 ] == <FONT 
color=#ff00ff>2<FONT 
color=#000000>) {     
      phase_arr[ i ] = <FONT 
color=#ff00ff>3<FONT 
color=#000000>;        } <FONT 
color=#800000>else <FONT 
color=#800000>if (b_day[ i ] == <FONT 
color=#ff00ff>0 <FONT 
color=#000000>AND s_day[ i ] == <FONT 
color=#ff00ff>0 <FONT 
color=#000000>AND phase_arr[ i - <FONT 
color=#ff00ff>1 ] == <FONT 
color=#ff00ff>1<FONT 
color=#000000>) {       phase_arr[ i ] = 
2<FONT 
size=2>;    } } 
//<FONT 
face="Courier New"> daybar = <FONT 
color=#0000ff>Day<FONT 
size=2>(); // 
--------------------------------------<FONT 
face="Courier New"> <FONT 
color=#0000ff>TimeFrameRestore<FONT 
face="Courier New">(); <FONT 
color=#008000>// expand arrays <FONT 
color=#000000>xx = <FONT 
face="Courier New">TimeFrameExpand<FONT 
color=#000000>( xx, inDaily<FONT 
color=#000000>,mode = <FONT 
color=#000000>expandFirst<FONT 
face="Courier New">  ); B1 = 
TimeFrameExpand( B1, 
inDaily,mode = 
expandFirst<FONT 
face="Courier New">  ); S1 = 
TimeFrameExpand( S1, 
inDaily,mode = 
expandFirst<FONT 
face="Courier New">  ); HBOP = 
TimeFrameExpand( HBOP, 
inDaily,mode = 
expandFirst<FONT 
face="Courier New">  ); LBOP = 
TimeFrameExpand( LBOP, 
inDaily,mode = 
expandFirst<FONT 
face="Courier New">  ); 
trailstop_short = TimeFrameExpand<FONT 
color=#000000>( trailstop_short, <FONT 
color=#000000>inDaily,mode = <FONT 
color=#000000>expandFirst<FONT 
face="Courier New">  ); 
trailstop_long = TimeFrameExpand<FONT 
color=#000000>( trailstop_long, <FONT 
color=#000000>inDaily,mode = <FONT 
color=#000000>expandFirst<FONT 
face="Courier New">  ); 
// expand arrays <FONT 
color=#000000>phase_arr = 
<FONT 
color=#0000ff>TimeFrameExpand( phase_arr, 
inDaily,mode = 
expandFirst<FONT 
face="Courier New">  ); 
phase_arr_l1 = TimeFrameExpand<FONT 
color=#000000>( phase_arr_l1, <FONT 
color=#000000>inDaily,mode = <FONT 
color=#000000>expandFirst<FONT 
face="Courier New">  ); b_day = 
TimeFrameExpand( b_day, 
inDaily,mode = 
expandFirst<FONT 
face="Courier New">  ); s_day = 
TimeFrameExpand( s_day, 
inDaily,mode = 
expandFirst<FONT 
face="Courier New">  ); daybar = 
TimeFrameExpand( daybar, 
inDaily,mode = 
expandFirst<FONT 
face="Courier New">  ); 
// adjust phase array for charting 
purposes<FONT 
color=#000000> hlp_phase = phase_arr; hlp_phase = <FONT 
color=#ff00ff>0<FONT 
color=#000000>; hlp_b = hlp_phase; hlp_s = hlp_phase; hlp_phase_l1 = hlp_phase; 
for (i = 
1; i < <FONT 
color=#000000>BarCount<FONT 
size=2>; i++) {    <FONT 
color=#800000>if (HBOP[ i ] != HBOP[ i - 
1<FONT 
size=2>]) {     
      hlp_phase[ i ] = phase_arr[ i ]; 
      hlp_phase_l1[ i ] = phase_arr_l1[ i ]; 
      hlp_b[ i ] = b_day[ i ]; 
      hlp_s[ i ] = s_day[ i ]; 
          } } 
// For Chart <FONT 
color=#000000><FONT 
color=#0000ff>Plot(<FONT 
color=#000000>C,<FONT 
color=#ff00ff>"",<FONT 
color=#ff00ff>1,<FONT 
color=#ff00ff>64<FONT 
color=#000000>); Title<FONT 
color=#000000>=Name()+ 
", O:"+<FONT 
color=#0000ff>WriteVal(<FONT 
color=#000000>O)+ <FONT 
color=#ff00ff>", H:"+<FONT 
color=#0000ff>WriteVal(<FONT 
color=#000000>H)+ <FONT 
color=#ff00ff>", L:"+<FONT 
color=#0000ff>WriteVal(<FONT 
color=#000000>L)+ <FONT 
color=#ff00ff>", C:"+<FONT 
color=#0000ff>WriteVal(<FONT 
color=#000000>C<FONT 
size=2>); // 1 = "B" day, 
2 = "O" day, 3 = "S" day<FONT 
size=2> <FONT 
color=#0000ff>PlotShapes(<FONT 
color=#000000>shapeDigit1 * (hlp_phase == 
1),<FONT 
color=#0000ff>IIf(hlp_b == <FONT 
color=#ff00ff>1,<FONT 
color=#000000>colorYellow,<FONT 
color=#000000>colorWhite),<FONT 
color=#ff00ff>0, HBOP,<FONT 
color=#ff00ff>0<FONT 
color=#000000>); PlotShapes<FONT 
color=#000000>(shapeDigit2<FONT 
color=#000000> * (hlp_phase == 2<FONT 
color=#000000>),colorWhite<FONT 
color=#000000>,0, 
HBOP,0<FONT 
face="Courier New">); <FONT 
color=#0000ff>PlotShapes(<FONT 
color=#000000>shapeDigit3 * (hlp_phase == 
3),<FONT 
color=#0000ff>IIf(hlp_s == <FONT 
color=#ff00ff>1,<FONT 
color=#000000>colorYellow,<FONT 
color=#000000>colorWhite),<FONT 
color=#ff00ff>0, HBOP,<FONT 
color=#ff00ff>0<FONT 
color=#000000>); PlotShapes<FONT 
color=#000000>(shapeDigit1<FONT 
color=#000000> * (hlp_phase_l1 == 1<FONT 
color=#000000>),colorLightBlue<FONT 
color=#000000>,0, 
HBOP,-15<FONT 
face="Courier New">); <FONT 
color=#0000ff>PlotShapes(<FONT 
color=#000000>shapeDigit3 * (hlp_phase_l1 == 
3),<FONT 
color=#000000>colorLightBlue,<FONT 
color=#ff00ff>0, HBOP,-<FONT 
color=#ff00ff>15<FONT 
color=#000000>); // 
levels<FONT 
color=#000000> Plot<FONT 
color=#000000>(B1,""<FONT 
color=#000000>,colorBrightGreen<FONT 
color=#000000>,1<FONT 
face="Courier New">); <FONT 
color=#0000ff>Plot(S1,<FONT 
color=#ff00ff>"",<FONT 
color=#000000>colorRed,<FONT 
color=#ff00ff>1<FONT 
color=#000000>); Plot<FONT 
color=#000000>(HBOP,""<FONT 
color=#000000>,colorOrange<FONT 
color=#000000>,1<FONT 
face="Courier New">); <FONT 
color=#0000ff>Plot(LBOP,<FONT 
color=#ff00ff>"",<FONT 
color=#000000>colorGreen,<FONT 
color=#ff00ff>1<FONT 
face="Courier New">); 


Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html








Yahoo! Groups Links
To visit your group on the web, go to:http://groups.yahoo.com/group/amibroker/ 
To unsubscribe from this group, send an email to:amibroker-unsubscribe@xxxxxxxxxxxxxxx 
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.