V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
raquant
V2EX  ›  Python

量化:常见策略指标合集

  •  1
     
  •   raquant · 2017-02-28 11:23:50 +08:00 · 1671 次点击
    这是一个创建于 2816 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1 、 MACD 指标

    MACD 称为指数平滑移动平均线,是从双指数移动平均线发展而来的,由快的指数移动平均线( EMA12 )减去慢的指数移动平均线( EMA26 )得到快线 DIF ,再用 2×(快线 DIF-DIF 的 9 日加权移动均线 DEA )得到 MACD 柱。 MACD 的意义和双移动平均线基本相同,即由快、慢均线的离散、聚合表征当前的多空状态和股价可能的发展变化趋势,但阅读起来更方便。当 MACD 从负数转向正数,是买的信号。当 MACD 从正数转向负数,是卖的信号。当 MACD 以大角度变化,表示快的移动平均线和慢的移动平均线的差距非常迅速的拉开,代表了一个市场大趋势的转变。

    公式:

    12 日 EMA 的计算:

    EMA ( 12 ) = 前一日 EMA ( 12 ) X 11/13 + 今日收盘价 X 2/13

    26 日 EMA 的计算:

    EMA ( 26 ) = 前一日 EMA ( 26 ) X 25/27 + 今日收盘价 X 2/27

    差离值( DIF )的计算:

    DIF = EMA ( 12 ) - EMA ( 26 ) 。

    根据差离值计算其 9 日的 EMA ,即离差平均值,是所求的 DEA 值。为了不与指标原名相混淆,此值又名 DEA 或 DEM 。   今日 DEA = (前一日 DEA X 8/10 + 今日 DIF X 2/10 )

    用( DIF-DEA )*2 即为 MACD 柱状图。

    简易实现代码: class Myclass extends BackTestTradingStrategy{ String stock = "sha-601318"; MACDFactor macdFactor = new MACDFactor(); void init(BackTestContext context){
    universe.add(stock); }//end of init

    void handleData(BackTestContext context,BarData data){ double macd = macdFactor.getPriorValue(stock); record("macd",macd); }//end of handle_bar }

    2.RSI 指标(Relative Strength Index)

    RSI 的原理简单来说是以数字计算的方法求出买卖双方的力量对比,譬如有 100 个人面对一件商品,如果 50 个人以上要买,竞相抬价,商品价格必涨。相反,如果 50 个人以上争着卖出,价格自然下跌。

    强弱指标理论认为,任何市价的大涨或大跌,均在 0-100 之间变动,根据常态分配,认为 RSI 值多在 30-70 之间变动,通常 80 甚至 90 时被认为市场已到达超买状态,至此市场价格自然会回落调整。当价格低跌至 30 以下即被认为是超卖状态,市价将出现反弹回升。

    公式:

    LC := REF(CLOSE,1);

    RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;

    RSI2:SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100;

    RSI3:SMA(MAX(CLOSE-LC,0),N3,1)/SMA(ABS(CLOSE-LC),N3,1)*100;

    这里还有一种算法:

    RS:= SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1)

    RSI:= 100*RS/(1+RS)

    简易实现代码:(前一个是 Java ,这一个是 Python) def init(context): context.s="sha-601318" universe.extend(context.s) f1=RSIFactor(14,'close') reg_factor("rsi",f1) def every_day(context,data): alldata=factor_output("rsi","sha-601318") record("RSI",alldata["rsi"])

    3.顺势指标( CCI )

    CCI 指标是美国股市技术分析 家唐纳德·蓝伯特(Donald Lambert)于 20 世纪 80 年代提出的,专门测量股价、外汇或者贵金属交易是否已超出常态分布范围。属于超买超卖类指标中较特殊的一种。波动于正无穷大和负无穷大之间。但是,又不需要以 0 为中轴线,这一点也和波动于正无穷大和负无穷大的指标不同。

    用法:

    1.当 CCI 指标曲线在+100 线~-100 线的常态区间里运行时,CCI 指标参考意义不大,可以用 KDJ 等其它技术指标进行研判。

    2.当 CCI 指标曲线从上向下突破+100 线而重新进入常态区间时,表明市场价格的上涨阶段可能结束,将进入一个比较长时间的震荡整理阶段,应及时平多做空。

    3.当 CCI 指标曲线从上向下突破-100 线而进入另一个非常态区间(超卖区)时,表明市场价格的弱势状态已经形成,将进入一个比较长的寻底过程,可以持有空单等待更高利润。如果 CCI 指标曲线在超卖区运行了相当长的一段时间后开始掉头向上,表明价格的短期底部初步探明,可以少量建仓。 CCI 指标曲线在超卖区运行的时间越长,确认短期的底部的准确度越高。

    4.CCI 指标曲线从下向上突破-100 线而重新进入常态区间时,表明市场价格的探底阶段可能结束,有可能进入一个盘整阶段,可以逢低少量做多。

    5.CCI 指标曲线从下向上突破+100 线而进入非常态区间(超买区)时,表明市场价格已经脱离常态而进入强势状态,如果伴随较大的市场交投,应及时介入成功率将很大。

    6.CCI 指标曲线从下向上突破+100 线而进入非常态区间(超买区)后,只要 CCI 指标曲线一直朝上运行,表明价格依然保持强势可以继续持有待涨。但是,如果在远离+100 线的地方开始掉头向下时,则表明市场价格的强势状态将可能难以维持,涨势可能转弱,应考虑卖出。如果前期的短期涨幅过高同时价格回落时交投活跃,则应该果断逢高卖出或做空。

    公式:

    第一种计算过程如下:

    CCI ( N 日)=( TP - MA )÷MD÷0.015

    其中, TP=(最高价+最低价+收盘价)÷3

    MA=近 N 日收盘价的累计之和÷N

    MD=近 N 日( MA -收盘价)的累计之和÷N

    0.015 为计算系数, N 为计算周期

    简易实现代码: class Myclass extends BackTestTradingStrategy{ String stock = "sha-601318"; CCIFactor cciFactor = new CCIFactor(); void init(BackTestContext context){
    universe.add(stock); }//end of init

    void handleData(BackTestContext context,BarData data){ double cci = cciFactor.getPriorValue(stock); record("cci",cci); }//end of handle_bar }

    4.KDJ 指标

    KDJ 指标又叫随机指标,是一种相当新颖、实用的技术分析指标,它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具。

    随机指标 KDJ 一般是用于股票分析的统计体系,根据统计学原理,通过一个特定的周期(常为 9 日、 9 周等)内出现过的最高价、最低价及最后一个计算周期的收盘价及这三者之间的比例关系,来计算最后一个计算周期的未成熟随机值 RSV ,然后根据平滑移动平均线的方法来计算 K 值、 D 值与 J 值,并绘成曲线图来研判股票走势。

    *这个忒随机,如果封装成 Factor 有的用户认为不靠谱,所以 KDJ 指标就由大家自己用 Random 类来实现啦

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4107 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:21 · PVG 13:21 · LAX 21:21 · JFK 00:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.