资讯专栏INFORMATION COLUMN

java尝试编写macd,试验顶背离底背离

helloworldcoding / 2172人阅读

摘要:指标的背离有顶背离和底背离两种。顶背离现象一般是股价在高位即将反转转势的信号,表明股价短期内即将下跌,是卖出股票的信号。底背离现象一般是预示股价在低位可能反转向上的信号,表明股价短期内可能反弹向上,是短期买入股票的信号。

MACD是查拉尔·阿佩尔(Geral Appel)于1979年提出的,由一快及一慢指数移动平均(EMA)之间的差计算出来。“快”指短时期的EMA,而“慢”则指长时期的EMA,最常用的是12及26日EMA;
一般MACD的值是12日的平均值与26日平均值的差;SIGNAL是MACD9日平均值;HISTOGRAM是MACD与SIGNAL的差。

公式如下:

MACD:EMA(C,12)-EMA(C,26);

Signal:EMA(MACD,9);

Histogram:MACD-Signal;

顶背离和底背离的概念:

MACD指标的背离就是指MACD指标的图形的走势正好和K线图的走势方向正好相反。MACD指标的背离有顶背离和底背离两种。

(1)顶背离
  当股价K线图上的股票走势一峰比一峰高,股价一直在向上涨,而MACD指标图形上的由红柱构成的图形的走势是一峰比一峰低,即当股价的高点比前一次的高点高、而MACD指标的高点比指标的前一次高点低,这叫顶背离现象。顶背离现象一般是股价在高位即将反转转势的信号,表明股价短期内即将下跌,是卖出股票的信号。

(2)底背离
  底背离一般出现在股价的低位区。当股价K线图上的股票走势,股价还在下跌,而MACD指标图形上的由绿柱构成的图形的走势是一底比一底高,即当股价的低点比前一次低点底,而指标的低点却比前一次的低点高,这叫底背离现象。底背离现象一般是预示股价在低位可能反转向上的信号,表明股价短期内可能反弹向上,是短期买入股票的信号。

在这里,我们忽略MACD指标的具体计算过程,直接谈一谈本次实验,小编给出策略思想并贴出两种策略分别的回溯效果。

实验采取的两种策略:

1.快线向上突破慢线时,表明股市处于一种强势之中,股价将再次上涨,我们选择买进股票,反之,当慢线向上突破快线时,表明股市处于可能跌入弱市的状态,我们选择卖出股票;

2.底背离买进,顶背离卖出。

第一种策略

代码如下:

class MyStrategy extends Strategy {
    private double prevDelta = 0;
    String stock1 = "sha-601318";
    MACDFactor fMacd = new MACDFactor(12, 26, 9);
  
    public void init(BackTestContext context) {
        universe.add(stock1);
    }
     
    public void prepare(BackTestContext context) {
    }
     
    public void handleData(BackTestContext context, BarData data) throws Exception {
        double macdOut = fMacd.get(stock1, MACDFactor.RET_MACD);
        double macdSignal = fMacd.get(stock1, MACDFactor.RET_MACD_SIGNAL);
        double delta = macdOut - macdSignal;
       
        record("macd", macdOut);
        record("macd_signal", macdSignal);   
        record("macd_hist",delta);
        if (prevDelta > 0 && delta < 0) {
            log.info("Sell at "+""+context.now+delta);
            orderTargetPercent(stock1, 0, "Sell all.");
        } else if (prevDelta < 0 && delta > 0) {
            log.info("Buy at "+context.now+delta);
            orderPercent(stock1, 80, "Buy in.");
        }
        prevDelta = delta;
    }
}

回溯效果:

第二种策略

代码如下:


class MyStrategy extends Strategy {
    private double prevDelta = 0;
    private double prevClose = 0;
    private double countA = 0;
    private double countB = 0;
    String stock1 = "sha-601318";
    MACDFactor fMacd = new MACDFactor(12, 26, 9);
   
    public void init(BackTestContext context) {
        universe.add(stock1);
    }
     
    public void prepare(BackTestContext context) {
    }
     
    public void handleData(BackTestContext context, BarData data) throws Exception {
        log.info("time: "+context.now);
       
        double delta = fMacd.get(stock1, MACDFactor.RET_MACD_HIST);
        record("macd_hist", delta);
        if (delta < prevDelta && data.get(stock1).close > prevClose) {
            countB = 0;
            if(countA%5 == 0 && countA != 0 ){
                log.info("Sell at "+context.now+" "+delta);
                orderTargetPercent(stock1, 0, "Sell all.");
            }
            else{
                countA += 1;
            }          
        }else if (delta > prevDelta && data.get(stock1).close < prevClose){
            countA = 0;
            if(countB%5 == 0 && countB != 0 ){
                log.info("Buy at "+context.now+" "+delta);
                orderPercent(stock1, 80, "Buy in.");
            }else{
                countB += 1;
            }      
        }    
        prevDelta = delta;
        prevClose = data.get(stock1).close;
    }
}

回溯效果:

相比之下MACD底背离、顶背离,这个逻辑还是蛮狠的。回撤也挺小。

Raquant镭矿论坛

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66868.html

相关文章

  • 深度学习是否以蛮力取胜?

    摘要:第一条是关于深度学习的晚宴,讨论的是背后的数学支撑,以及未来的方向。大数据与深度学习是一种蛮力尽管当场说了很多观点,但是最核心的还是援引了爱因斯坦关于上帝的隐喻。不过,我自己并不同意深度学习必须等同于机器蛮力。 Vladimir Vapnik 介绍:Vladimir Vapnik 被称为统计学习理论之父,他出生于俄罗斯,1990 年底移居美国,在美国贝尔实验室一直工作到 2002 年,之后加...

    CarlBenjamin 评论0 收藏0
  • 中心化与去中心化,BDEX或将终结交易所世纪之争

    摘要:与中心化交易所相比,去中心化交易所的安全性还是要高得多。可见,兼容了中心化与去中心化的所有优势,中心化交易所与去中心化交易所这一世纪之争或许将止步于此,数字资产交易所也将迎来新的洗牌 数字资产交易所领域一直有一个世纪之争---中心化,还是去中心化? 都说币圈一天,世间一年。币圈一个小小的举动,就有可能在你不经意之间掀起一番巨浪,或者直接迎来一个时代的变革。那么,去中心化跨链交易所BDE...

    kycool 评论0 收藏0
  • 大数据与深度学习是一种蛮力?

    摘要:进一步说,如果承认深度学习系统在解决问题时不可思议的表现,那么大数据和深度学习,都有某种蛮力的味道。不过,我自己并不同意深度学习必须等同于机器蛮力。 Facebook去年底挖来了一个机器学习大神Vladimir Vapnik,他是统计学习理论和支持向量机的主要发明者。Vladimir Vapnik被称为统计学习理论之父,他出生于俄罗斯,1990年底移居美国,在美国贝尔实验室一直工作到2002...

    lidashuang 评论0 收藏0
  • 大数据与深度学习是一种蛮力?

    摘要:大数据与深度学习是一种蛮力尽管当场说了很多观点,但是最核心的还是援引了爱因斯坦关于上帝的隐喻。大数据与深度学习是一种蛮力在算法和模型上,我们是否能发明所有东西认为,在机器学习的算法和模型上,我们并不能发明所有东西。 Facebook去年底挖来了一个机器学习大神Vladimir Vapnik,他是统计学习理论和支持向量机的主要发明者。Vladimir Vapnik被称为统计学习理论之父,他出生...

    yankeys 评论0 收藏0
  • 亚马逊用Eucalyptus整合公有云和私有云

    摘要:亚马逊服务有一个弱点云和客户自己的数据中心运行的私有云之间的接口。亚马逊不必通过创建一种更为传统的软件组织,背离其公有云整合,补充道,这项交易反而有效地将资源外包给。 亚马逊Web服务有一个弱点——云和客户自己的数据中心运行的私有云之间的接口。   这位云巨人于周四补救了一部分问题,并宣布与预先定制(on-premises)IaaS提供商EucalyptusSystems之间的一项交易,旨...

    scq000 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<