FINVIZ和AMIBROKER结合

Discussion in 'AmiBroker' started by owl_sg, Aug 12, 2018.

  1. FINVIZ和AMIBROKER结合

    金融视觉网站 FINVIZ.COM 是美股交易的最为严谨的交易工具。我每日都使用它。FINVIZ的股票过滤功能有60多个过滤器,可以应用到7000只美国股票。https://finviz.com/

    在如下文章中, 我会应用 FINVIZ 一个简单的过滤组合,同时利用 AMIBROKER 软件的历史回测功能,来提供一个新的视角,进而挑选股票。同时给出这个简单策略的回测结果。

    FINVIZ 的股票选择

    就像你可以设想的, 60 多个过滤器,可以组合出许多可能。然而, 我们有所限制,因为我们没有通道可以立即得到基本面的数据(在AMIBROKER上)。事实上,得到和利用基本面的数据比较困难。所以,以下我们仅仅关注于FINVIZ技术面的功能。

    FINVIZ 的过滤器屏幕像如下的照片,我们设定了7个过滤器:




    [​IMG] (2018-08-12 20:23:45)[编辑]
    [​IMG]
    通过FINVIZ, 我们挑选的股票具有如下的特点:

    • 属于标普500成分股
    • 收盘高于20日均线
    • 收盘高于200日均线
    • ATR(14) < 1
    • 相对成交量 > 1 (Relative Volume)
    • 向下跳空缺口
    • 股价低于50美元

    注:ATR指标,在FINVIZ 和 AMIBROKER 中,略微不同, 我在程序中采用FINVIZ 的方法。具体参考如下:
    https://finviz.com/help/screener.ashx

    我用AMIBROKER 软件,使用AFL语言,编写以上策略,数据用广受好评的Norgate 数据。该数据调整了股息,及股票的拆分。

    以下是AMIBROKER的设定:

    • 日线数据
    • 最初股本100,000美元
    • 证券组合,最多20只股票
    • 头寸大小,5% (等权重)
    • 卖出条件,20%的追踪止损
    • 买卖时间,下一日的开盘价
    • 同等条件下的排名, 相对成交量 (值大的优先)

    概括如下, 我们根据如上的FINVIZ 的设定,买入标普500成分股。所有的信号用收盘价计算,买卖用下一日的开盘价执行。

    我们用20%的追踪止损卖出。当追踪止损触及时,用下一日的开盘价退出。

    当多只股票有重复信号时,我们首先选择较高的相对成交量股票。你可以通过FINVIZ筛选相对成交量的列。

    相对成交量的定义是成交量除以3个月的平均成交量。

    测试结果:

    年化收益率11.86%, 最大回撤19.82%,胜率57.62%。

    All trades Long trades Short trades
    Initial capital
    100000.00 100000.00 100000.00
    Ending capital 367240.99 367240.99 100000.00
    Net Profit 267240.99 267240.99 0.00
    Net Profit % 267.24 % 267.24 % 0.00 %
    Exposure % 86.17 % 86.17 % 0.00 %
    Net Risk Adjusted Return % 310.15 % 310.15 % N/A
    Annual Return % 11.86 % 11.86 % 0.00 %
    Risk Adjusted Return % 13.76 % 13.76 % N/A

    [​IMG]

    [​IMG]

    [​IMG]
    AFL代码:

    //Good Results From Backtesting A FINVIZ Stock Screen
    //https://jbmarwood.com/backtesting-finviz-stock-screen/#more-11212

    SetTradeDelays(1,1,1,1);
    BuyPrice = O;
    SellPrice = O;

    TrueRange = Max(H, Ref(C,-1)) - Min(L, Ref(C,-1));

    RelativeVol = V / MA(V,66);

    PositionScore = RelativeVol;

    //belong to the S&P 500
    C20 = C > MA(C, 20);
    C200 = C > MA(C, 200);
    ATR14 = EMA(TrueRange, 14) < 1;
    RelVol = RelativeVol > 1;
    GapD = GapDown();
    C50 = C < 50;

    Qty = 20;
    SetOption("MaxOpenPositions", Qty);
    SetPositionSize(100/Qty, spsPercentOfEquity);

    Buy = C20 AND C200 AND ATR14 AND RelVol AND GapD AND C50;
    Sell = 0;

    ApplyStop(stopTypeTrailing, stopModePercent, 20, True);


    小结

    我们使用FINVIZ的7个过滤器来挑选股票, 使用历史数据来回测。 具体的交易规则上面详细列出。 我们得到的测试结果还好。值得注意的是,我们没有使用任何优化参数的措施, 仅仅是简单过滤器的规则组合。

    今日利用上述规则挑选的股票为: BLL, CCE, CTL, MOS, SWN, WMB 等6只股票。(2018 August 12)

    [​IMG]

    [​IMG]
     
  2. copy from blog.sina.com.cn/pkunus, detail can refer to it.