金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 112|回复: 19

老师帮我实现一个统计思路可以吗

[复制链接]

17

主题

148

帖子

148

积分

Rank: 2

等级: 标准版

注册:
2021-12-10
曾用名:
发表于 2025-10-27 21:55 | 显示全部楼层 |阅读模式
我想做个统计,以MACD为例
1、统计 2020年1月1日起,到2022年12月31日止,macd 金叉的次数,就是统计一个时间段内金叉的次数

2、统计 这个时间段内,金叉 过程中(也就是 金叉 到 死叉 ),这个区间内的 最后 涨幅 是多少,  计算结果,有些是正数,有些结果 是负数 ,最后 帮我统计 结果是 负数 所占 总金叉次数的比重是多少,输出结果为 FA 显示出来
老师可以帮我实现这个效果么

回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-10-28 09:16 | 显示全部楼层
INPUT:S(12,5,40,4);        // MACD短周期
INPUT:P(26,20,100,8);      // MACD长周期
INPUT:M(9,2,60,6);         // MACD信号周期
// ========== MACD计算 ==========
DIFF := EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  := EMA(DIFF,M);
MACD := 2*(DIFF-DEA);
// ========== 交叉信号 ==========
GOLD_CROSS := CROSS(DIFF,DEA);  // 金叉
DEAD_CROSS := CROSS(DEA,DIFF);  // 死叉
variable:jc_price=0,opsitive_n=0,negitive_n=0;

if GOLD_CROSS and date+19000000>20200101 then
begin
        jc_price:=close;
END

if DEAD_CROSS and date+19000000>20200101 then
begin
        if close>jc_price then opsitive_n:=opsitive_n+1;
        if close<=jc_price then negitive_n:=negitive_n+1;
END



fa:opsitive_n/(opsitive_n+negitive_n);
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

17

主题

148

帖子

148

积分

Rank: 2

等级: 标准版

注册:
2021-12-10
曾用名:
 楼主| 发表于 2025-10-28 09:49 | 显示全部楼层
谢谢老师,还有一个问题就是,能不能计算金叉区间最高涨幅是多少,求每一次金叉的最高涨幅可以么?
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-10-28 09:53 | 显示全部楼层
INPUT:S(12,5,40,4);        // MACD短周期
INPUT:P(26,20,100,8);      // MACD长周期
INPUT:M(9,2,60,6);         // MACD信号周期
// ========== MACD计算 ==========
DIFF := EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  := EMA(DIFF,M);
MACD := 2*(DIFF-DEA);
// ========== 交叉信号 ==========
GOLD_CROSS := CROSS(DIFF,DEA);  // 金叉
DEAD_CROSS := CROSS(DEA,DIFF);  // 死叉
variable:jc_price=0,opsitive_n=0,negitive_n=0,hh=0;;

if GOLD_CROSS and date+19000000>20200101 then
begin
        jc_price:=close;
END

if DEAD_CROSS and date+19000000>20200101 then
begin
        if (close-jc_price)/jc_price>hh then hh:=(close-jc_price)/jc_price;
        if close>jc_price then opsitive_n:=opsitive_n+1;
        if close<=jc_price then negitive_n:=negitive_n+1;
END



fa:opsitive_n/(opsitive_n+negitive_n);
hh1:hh;
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

17

主题

148

帖子

148

积分

Rank: 2

等级: 标准版

注册:
2021-12-10
曾用名:
 楼主| 发表于 2025-10-28 10:53 | 显示全部楼层
好像不大行,我按照老师的方法,统计了 2025年10月20 到202510月24日的 金叉数目,但是后面得到的是下面这种,金叉次数随着页面窗口的放大和缩小,变化很大,输出的FA也是一直在变,按理说,应该是固定区间的统计,得出的是固定值,而不是随着K线数量的增减而变化的啊

源码如下


input:s(12,5,40,4);        // macd短周期
input:p(26,20,100,8);      // macd长周期
input:m(9,2,60,6);         // macd信号周期
// ========== macd计算 ==========

diff := ema(close,s) - ema(close,p);
dea  := ema(diff,m);
macd := 2*(diff-dea);
// ========== 交叉信号 ==========

gold_cross := cross(diff,dea);  // 金叉
dead_cross := cross(dea,diff);  // 死叉

variable:jc_price=0,opsitive_n=0,negitive_n=0,hh=0;;

if gold_cross and date+20251020>20251024 then
begin
        jc_price:=close;
end

if dead_cross and date+20251020 > 20251024 then
begin
        if (close-jc_price)/jc_price>hh then hh:=(close-jc_price)/jc_price;
        if close>jc_price then opsitive_n:=opsitive_n+1;
        if close<=jc_price then negitive_n:=negitive_n+1;
end



fa:opsitive_n/(opsitive_n+negitive_n);

hh1:hh;


金叉次数 : opsitive_n ;
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-10-28 10:55 | 显示全部楼层

INPUT:S(12,5,40,4);        // MACD短周期
INPUT:P(26,20,100,8);      // MACD长周期
INPUT:M(9,2,60,6);         // MACD信号周期
// ========== MACD计算 ==========
DIFF := EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  := EMA(DIFF,M);
MACD := 2*(DIFF-DEA);
// ========== 交叉信号 ==========
GOLD_CROSS := CROSS(DIFF,DEA);  // 金叉
DEAD_CROSS := CROSS(DEA,DIFF);  // 死叉
variable:jc_price=0,opsitive_n=0,negitive_n=0,hh=0;;

if GOLD_CROSS and date+19000000>20200101 and  date+19000000>20201001 then
begin
        jc_price:=close;
END

if DEAD_CROSS and date+19000000>20200101 and  date+19000000>20201001 then
begin
        if (close-jc_price)/jc_price>hh then hh:=(close-jc_price)/jc_price;
        if close>jc_price then opsitive_n:=opsitive_n+1;
        if close<=jc_price then negitive_n:=negitive_n+1;
END



fa:opsitive_n/(opsitive_n+negitive_n);
hh1:hh;
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

17

主题

148

帖子

148

积分

Rank: 2

等级: 标准版

注册:
2021-12-10
曾用名:
 楼主| 发表于 2025-10-28 11:09 | 显示全部楼层
统计一段区间内,是怎么表述的,比如我想统计 2025年10月01日,到2025年10月20日,  这个区间的,是怎么表述这个时间区间?

是这样的么? date+19000000 > 20251001 and  date+19000000 > 20251020
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-10-28 11:21 | 显示全部楼层
左边大于,右边小于

date加19000000就是年月日
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

17

主题

148

帖子

148

积分

Rank: 2

等级: 标准版

注册:
2021-12-10
曾用名:
 楼主| 发表于 2025-10-28 11:26 | 显示全部楼层
可以给个范例模仿么,比如我想统计 2025年10月01日,到2025年10月20日
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-10-28 11:27 | 显示全部楼层
if GOLD_CROSS and date+19000000>20200101 and  date+19000000>20201001 then
begin
        jc_price:=close;
END

if DEAD_CROSS and date+19000000>20200101 and  date+19000000>20201001 then
begin
        if (close-jc_price)/jc_price>hh then hh:=(close-jc_price)/jc_price;
        if close>jc_price then opsitive_n:=opsitive_n+1;
        if close<=jc_price then negitive_n:=negitive_n+1;
END



这里不就是吗
电话我把
021-20339087
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-11-3 09:35 , Processed in 0.136576 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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