3 Line Break.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:3k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    3 Line Break
  4. //  Author/Uploader: Aron Pipa 
  5. //  E-mail:          
  6. //  Date/Time Added: 2006-03-17 12:31:03
  7. //  Origin:          
  8. //  Keywords:        
  9. //  Level:           medium
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=599
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=599
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  TBL chart with adjustable reversal as desecribed by Steve Nison in "Beyond
  17. //  Candelsticks"
  18. //
  19. //  Thanks to Graham Kavanagh and Noname for the P&F chart code which I
  20. //  used as base reference for construction of 3LineBreak chart.
  21. //
  22. //------------------------------------------------------------------------------
  23. /*---------------------------------------------------
  24. 3 Line Break 
  25. Aron Pipa, March, 17, 2006
  26. --------------------------------------------------------*/
  27. GraphXSpace=7; 
  28. numline = Param("Break",2, 2, 10, 1);
  29. j =0;
  30. Line[j]= C[0];
  31. Op[j]= C[0]; 
  32. direction = 0; 
  33. up=0; // count up lines
  34. down=0;// count down lines
  35. Count=1; // count lines
  36. for( i = 1; i < BarCount; i++ )
  37. {
  38. if(direction[j] == 0) // continues down 
  39. {
  40. if(C[i] < Line[j] ) 
  41. {
  42. j++; 
  43. direction[j] = 0; 
  44. Line[j] = C[i];
  45. Op[j] =Line[j-1];
  46. down++;
  47. up=0;
  48. Count++;
  49. }
  50. else
  51. {
  52. if(Count==1 && C[i] > OP[j] )// I-st reverse
  53. {
  54. j++; 
  55. direction[j] = 1; 
  56. Line[j] = C[i];
  57. Op[j] = Op[j-1];
  58. up++;
  59. down=0;
  60. Count++;
  61. }
  62. if(Count>1 && down  ==1 && C[i] > Line[j-1])//  reverse after 1 down line
  63. {
  64. j++; 
  65. direction[j] = 1; 
  66. Line[j] = C[i];
  67. Op[j] = Op[j-1];
  68. up++;
  69. down=0;
  70. Count++;
  71. }
  72. if(Count >1  && down  >1 && down < numline && C[i] > Op[j-1])//simple reverse 
  73. {
  74. j++; 
  75. direction[j] = 1; 
  76. Line[j] = C[i];
  77. Op[j] = Op[j-1];
  78. up++;
  79. down=0;
  80. Count++;
  81. }
  82. if(  down >= numline && C[i] > Op[j-(numline -1)]) // white trunaround line
  83. {
  84. j++; 
  85. direction[j] = 1; 
  86. Line[j] = C[i];
  87. Op[j] = Op[j-1];
  88. up++;
  89. down=0;
  90. Count++;
  91. }
  92. }
  93. }
  94. else // continues up
  95. {
  96. if(C[i] > Line[j]) 
  97. {
  98. j++; 
  99. direction[j] = 1; 
  100. Line[j] = C[i];
  101. op[j] = Line[j-1];
  102. up++;
  103. down=0;
  104. Count++;
  105. else
  106. {
  107. if(Count==1  && C[i] < OP[j] )// I-st reverse
  108. {
  109. j++; 
  110. direction[j] = 0; 
  111. Line[j] =C[i];
  112. Op[j] = Op[j-1];
  113. down++;
  114. up=0;
  115. Count++;
  116. }
  117. if(Count>1 && up  ==1 && C[i] < Line[j-1])//  reverse after 1 up line
  118. {
  119. j++; 
  120. direction[j] = 0; 
  121. Line[j] =C[i];
  122. Op[j] = Op[j-1];
  123. down++;
  124. up=0;
  125. Count++;
  126. }
  127. if( Count>1 && up  >1 && up < numline && C[i] < Op[j-1]) //simple reverse 
  128. {
  129. j++; 
  130. direction[j] = 0; 
  131. Line[j] =C[i];
  132. Op[j] = Op[j-1];
  133. down++;
  134. up=0;
  135. Count++;
  136. }
  137. if( up >= numline && C[i] < Op[j-(numline -1)])//black trunaround line
  138. {
  139. j++; 
  140. direction[j] = 0; 
  141. Line[j] =C[i];
  142. Op[j] = Op[j-1];
  143. down++;
  144. up=0;
  145. Count++;
  146. }
  147. }
  148. }
  149. }
  150. delta = BarCount - j -1;
  151. direction = Ref(direction, - delta); 
  152. C= Ref(Line, - delta); 
  153. O=(Ref(Op,-delta));
  154. H= L=C; 
  155. Plot(C,"", 39, styleCandle); 
  156. Title = Name() + "  Three Line Break" +"n"+
  157. "Value = " + SelectedValue(C)  +"n"+
  158. "Break = " + numline;