AB的深度发掘

Discussion in 'AmiBroker' started by sunny99, Dec 29, 2011.

  1. 一直为AB没有象飞狐一样可以用EOD数据生成完整的行情报表和没有区间统计行情报表纠结。一直也没好好用,昨天偶然受到网友的"Addcolumn"函数应用启发,终于自己开发出了这两个功能。得到了和飞狐完全一样的效果,用起来顺手多了。
    另外一直以为AB选股不能保存到自定义的板块,所以拿着飞狐不放,现在发现原来是自己不会用。

    看来AB的功能还真是没有做不到,只有想不到。别的软件没有办法自己这么做。AB真是好东西。

    可惜显示的小数位只有两位,哪位知道怎么增加到3位?

    还有统计最近N天的成交量怎么写?我想改变N就能改变统计的天数。

    我现在统计最近3天写成:Volumn=V+Ref(V,-1)+Ref(V,-2);
    但要增加天数就要在后面手工加上,有点笨的感觉。

    令我纠结了N年的问题基本解决,很高兴和大家分享,有需要的朋友说一声。
    昨晚弄到半夜,累得高兴。

    不知道怎么上图?
     
  2. 小数位可以设置的,你查看下说明书.
     
  3. 看这个链接,第5步里面设置小数点到4位:
    http://www.amibroker.com/fxcm.html

    呵呵,Amibroker就是用得越深入就发现很多功能已经放在那里了。
     
  4. 谢谢两位的热心,我照着改了没有作用。chat里可以显示4位,但表格里只有两位。一点小瑕疵,不影响使用,因为双击symbol就能打开chat,能看到四位数。

    看来以后要多用,才能发现更多的好处。
    给金字塔提了点意见,还把我给封了,小家子气。

    没想到AB早就有这功能。

    另外对于指标排序还没发现怎么弄,哪位给点提示?

    谢谢
     
  5. Explore指标之后,如RSI,点击RSI的标题,RSI就可排序,再击,就反向排序。
     
  6. 谢谢你的热心回答,我试试。
     
  7. 你说的什么功能,不妨贴个画面上来看看。
    等着看你的上图呢。

    排队用SetSortColumns( -2 ); 参数的数字是用第几列来排队,+-符号是表示降序排列,或升序排列。

    小数表示,我给发个酷一点的例子吧。:D
    下面6.2,是表示2位小数。后边是根据不同条件用不同颜色来进行表示。
    AddColumn(peakHeight, ColumName, 6.2, colorDefault, IIf(peakHeight>70, colorRed, IIf(peakHeight>50, colorPink, IIf(peakHeight<28, colorDarkGrey, colorDefault )) ));

    写个循环不就可以了么?循环次数用天数做个变量。

    P.S.
    把下面这行放到google里面去检索一下,会有很多好例子出来。
    site:www.wisestocktrader.com SetSortColumns
     
  8.  
  9. 再试了一下,把6.4放后面就能显示四位了,但6表示什么?是表格宽度吗?怎么改小?改为3.4没什么变化。

    你真是高手一个,谢谢,希望多交流。
    AddColumn(O,"Open",6.4);
     
  10. sum()
     
  11. 谢谢,热心的朋友真多。我已经改成显示3位了,完美达到了要求。这个跟飞狐的动态显示牌完全一样了。跟大家分享一下。
    Filter =Close>0.01;
    Change=C-Ref(C,-1);
    percchan=Change/Ref(C,-1)*100;
    Amplitude=(H-L)/Ref(C,-1)*100;
    PriviousC=Ref(C,-1);
    Volumnratio=V/Ref(MA(V,5),1);
    AddColumn(Volumnratio,"%Vratio");
    AddColumn(percchan,"%ValuCh");
    AddColumn(PriviousC,"PreC",1.3);
    AddColumn(O,"Open",1.3);
    AddColumn(H,"High",1.3);
    AddColumn(L,"Low",1.3);
    AddColumn(C,"Last",1.3);
    AddColumn(V,"Volumn",1.3);
    AddColumn(Change,"ValuCh",1.3);
    AddColumn(Amplitude,"%Amp");
     
  12. rypan照你的提示改好了。这个简单,要写循环头都大了。
    N日区间统计表和大家分享,谢谢各位热心相助。

    纠结了N年的事得以解决,很高兴和大家分享。

    分享是快乐的事,祝大家新年好,财源滚滚。

    这里n=3,可以自己改任意天数。

    Filter = Close>0.010;
    n=3;
    Change=C-Ref(C,-n);
    percchan=Change/Ref(C,-n)*100;
    Amplitude=(HHV(H,n)-LLV(L,n))/LLV(L,n)*100;
    PriviousC=Ref(C,-n);
    Open=Ref(O,-n+1);
    High=HHV(H,n);
    Low=LLV(L,n);
    Volumn=Sum(V,n);
    AddColumn(percchan,"%Change");
    AddColumn(PriviousC,"PreClose",1.3);
    AddColumn(Open,"Open",1.3);
    AddColumn(High,"High",1.3);
    AddColumn(Low,"Low",1.3);
    AddColumn(C,"Last",1.3);
    AddColumn(Volumn,"Volumn");
    AddColumn(Change,"Change",1.3);
    AddColumn(Amplitude,"%Amp");
     
  13. 再按_cdf_兄提示的方法给涨、跌加上不同颜色就更醒目了。
    把addcolumn(percchan,"%Change"),换成下面就有颜色了。
    AddColumn(percchan,"%Change",6.2,colorDefault,IIf(percchan>0, colorRed, IIf(percchan<0, colorGreen, colorDefault)));
     
  14. 飞狐用了多年,但AB很少用。现在一边在翻AB的说明书,一边顺手编写一些有用的公式。

    1、找出最近10天收阳线的天数。阳线越多自然是上涨的强势股;用explore找。
    Filter=1;
    Rise=C>O;
    LastRises=Sum(Rise,10);
    AddColumn(LastRises,"Riseday");

    2、放量股票:人聚财聚。重要的是放量后的走向。
    Value1=V;
    Filter = V > 10*Ref(V,-1) AND V>500000 AND C>0.02;
    AddColumn(V,"Volumn");
     
  15. AB上一个有参考意义的交易系统。用scan可以在主图上产生交易信号。正好学一下。用指标产生信号,飞狐只要点一按钮,AB要复杂得多。
    //Trade system
    /*
    Buy when exp mov avg crosses and the high is highest for 50 bars
    Sell when exp mov avg crosses back
    Cross is first variable moves to above the second variable
    */

    LongPer = Param("Long Period", 50, 30, 100, 5 ); /* select periods with parameter window */
    ShortPer = Param("Short Period", 5, 3, 10, 1 );

    LongMA = EMA( C, LongPer );
    ShortMA = EMA( C, ShortPer );
    LastHigh = HHV( H, LongPer );

    Buy = Cross( ShortMA, LongMA ) AND H > Ref( LastHigh, -1 );
    /* ref,-1 is used for the high to have todays high greater than the previous 50 bar high.
    To just use H==LastHigh couold mean a previous high was equal to current high */
    Sell = Cross( LongMA, ShortMA );
    /* exrem is one method to remove surplus strade signals*/
    Buy = ExRem(Buy,Sell);
    Sell = ExRem(Sell,Buy);

    感兴趣的是它突破最近高点的代码,下跌趋势要扭转,必须突破最后一个下跌的高点,“末跌高”。这是一个充分条件,但突破了,不一定就会涨上去。又可以多一个选股公式了。
     
  16. 指标中各种色彩应用,变色,线条粗细,彩带,虚线、背景色彩。这个公式很全面用到了。不想去看手册的,可直接从这里借用。谢谢提供者。

    SetChartBkColor(ParamColor("BkColor", colorBlueGrey));
    Bline = StochD(35,10,1);
    BlineShape = IIf(Bline >= 80 OR Bline<=20, shapeCircle, shapeNone);
    BlineColor = IIf(Bline>=80, colorGreen, IIf(Bline<=20, colorRed, colorWhite));
    Ribbon1a = StochK(5,3);
    Ribbon1b = StochD(5,3,3);
    Ribbon2a = StochK(9,3);
    Ribbon2b = StochD(9,3,3);
    Ribbon1Color =IIf(Ribbon1a>Ribbon1b,colorAqua, colorRed);
    Ribbon2Color =IIf(Ribbon2a>Ribbon2b,colorYellow, colorBlue);


    Plot(Bline, "Bline", colorWhite, styleThick);
    PlotShapes(BlineShape, BlineColor, 0, bline, 0);

    Plot(Ribbon1a, "Ribbon1a", colorBlack, styleLine|styleThick);
    Plot(Ribbon1b, "Ribbon1b", colorBlack, styleLine|styleThick);
    Plot(Ribbon2a, "Ribbon2a", colorBlack, styleLine|styleThick);
    Plot(Ribbon2b, "Ribbon2b", colorBlack, styleLine|styleThick);
    PlotOHLC( Ribbon1a , Ribbon1a , Ribbon1b ,Ribbon1a , "Ribbon1", Ribbon1Color , styleCloud );
    PlotOHLC( Ribbon2a , Ribbon2a , Ribbon2b ,Ribbon2b , "Ribbon2", Ribbon2Color , styleCloud );

    Plot( 20 , "", colorDarkGrey,styleDashed);
    Plot( 80 , "", colorDarkGrey,styleDashed);
     
  17. 真的不错,不过得培训
     
  18. 用区间统计功能方便地找出逆势股,比如澳洲股票在12月20日前几天都是下跌的。把auto analysis日期改为1220-1220,再调用区间统计公式,explore立马找出了逆势上涨的股票。飞狐是在K线上拉右键。有了这公式,也达到了同样效果。

    找市场热点,这就是一个有力的武器。一天强势不是强,几天强势自然更强。
     
  19. 成交量栏修改,取消小数位,栏调宽。
    AddColumn(Volumn,"Volumn",1.0,-2);
     
  20. Amibroker最强大的两个功能有两个:一个是exploration,一个是backtesting