欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 求指定时间内K线数量

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2951人关注过本帖树形打印复制链接

主题:求指定时间内K线数量

帅哥哟,离线,有人找我吗?
plsf99
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:191 积分:218 威望:0 精华:0 注册:2012/10/12 23:57:56
求指定时间内K线数量  发帖心情 Post By:2019/8/13 6:58:01    Post IP:183.64.241.2[只看该作者]

比如2018年1月1日到2018年6月1日,我要求在这段时间的15分钟K线数量,如何求?若知道数量M后,计算一些值比如STD(C,M),又如何确保是这段时间内的M?

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/8/13 9:56:36    Post IP:180.169.30.6[只看该作者]

1.求2个日期之间K线数的可以这样做。
cd1:YEAR=2018 and MONTH=10 and day>=1;//需要注意指定的日期不一定是交易日
cd2:YEAR=2018 and MONTH=12 and day>=1;
len1:BARSSINCE(cd1);//指定日期或指定日期之后的第一个交易日距离现在的距离
len2:BARSSINCE(cd2);//指定日期或指定日期之后的第一个交易日距离现在的距离
x:len1-len2;

2.
除非你用未来函数来获取到未来某个日期有多少个K,然后作为参数M给std进行计算。否则没其他办法。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
plsf99
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:191 积分:218 威望:0 精华:0 注册:2012/10/12 23:57:56
  发帖心情 Post By:2019/8/13 21:06:47    Post IP:119.84.251.126[只看该作者]

除非你用未来函数来获取到未来某个日期有多少个K,然后作为参数M给std进行计算。否则没其他办法。
====================================================================================
如果按上面第一方法求到了2个日期间之间K线数,假设是M,参数是M即可求得这个时期的STD吗?

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/8/14 8:49:01    Post IP:180.169.30.6[只看该作者]

问题就出在这里,你在过去的位置上是无法计算出这个M的。这个M计算就要涉及未来了。我上面代码计算出这个M的 前提是这个日期已经处于过去位置了。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
plsf99
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:191 积分:218 威望:0 精华:0 注册:2012/10/12 23:57:56
  发帖心情 Post By:2019/8/14 21:26:42    Post IP:222.86.159.207[只看该作者]

CD1: 0.000 CD2: 0.000 CD3: 0.000 LEN1: ## LEN2: ## LEN3: 3535.000 X: ## X2: ## 
===============================================================
代码运行结果是这样的?X得不出啊?

 回到顶部
帅哥哟,离线,有人找我吗?
gxx978
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2019/8/15 9:01:01    Post IP:180.169.30.6[只看该作者]

检查下你加载的K线是否包含了指定日期,若日期超过了加载的K线范围,则条件是无效的,就无法计算出指定日期之间的K线数量。

 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2019/8/15 9:16:43    Post IP:180.169.30.6[只看该作者]

那是因为无效值造成的。你用下面的方式处理。ccc就是你要的指定时段内的std的值

 

len1:BARSSINCE(DATE>=1180701);
len2:BARSSINCE(DATE>=1180801);
XXX:IF(DATE>1180701,len1,0);
MMM:IF(DATE>1180801,len2,0);
M:XXX-MMM;
AAA:STD(C,M);
CCC:VALUEWHEN(DATE>=1180701 and DATE<=1180801,aaa );

[此贴子已经被作者于2019/8/15 9:21:51编辑过]


编程无捷径,技巧靠积累。
 回到顶部