金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 231|回复: 14

求实现一个跨周期的逻辑

[复制链接]

26

主题

114

帖子

114

积分

Rank: 4

等级: 专业版

注册:
2025-11-7
曾用名:
发表于 2025-11-13 07:15 | 显示全部楼层 |阅读模式
当前策略运行在5分钟K线上;
找日K线,前10天里,离当天最近的上穿5日均线的那个K线时间点。举个例子,11月6号有crosse(Close, MA5);11月8号也有crosse(Close, MA5);那么返回的日期就是11月8号
然后在5分钟K线里,从11月8号之后开始,找5分钟K线出现最高点的那根K线;
从这个K线开始后,5分钟K线首次出现Close<价格A,且>价格B后,然后5分钟K线最高价上穿价格A,出现开仓信号;
以后第二次,第三次出现这个价格,都不出现信号了。只做第一次
回复

使用道具 举报

2

主题

5787

帖子

5787

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-11-13 09:18 | 显示全部楼层
日线指标A:
[PEL] 复制代码
ma5:=ma(c,5);
con:=cross(close, ma5);

len:barslast(con);
dt:if(len<10 and valid(len),ref(date,len),-1);//如果10日内没有满足条件的返回-1



5分钟指标:

[PEL] 复制代码
dt:"a.dt#day";


LENX:BARSLASTCOUNT(DATE>DT);//最近一次日线条件满足的日期

LENY:HHVBARS(H,LENX)+1;//距离指定日期后的最大值的周期跨度

LENZ:BARSSINCE2(C<A AND C>B,LENY);//首次 C<A AND C>B 满足距离当前的周期跨度

CON:DT>0 AND LENZ>0 and cross(h,a) and count(cross(h,a),LENZ)=1;//最终判断结果
回复

使用道具 举报

26

主题

114

帖子

114

积分

Rank: 4

等级: 专业版

注册:
2025-11-7
曾用名:
 楼主| 发表于 2025-11-18 13:49 | 显示全部楼层
用跨周期函数碰到了问题,求教老师:
(1)信号函数如下:用ZIG函数判断方向;当下降趋势,MACD大于零,也可以做多
INPUT:N1(1,1,20,0.5);//之字转向的阈值,默认值为1,代表1%;
//用在超短线,判断大盘的方向
X:ZIG(4,N1);//之字转向,高点用高价,低点用低价,10%;
H1:=PEAK(4,N1,1);//,NODRAW;
H2:=PEAK(4,N1,2);//NODRAW;
L1:=TROUGH(4,N1,1);linethick5;//NODRAW;
L2:=TROUGH(4,N1,2);//NODRAW;

方向:IF(X>Ref(X,1),1,0);
支撑位:L1,colorred,linethick3;
压力位:H1,colorgreen,linethick3;

//MACD
S:=12;
P:=26;
M:=9;
DIFF:=EMA(CLOSE,S) - EMA(CLOSE,P);
DEA:=EMA(DIFF,M);
MACD:=2*(DIFF-DEA), COLORSTICK;

IF 方向=1 then BEGIN
                信号:11;//上升趋势
                信号类型:='上升趋势';
   END
ELse BEGIN       
                  IF MACD>0 THEN BEGIN
                          信号:=10;//下降趋势中开始反转;
                          信号类型:='下降抄底';
                     END
                     Else BEGIN
                             信号:=-1;
                             信号类型:='下降趋势';
                      END
   END
   
Trend_Out:信号;

Path:='C:\Tradelog\'&FormulaName&StkLabel&'.txt';//Path是日志输出的所在目录
大盘开关:='品种:'&StkLabel&' 日期:'&NUMTOSTR(Date,0)&NUMTOSTR(Hour,0)
        &NUMTOSTR(Minute,0)&' 信号:'&NUMTOSTR(信号,2)&' 信号类型:'&信号类型;
DEBUGFILE(Path,大盘开关,大盘开关);

(2)交易策略中,对信号的引用如下:
上证方向:=stkindi('SH001','ZIG趋势状态.Trend_Out',0,2,-1);//5分钟级别的ZIG方向
DEBUGFILE(path,'上证方向为%.2f',上证方向);

(3)我的问题:
问题一:信号函数的日志,始终为-1;没有变过。看交易函数里的日志,大盘方向是有变化过的。这是为什么
信号函数到11月17日,9点38就没在输出日志了,输出日志的信号都是-1,似乎不是-1的输出不了,这是为什么

2025-11-17 09:38:58.813    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.828    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.843    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.859    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.859    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.875    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.891    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.906    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.922    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.938    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.953    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.953    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:58.984    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:59.000    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:59.000    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:59.016    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
2025-11-17 09:38:59.031    品种:SH001 日期:12511101435 信号:-1.00 信号类型:下降趋势
问题二:交易函数里的方向,有很多大于1的值,感觉好奇怪,这是为什么
交易函数的日志输出:可以看到11月17号,9点24分开始,大盘方向阶段性从-1到转正,但为什么是28这样奇怪的值,而不是1.
2025-11-17 09:41:17.906    上证方向为-1.#R
2025-11-17 09:41:27.906    上证方向为-1.#R
2025-11-17 09:41:37.906    上证方向为-1.#R
2025-11-17 09:41:47.906    上证方向为-1.#R
2025-11-17 09:41:57.906    上证方向为-1.#R
2025-11-17 09:42:07.906    上证方向为-1.#R
2025-11-17 09:42:17.906    上证方向为-1.#R
2025-11-17 09:42:27.906    上证方向为-1.#R
2025-11-17 09:42:37.906    上证方向为-1.#R
2025-11-17 09:42:47.906    上证方向为28.93
2025-11-17 09:42:57.906    上证方向为28.93
2025-11-17 09:43:07.906    上证方向为28.93
2025-11-17 09:43:17.906    上证方向为28.93
2025-11-17 09:43:27.906    上证方向为28.93
2025-11-17 09:43:37.906    上证方向为28.93
2025-11-17 09:53:27.998    上证方向为6.06
2025-11-17 09:53:37.999    上证方向为6.06
2025-11-17 09:53:47.999    上证方向为6.06
2025-11-17 09:53:57.998    上证方向为6.06
2025-11-17 09:54:07.998    上证方向为6.06
2025-11-17 09:54:17.998    上证方向为6.06
2025-11-17 09:54:27.999    上证方向为6.06
2025-11-17 09:54:37.998    上证方向为328.43
2025-11-17 09:54:47.999    上证方向为328.43
2025-11-17 09:54:57.999    上证方向为328.43
2025-11-17 09:55:07.014    上证方向为328.43
2025-11-17 09:55:17.780    上证方向为328.43
2025-11-17 09:55:27.014    上证方向为328.43
2025-11-17 09:55:37.014    上证方向为328.43
2025-11-17 09:55:47.014    上证方向为328.43
回复

使用道具 举报

2

主题

5787

帖子

5787

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-11-18 14:38 | 显示全部楼层
你用到了未来函数,指标只能在序列模式下。而序列模式下的if语句的处理 和逐K有点不一样的。

所以整个if判断的部分,你都要单独拿出来,别放在被调用的那个指标里。你可以分别 调用 方向,macd  2个变量。  然后在当前指标下 使用逐K模式进行判断和处理。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

2

主题

5787

帖子

5787

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-11-18 14:40 | 显示全部楼层
“但为什么是28这样奇怪的值,而不是1.”

这种是无效值。一般是计算的指标 需要的数据量不足之类导致的了。
回复

使用道具 举报

26

主题

114

帖子

114

积分

Rank: 4

等级: 专业版

注册:
2025-11-7
曾用名:
 楼主| 发表于 2025-11-18 15:34 | 显示全部楼层
基于我提供的代码,为什么会产生无效值呢?ZIG函数是不是有问题
这种情况我该怎么办?
回复

使用道具 举报

26

主题

114

帖子

114

积分

Rank: 4

等级: 专业版

注册:
2025-11-7
曾用名:
 楼主| 发表于 2025-11-18 15:35 | 显示全部楼层
策略跨周期引用的时候,一会28,一会328,一会6
但是自身函数的日志里重来没有出现过这种值

这又是为啥呢
回复

使用道具 举报

26

主题

114

帖子

114

积分

Rank: 4

等级: 专业版

注册:
2025-11-7
曾用名:
 楼主| 发表于 2025-11-18 15:38 | 显示全部楼层
106212 发表于 2025-11-18 13:49
用跨周期函数碰到了问题,求教老师:
(1)信号函数如下:用ZIG函数判断方向;当下降趋势,MACD大于零,也 ...

可以麻烦老师把我这里的跨周期引用调试正常么
代码逻辑应该没问题了
回复

使用道具 举报

2

主题

5787

帖子

5787

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-11-18 15:43 | 显示全部楼层
你先按照我4楼提供的那个处理方式试下呢。
回复

使用道具 举报

26

主题

114

帖子

114

积分

Rank: 4

等级: 专业版

注册:
2025-11-7
曾用名:
 楼主| 发表于 2025-11-18 16:44 | 显示全部楼层
资深技术05 发表于 2025-11-18 15:43
你先按照我4楼提供的那个处理方式试下呢。

谢谢老师,我试试看
看起来序列模式很多函数不能用,诸如if else等
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-27 12:52 , Processed in 0.132891 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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