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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 请老师帮忙编写公式

   

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


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

主题:请老师帮忙编写公式

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/12/30 14:00:55    Post IP:180.169.30.6[显示全部帖子]

 1.是的。5楼的代码就是你理解的那个意思。五楼那个就是处理了下对“开盘价<=昨日收盘价”的判断。
 2.

这样试下呢。
if valuewhen(todaybar=1,open)<=ref(close,todaybar) then cond:=1;
if valuewhen(todaybar=1,open)>ref(close,todaybar) then cond:=0;


c1:=VALUEWHEN(TODAYBAR=1,c);
c2:=VALUEWHEN(TODAYBAR=2,c);
temp1:=if(cond,(c-c1)/c1,(c-c2)/c2);

result:if(cond,VALUEWHEN(time=94000,temp1),VALUEWHEN(time=94100,temp1));


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/12/30 17:09:48    Post IP:180.169.30.6[显示全部帖子]

 你这个意思其实是要统计求10分钟内涨幅大于2%的情况了,只是统计的起点分2种情况 从9:30开始和从9:31开始。是这个意思吧?


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/12/30 17:25:35    Post IP:180.169.30.6[显示全部帖子]

 你这个涨幅 是想用9:30 或者9:31的K的C来计算的。还是说就是和前一个K的C对比计算的。


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/12/31 9:22:30    Post IP:180.169.30.6[显示全部帖子]

 if valuewhen(todaybar=1,open)<=ref(close,todaybar) then cond:=1;
if valuewhen(todaybar=1,open)>ref(close,todaybar) then cond:=0;

这样试下。
c1:=VALUEWHEN(TODAYBAR=1,c);
c2:=VALUEWHEN(TODAYBAR=2,c);


x1:=if(TODAYBAR>=11,(c-ref(c,10))/ref(c,10),(c-c1)/c1);//从9:30开始统计
x2:=if(TODAYBAR>=12,(c-ref(c,10))/ref(c,10),(c-c2)/c2);//从9:31开始统计
zf:if(cond,x1,x2);//根据cond结果判断取值取x1,还是x2

result:count(zf>=0.02,if(TODAYBAR<=10,TODAYBAR,10));//统计10分钟内满足zf大于等于2%的数量,返回满足条件的次数



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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/12/31 13:11:09    Post IP:180.169.30.6[显示全部帖子]

 是前面的那个判断cond不对吗?
9:30/9:31开始  到40/41分 中间不足10分钟的,都是按照已有的时间做统计的。后面的时间都是按照完整10分钟计算涨幅的。
也就是按照
(c-ref(c,10))/ref(c,10)计算的。


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/12/31 13:54:44    Post IP:180.169.30.6[显示全部帖子]

  c1:=VALUEWHEN(TODAYBAR=1,c);
c2:=VALUEWHEN(TODAYBAR=2,c);
xx:=cond;//输出cond便于判断。

x1:=if(TODAYBAR>=11,(c-ref(c,10))/ref(c,10),(c-c1)/c1);//从9:30开始统计
x2:=if(TODAYBAR>=12,(c-ref(c,10))/ref(c,10),(c-c2)/c2);//从9:31开始统计
zf:if(cond,x1,if(TODAYBAR>=2,x2,0));//根据cond结果判断取值取x1,还是x2
result:count(zf>=0.02,if(TODAYBAR<=10,TODAYBAR,10));//统计10分钟内满足zf大于等于2%的数量,返回满足条件的次数
DRAWICON(RESULT>=2,l,1);//把满足条件的位置输出一个笑脸,也就是10分钟内有2次涨幅达到2%的。
加二句,改一句。
之前的有个漏洞。

然后做个说明.
1.涨幅是按照10个K之前的 c和当前c计算的。比如当前是第21个K,那么做比较的就是第11个。如果当前位置尚且不足10个K就按照最早位置的K做统计,9:30K或9:31K。
2.x1,x2的计算没有限定K。只是判断开盘到现在够不够10个K而已。不够就用当前有的算,够了再安装10分钟跨度去计算。

工作人员Q:1486123774


[此贴子已经被作者于2019/12/31 14:08:14编辑过]


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/1/2 9:34:51    Post IP:180.169.30.6[显示全部帖子]

 1.先说下金字塔的K线时间是K线的结束时间。 第一个K,K线是9:31
上面代码逻辑是这样的:
现在有1-10的K线 然后当前是第11个K。涨幅这里用的是第11个K 和第1个K进行计算的。如果你要用第1个K和第10个K计算,那就要再稍微改下就行了。

2.不足10分钟时候的K。也就是TODAYBAR=3、4、5、6....10的时候就按照已有的时间去算。也就是3分钟涨幅,4分钟涨幅....。这个不用区分,直接看K线时间就行了。不足10分钟的时候肯定无法计算10分钟的涨幅。


命数如织,当如磐石。
 回到顶部