金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 4606|回复: 10

策略中调用任意周期的MACD前一周期的值

[复制链接]

4591

主题

4675

帖子

4700

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2022-4-27 09:52 | 显示全部楼层 |阅读模式
请教:我想在策略中调用任意周期的MACD前一周期的值,STKINDI这个函数的灵活性还是不够,所以有此想法。
DIFF:=EMA(CLOSE,S) - EMA(CLOSE,P);DEA:=EMA(DIFF,M);MACD:=2*(DIFF-DEA);
这个MACD的源代码,如何把CLOSE改为一个自定义周期,比如每4分30秒取一个CLOSE,如何修改呢?


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

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-4-27 09:58 | 显示全部楼层
你不需要在stkind上做操作。你只需要在macd指标里面定义新的变量:
比如:
lastdiff:ref(diff,1);

你现在去调用这个lastdiff 自然就是前一个周期的。这样就可以自定义周期同时,进行周期偏移。你甚至可以传递参数给这个ref来决定 偏移多少个周期。
灵活性不是体现在函数参数能传递多少个上面的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

20

主题

110

帖子

110

积分

等级: 免费版

注册:
2022-3-11
曾用名:
发表于 2022-4-27 10:04 | 显示全部楼层
谢谢你解决了偏移的问题,但是那个周期值的问题怎么破?我希望在1分钟的周期图上,使用这个源代码算出4分30秒周期的MACD值
回复

使用道具 举报

20

主题

110

帖子

110

积分

等级: 免费版

注册:
2022-3-11
曾用名:
发表于 2022-4-27 10:06 | 显示全部楼层
所以我想可能这个CLOSE的值是关键,如何让策略每个算定义周期去取这个值而不受我主图周期的影响。

补充内容 (2022-4-27 10:07):
笔误,不是算定义周期,是自定义周期。
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-4-27 10:10 | 显示全部楼层
“我希望在1分钟的周期图上,使用这个源代码算出4分30秒周期的MACD值”啥意思?你是1分钟上调用这个周期的值?多秒周期的值?stkindi不是可以自定义多秒周期的嘛
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

20

主题

110

帖子

110

积分

等级: 免费版

注册:
2022-3-11
曾用名:
发表于 2022-4-27 10:18 | 显示全部楼层
技术009 发表于 2022-4-27 10:10
“我希望在1分钟的周期图上,使用这个源代码算出4分30秒周期的MACD值”啥意思?你是1分钟上调用这个周期的 ...

我在1分钟主图上,这个MACD算出来的是每个1分钟的值,可以向前偏移1个周期,但我需要定义MACD1,计算出来的是每个4分30周期的值。

补充内容 (2022-4-27 10:19):
也就是把STKINDI这个函数写在这策略当中,但是那里面有一个period的参数,这个参数,我要灵活到任意周期,而不是那几个固定的参数。
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-4-27 10:21 | 显示全部楼层
那就是自定义周期呀。我一开始给你的解决方案就是这个意思。
1.stkindi可以选择多秒周期,你这里可以换算成多少就行了。
2.使用自定义周期时候,不能使用偏移参数。因此在macd里面定重新定义变量去处理了。也就是前面的lastK变量。


STKINDI('','macd.macd2',0,22,270);//270秒周期,macd2 就是 ref(macd1,1)
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

20

主题

110

帖子

110

积分

等级: 免费版

注册:
2022-3-11
曾用名:
发表于 2022-4-27 10:24 | 显示全部楼层
技术009 发表于 2022-4-27 10:21
那就是自定义周期呀。我一开始给你的解决方案就是这个意思。
1.stkindi可以选择多秒周期,你这里可以换算 ...

NBKLS,谢谢。
回复

使用道具 举报

20

主题

110

帖子

110

积分

等级: 免费版

注册:
2022-3-11
曾用名:
发表于 2022-4-27 10:26 | 显示全部楼层
还有一个问题,那我要在策略中去优化被调用的MACD的参数,怎么办?源代码在MACD的公式里,策略里是没有的。
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-4-27 10:33 | 显示全部楼层
函数说明里面有例子的:


//若参数为数字变量,那么需要有个字符串转换的过程
s:=5;
//NUMTOSTR函数将数字转换到字符串,再带入变量中
m:=NUMTOSTR(s,0);
//计算IF10合约的日线周期指标ATR的ATR指标线,传递参数m值为5。
//第2个参数''里的是文本,由三部分组成:'ATR.ATR('和m还有')',这三部分由两个连接符号&连接起来,实现对数值参数的文本传输。
vola:stkindi('if10','ATR.ATR('&m&')',0,6,-1);


你这里只需要把s换成input定义的就行了。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-29 05:28 , Processed in 0.163582 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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