开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2305|回复: 18
收起左侧

[其它源码] MACD金叉、死叉、顶背离、底背离、0轴突破判断php源码

[复制链接]
结帖率:60% (3/5)
发表于 2023-11-20 13:49:17 | 显示全部楼层 |阅读模式   广东省深圳市
分享源码
界面截图: -
是否带模块: -
备注说明: -
本帖最后由 易造轮 于 2023-11-20 14:12 编辑

[PHP] 纯文本查看 复制代码
<?php
//定义一个函数,计算指定周期的指数移动平均线
function ema($价格数组, $周期) {
    $平滑系数 = 2 / ($周期 + 1); //计算平滑系数
    $ema = array(); //存放结果的数组
    $ema[0] = $价格数组[0]; //第一个ema值等于第一个数据值
    for ($i = 1; $i < count($价格数组); $i++) {
        $ema[$i] = $平滑系数 * $价格数组[$i] + (1 - $平滑系数) * $ema[$i - 1]; //递推公式
    }
    return $ema;
}

//定义一个函数,计算指定周期的MACD指标
function macd($价格数组, $快线周期, $慢线周期, $dea周期) {
    $dif数组 = array(); //存放DIF线的数组
    $dea数组 = array(); //存放DEA线的数组
    $macd数组 = array(); //存放MACD柱线的数组
    $快线ema = ema($价格数组, $快线周期); //计算短期ema
    $慢线ema = ema($价格数组, $慢线周期); //计算长期ema
    for ($i = 0; $i < count($价格数组); $i++) {
        $dif数组[$i] = $快线ema[$i] - $慢线ema[$i]; //计算DIF值
    }
    $dea数组 = ema($dif数组, $dea周期); //计算DEA值
    for ($i = 0; $i < count($价格数组); $i++) {
        $macd数组[$i] = 2 * ($dif数组[$i] - $dea数组[$i]); //计算MACD值
    }
    return array($dif数组, $dea数组, $macd数组); //返回结果数组
}

//定义一个函数,判断MACD的金叉、死叉、顶背离、底背离
function macd_cross($价格数组, $快线周期, $慢线周期, $周期) {
    list($dif数组, $dea数组, $macd数组) = macd($价格数组, $快线周期, $慢线周期, $周期); //调用macd函数,获取指标值
    $结果数组 = array(); //存放结果的数组
    $峰值数组 = array(); //存放峰值的数组
    $峰值索引 = array(); //存放峰值索引的数组
    for ($i = 1; $i < count($价格数组) - 1; $i++) {
        //判断金叉
        if ($dif数组[$i] > $dea数组[$i] && $dif数组[$i - 1] <= $dea数组[$i - 1]) {
            $结果数组[$i] = "金叉";
        }
        //判断死叉
        if ($dif数组[$i] < $dea数组[$i] && $dif数组[$i - 1] >= $dea数组[$i - 1]) {
            $结果数组[$i] = "死叉";
        }
        //找出峰值
        if (($价格数组[$i] > $价格数组[$i - 1] && $价格数组[$i] > $价格数组[$i + 1]) || ($价格数组[$i] < $价格数组[$i - 1] && $价格数组[$i] < $价格数组[$i + 1])) {
            $峰值数组[] = $价格数组[$i];
            $峰值索引[] = $i;
        }
    }
    //判断顶背离和底背离
    for ($i = 1; $i < count($峰值数组); $i++) {
        //计算两个峰之间的差值
        $价差 = $峰值数组[$i] - $峰值数组[$i - 1];
        $dif数组_diff = $dif数组[$峰值索引[$i]] - $dif数组[$峰值索引[$i - 1]];
        //判断顶背离
        if ($价差 > 0 && $dif数组_diff < 0) {
            $结果数组[$峰值索引[$i]] = "顶背离";
        }
        //判断底背离
        if ($价差 < 0 && $dif数组_diff > 0) {
            $结果数组[$峰值索引[$i]] = "底背离";
        }
    }
    //判断0轴突破
    for ($i = 1; $i < count($价格数组); $i++) {
        //判断0轴上穿
        if ($macd数组[$i] > 0 && $macd数组[$i - 1] <= 0) {
            $结果数组[$i] = "0轴上穿";
        }
        //判断0轴下穿
        if ($macd数组[$i] < 0 && $macd数组[$i - 1] >= 0) {
            $结果数组[$i] = "0轴下穿";
        }
    }
    return $结果数组; //返回结果数组
}

//测试数据,假设是收盘价
$价格数组 = array(10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 9, 8, 9, 10, 11, 12, 13, 14, 15);

//测试函数,假设短期为12,长期为26,信号为9
$结果数组 = macd_cross($价格数组, 12, 26, 9);

//打印结果
print_r($结果数组);
?>

评分

参与人数 1精币 +1 收起 理由
wa690602724 + 1 感谢分享,很给力!~

查看全部评分


发表于 2024-4-21 13:23:17 | 显示全部楼层   江苏省苏州市
有没有易语言代码?????
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2023-12-6 20:45:07 | 显示全部楼层   福建省漳州市
这指标都是未来函数指标,不准的
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:87% (82/94)
发表于 2023-11-23 16:31:30 | 显示全部楼层   湖北省孝感市
害人的东西 别研究这些了
回复 支持 1 反对 0

使用道具 举报

结帖率:73% (8/11)

签到天数: 20 天

发表于 2023-11-22 18:07:40 | 显示全部楼层   河南省焦作市

感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)

签到天数: 17 天

发表于 2023-11-22 08:57:52 | 显示全部楼层   广西壮族自治区玉林市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 17 天

发表于 2023-11-22 00:05:04 | 显示全部楼层   广东省深圳市
学习一下
回复 支持 反对

使用道具 举报

发表于 2023-11-21 14:18:44 | 显示全部楼层   广东省揭阳市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)

签到天数: 17 天

发表于 2023-11-21 14:17:56 | 显示全部楼层   广西壮族自治区玉林市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 18 天

发表于 2023-11-21 13:14:32 | 显示全部楼层   湖北省荆州市
感谢分享!  支持一下!  
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表