Triangular Moving Average.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:4k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Triangular Moving Average
  4. //  Author/Uploader: Anthony Faragasso 
  5. //  E-mail:          ajf1111@epix.net
  6. //  Date/Time Added: 2002-12-14 11:47:32
  7. //  Origin:          
  8. //  Keywords:        Moving Average
  9. //  Level:           basic
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=240
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=240
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  A Triangular moving average is similar to exponential and
  17. //
  18. //  weighted moving averages except a different weighting scheme
  19. //
  20. //  is used. Exponential and Weighted averages assign the majority
  21. //
  22. //  of the weight to the most recent data. Simple moving averages
  23. //
  24. //  assign the weight equally across all the data. With a Triangular
  25. //
  26. //  moving average, the majority of the weight is assigned to the middle
  27. //
  28. //  portion of the data.
  29. //
  30. //------------------------------------------------------------------------------
  31. //Triangular Moving average
  32. //Anthony Faragasso
  33. //December, 2002
  34. /* A Triangular moving average is similar to exponential AND 
  35. weighted moving averages except A different weighting scheme
  36. is used. Exponential AND Weighted averages assign the majority
  37. of the weight to the most recent data. Simple moving averages
  38. assign the weight equally across all the data. With A Triangular
  39. moving average, the majority of the weight is assigned to the middle
  40. portion of the data.*/
  41. Odd=13;//enter Odd numbers only
  42. CoefOdd=round(Odd/2);
  43. Even=12;//enter Even numbers only
  44. Coefeven=Even/2;
  45. Coefeven2=Coefeven+1;
  46. CongestionPercent=2.8;/*Set % above/below Moving average for congestion / sideways market*/
  47. TriangularOdd=MA(MA(C,CoefOdd),CoefOdd);
  48. TriangularEven=MA(MA(C,Coefeven),Coefeven2);
  49. finalMov_avg=IIf(Odd > even,triangularOdd,TriangularEven);
  50. Color=colorBrightGreen;//select Moving average line color
  51. tickercolor=colorBlack;//select price color
  52. Plot(finalMov_avg,"",IIf(C < finalmov_avg,colorRed,Color),styleLine|styleThick);
  53. Plot(C,"",tickercolor,styleCandle);
  54. Title=Name()+"..."+"( "+WriteIf(Odd > even,WriteVal(Odd,1),WriteVal(even,1))+" ) Period "+EncodeColor(Color)+"Triangular"+WriteIf(Odd > even,"ODD","EVEN")+" Moving Average"+"..."+EncodeColor(colorBlack)+ WriteIf(C < finalMov_avg,"Close is "+EncodeColor(colorRed)+"Below"+EncodeColor(colorBlack)+" Moving Average by ","Close is"+EncodeColor(colorBrightGreen)+" Above"+EncodeColor(colorBlack)+" Moving Average by ")+"("+WriteVal(((C/finalMov_avg)-1)*100,1.1)+"% )"+"n"+WriteIf(finalmov_avg-Ref(finalmov_avg,-1)>0," Slope Of Average is UP : ","Slope Of Average is DOWN :")+WriteIf((((C/finalMov_avg)-1)*100 <= CongestionPercent AND ((C/finalMov_avg)-1)*100 >= -CongestionPercent),EncodeColor(colorYellow)+" with Price Congestion / Divergence to Average ","")+"n"+WriteIf(Ref(C,-1) < Ref(finalmov_avg,-1) AND C > finalmov_avg,EncodeColor(colorGreen)+"Possible Change in Trend From Down to Up"+"n"+" OR Short Term Correction of Previous Trend",WriteIf(Ref(C,-1) > Ref(finalmov_avg,-1) AND C < finalmov_avg,EncodeColor(colorRed)+"Possible Change in Trend From Up to Down "+"n"+" OR Short Term Correction to Previous Trend",""))+"n"+WriteIf(C > finalmov_avg,EncodeColor(colorGreen)+"Close has been above Moving Average ( "+WriteVal(BarsSince(C < finalmov_avg),1)+" ) Bars",EncodeColor(colorRed)+"Close has been Below Moving Average ( "+WriteVal(BarsSince(C > finalmov_avg),1)+" ) Bars")+"n"+EncodeColor(colorBlack)+"The average # of Bars Above ( "+WriteVal(round(Cum(BarsSince(C < finalmov_avg)/Cum(1))),1)+" )"+"n"+"The average # of Bars Below ( "+WriteVal(round(Cum(BarsSince(C > finalmov_avg)/Cum(1))),1)+" )";