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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 关于顾比倒数线策略的VALUEWHEN函数的用法

   

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


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

主题:关于顾比倒数线策略的VALUEWHEN函数的用法

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


加好友 发短信
等级:论坛游侠 帖子:193 积分:0 威望:0 精华:0 注册:2018/12/18 15:40:26
关于顾比倒数线策略的VALUEWHEN函数的用法  发帖心情 Post By:2018/12/26 11:31:46    Post IP:123.168.88.72[显示全部帖子]

问题在这个系统自带策略我贴过来部分的最后一句(红色部分是在下写的注释图片点击可在新窗口打开查看):


顾比倒数线策略

 

//定义参数

H11:=HIGH;//h11为本K线最高价

L11:=LOW;//L11为本K线最低价

A:=IFELSE(HIGH>=REF(HIGH,1)&&HIGH>=REF(HIGH,2)&&HIGH>=REF(HIGH,3) &&HIGH>=REF(HIGH,4)&&HIGH>=REF(HIGH,5),LOW,0);

//定义A的计算公式为:如果(K线最高点≥前面第1K线的最高价)

                                                                同时(高点≥前面第2K线的最高价)

                                                                同时(高点≥前面第3K线的最高价)

                                                                同时(高点≥前面第4K线的最高价)

                                                                同时(高点≥前面第5K线的最高价)

                                          如果成立就返回本K线最低价,否则返回0

                                             (这个返回零的情况,应该是后边有个判断是否大于零,如果大于零这根K线就参与比较,如果等于零这根K线就被忽略不参与后边的比较)

 

B:=IFELSE(LOW<=REF(LOW,1)&&LOW<=REF(LOW,2)&&LOW<=REF(LOW,3) &&LOW<=REF(LOW,4)&&LOW<=REF(LOW,5),HIGH,888888);

//定义B的计算公式为:如果(K线最低点≤前面第1K线的最低价)

                                                                  同时(K线最低点≤前面第1K线的最低价)

                                                                  同时(K线最低点≤前面第2K线的最低价)

                                                                  同时(K线最低点≤前面第3K线的最低价)

                                                                  同时(K线最低点≤前面第4K线的最低价)

                                                                  同时(K线最低点≤前面第5K线的最低价)

                                            如果成立就返回本K线最高价,否则返回888888,这个888888貌似没啥用,返回>0的就行,貌似。

 

P1:=IFELSE(A>REF(L11,1),REF(L11,1),0);

//p1的计算公式为:如果(A>前1K线最低点)则返回前1K线最低价,否则返回0.

 

P2:=IFELSE(A>REF(L11,2)&&A<=REF(L11,1),REF(L,2),0);

//p2的计算公式为:如果(A>前2K线最低点)

                                                          同时(A≤前1K线最低点)

                                                         则返回前2K线最低价,否则返回0.

 

P3:=IFELSE(A>REF(L11,3)&&A<=REF(L11,1)&&A<=REF(L11,2),REF(L11,3),0);

//p3的计算公式为:如果(A>前3K线最低点)

                                                          同时(A≤前1K线最低点)

                                                          同时(A≤前2K线最低点)

                                                         则返回前3K线最低价,否则返回0.

 

P4:=IFELSE(A>REF(L11,4)&&A<=REF(L11,1)&&A<=REF(L11,2)&&A<=REF(L11,3),REF(L11,4),0);

//p4的计算公式为:如果(A>前4K线最低点)

                                                          同时(A≤前1K线最低点)

                                                          同时(A≤前2K线最低点)

                                                          同时(A≤前3K线最低点)

                                                         则返回前4K线最低价,否则返回0.

 

P5:=IFELSE(A>REF(L11,5)&&A<=REF(L11,1)&&A<=REF(L11,2)&&A<=REF(L11,3)&&A<=REF(L11,4),REF(L11,5),0);

//p5的计算公式为:如果(A>前5K线最低点)

                                                          同时(A≤前1K线最低点)

                                                          同时(A≤前2K线最低点)

                                                          同时(A≤前3K线最低点)

                                                          同时(A≤前4K线最低点)

                                                         则返回前5K线最低价,否则返回0.

 

 

P6:=IFELSE(A>REF(L11,6)&&A<=REF(L11,1)&&A<=REF(L11,2)&&A<=REF(L11,3)&&A<=REF(L11,4)&&A<=REF(L11,5),REF(L11,6),0);

//p6的计算公式为:如果(A>前6K线最低点)

                                                          同时(A≤前1K线最低点)

                                                          同时(A≤前2K线最低点)

                                                          同时(A≤前3K线最低点)

                                                          同时(A≤前4K线最低点)

                                                          同时(A≤前5K线最低点)

                                                         则返回前6K线最低价,否则返回0.

 

P7:=IFELSE(A>REF(L11,7)&&A<=REF(L11,1)&&A<=REF(L11,2)&&A<=REF(L11,3)&&A<=REF(L11,4)&&A<=REF(L11,5)&&A<=REF(L11,6),REF(L11,7),0);

//p7的计算公式为:如果(A>前7K线最低点)

                                                          同时(A≤前1K线最低点)

                                                          同时(A≤前2K线最低点)

                                                          同时(A≤前3K线最低点)

                                                          同时(A≤前4K线最低点)

                                                          同时(A≤前5K线最低点)

                                                          同时(A≤前6K线最低点)

                                                         则返回前7K线最低价,否则返回0.

 

P8:=IFELSE(A>REF(L11,8)&&A<=REF(L11,1)&&A<=REF(L11,2)&&A<=REF(L11,3)&&A<=REF(L11,4)&&A<=REF(L11,5)&&A<=REF(L11,6)&&A<=REF(L11,7),REF(L11,8),0);

//p8的计算公式为:如果(A>前8K线最低点)

                                                          同时(A≤前1K线最低点)

                                                          同时(A≤前2K线最低点)

                                                          同时(A≤前3K线最低点)

                                                          同时(A≤前4K线最低点)

                                                          同时(A≤前5K线最低点)

                                                          同时(A≤前6K线最低点)

                                                          同时(A≤前7K线最低点)

                                                         则返回前8K线最低价,否则返回0.

 

P9:=IFELSE(A>REF(L11,9)&&A<=REF(L11,1)&&A<=REF(L11,2)&&A<=REF(L11,3)&&A<=REF(L11,4)&&A<=REF(L11,5)&&A<=REF(L11,6)&&A<=REF(L11,7)&&A<=REF(L11,8),REF(L11,9),0);

//p9的计算公式为:如果(A>前9K线最低点)

                                                          同时(A≤前1K线最低点)

                                                          同时(A≤前2K线最低点)

                                                          同时(A≤前3K线最低点)

                                                          同时(A≤前4K线最低点)

                                                          同时(A≤前5K线最低点)

                                                          同时(A≤前6K线最低点)

                                                          同时(A≤前7K线最低点)

                                                          同时(A≤前8K线最低点)

                                                         则返回前9K线最低价,否则返回0.

 

P10:=IFELSE(A>REF(L11,10)&&A<=REF(L11,1)&&A<=REF(L11,2)&&A<=REF(L11,3)&&A<=REF(L11,4)&&A<=REF(L11,5)&&A<=REF(L11,6)&&A<=REF(L11,7)&&A<=REF(L11,8)&&A<=REF(L11,9),REF(L11,10),0);

//p10的计算公式为:如果(A>前10K线最低点)

                                                          同时(A≤前1K线最低点)

                                                          同时(A≤前2K线最低点)

                                                          同时(A≤前3K线最低点)

                                                          同时(A≤前4K线最低点)

                                                          同时(A≤前5K线最低点)

                                                          同时(A≤前6K线最低点)

                                                          同时(A≤前7K线最低点)

                                                          同时(A≤前8K线最低点)

                                                          同时(A≤前9K线最低点)

                                                         则返回前10K线最低价,否则返回0.

 

AA:=P1+P2+P3+P4+P5+P6+P7+P8+P9+P10;

//AA等于这些的和,这个数值有啥用不太理解,应该不止一个是非零的。

 

PP1:=IFELSE(AA>REF(L11,1),REF(L11,1),0);

//pp1的计算公式为:如果(AA大于前边第1K线)就返回本周期K线最低点,否则返回0

 

PP2:=IFELSE(AA>REF(L11,2)&&AA<=REF(L11,1),REF(L11,2),0);

//pp2的计算公式为:如果(AA大于前边第2K线)

                                                      同时(AA≤前1K线最低点)

 

                                                    就返回前2线最低点,否则返回0

 

PP3:=IFELSE(AA>REF(L11,3)&&AA<=REF(L11,1)&&AA<=REF(L11,2),REF(L11,3),0);

//pp3的计算公式为:如果(AA大于前边第3K线)

                                                      同时(AA≤前1K线最低点)

                                                      同时(AA≤前2K线最低点)

 

                                                    就返回前3线最低点,否则返回0

 

PP4:=IFELSE(AA>REF(L11,4)&&AA<=REF(L11,1)&&AA<=REF(L11,2)&&AA<=REF(L11,3),REF(L11,4),0);

//pp4的计算公式为:如果(AA大于前边第4K线)

                                                      同时(AA≤前1K线最低点)

                                                      同时(AA≤前2K线最低点)

                                                      同时(AA≤前3K线最低点)

 

                                                    就返回前4线最低点,否则返回0

 

PP5:=IFELSE(AA>REF(L11,5)&&AA<=REF(L11,1)&&AA<=REF(L11,2)&&AA<=REF(L11,3)&&AA<=REF(L11,4),REF(L11,5),0);

PP6:=IFELSE(AA>REF(L11,6)&&AA<=REF(L11,1)&&AA<=REF(L11,2)&&AA<=REF(L11,3)&&AA<=REF(L11,4)&&AA<=REF(L11,5),REF(L11,6),0);

PP7:=IFELSE(AA>REF(L11,7)&&AA<=REF(L11,1)&&AA<=REF(L11,2)&&AA<=REF(L11,3)&&AA<=REF(L11,4)&&AA<=REF(L11,5)&&AA<=REF(L11,6),REF(L11,7),0);

PP8:=IFELSE(AA>REF(L11,8)&&AA<=REF(L11,1)&&AA<=REF(L11,2)&&AA<=REF(L11,3)&&AA<=REF(L11,4)&&AA<=REF(L11,5)&&AA<=REF(L11,6)&&AA<=REF(L11,7),REF(L11,8),0);

PP9:=IFELSE(AA>REF(L11,9)&&AA<=REF(L11,1)&&AA<=REF(L11,2)&&AA<=REF(L11,3)&&AA<=REF(L11,4)&&AA<=REF(L11,5)&&AA<=REF(L11,6)&&AA<=REF(L11,7)&&AA<=REF(L11,8),REF(L11,9),0);

PP10:=IFELSE(AA>REF(L11,10)&&AA<=REF(L11,1)&&AA<=REF(L11,2)&&AA<=REF(L11,3)&&AA<=REF(L11,4)&&AA<=REF(L11,5)&&AA<=REF(L11,6)&&AA<=REF(L11,7)&&AA<=REF(L11,8)&&AA<=REF(L11,9),REF(L11,10),0);

AAA:=PP1+PP2+PP3+PP4+PP5+PP6+PP7+PP8+PP9+PP10;

//AAA等于这些的和,这个数值有啥用不太理解,应该不止一个是非零的。

 

C11:=VALUEWHEN(AAA>0,AAA);

//C11的计算公式为:如果AAA0,就返回AAA,否则返回VALUEWHEN的前一个值

---------------------------------------

这句貌似是说如果AAA>0就返回AAA,否则返回VALUEWHEN的前一个值

问题是这个AAA是合计出来的值,比如是2485,那它前一个数字应该是2484?如果AAA是0,那前一个是-1?
但是我去掉这个C11:后边的等号让他的值在图左上方显示,当AAA为零是,C11是4位数,比如2485.
所以麻烦高手给讲下为啥会“否则返回VALUEWHEN的前一个值”这句话中的前一个值是怎么算出来的前一个。

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


加好友 发短信
等级:论坛游侠 帖子:193 积分:0 威望:0 精华:0 注册:2018/12/18 15:40:26
  发帖心情 Post By:2018/12/26 11:39:21    Post IP:123.168.88.72[显示全部帖子]

是不是说比如C11开始是0,之后AAA大于零了比如成了2573,C11也变成2573
之后,如果下一根K线出现,程序再运行一遍时,AAA为0,那这个C11就还是2573不变。
如果AAA再次非零,比如成2584了,那C11也重新赋值为2573?

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


加好友 发短信
等级:论坛游侠 帖子:193 积分:0 威望:0 精华:0 注册:2018/12/18 15:40:26
回复:(FireScript)?前一个是指上次 aaa>0位...  发帖心情 Post By:2018/12/26 13:14:54    Post IP:123.168.88.72[显示全部帖子]

内容待审核

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


加好友 发短信
等级:论坛游侠 帖子:193 积分:0 威望:0 精华:0 注册:2018/12/18 15:40:26
回复:(FireScript) 是的,三种可能的返回值,...  发帖心情 Post By:2018/12/26 13:24:45    Post IP:123.168.88.72[显示全部帖子]

谢谢 版主指点图片点击可在新窗口打开查看

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


加好友 发短信
等级:论坛游侠 帖子:193 积分:0 威望:0 精华:0 注册:2018/12/18 15:40:26
回复:(FireScript) 是的,三种可能的返回值,...  发帖心情 Post By:2018/12/26 14:29:46    Post IP:123.168.88.72[显示全部帖子]

IF HOLDING=0 THEN BEGIN   //若持仓为0

 IF TMP<=0 THEN           //TMP<=0

  BUY(1,1,LIMITR,CLOSE);  //开多单(限价入场,按本周期收盘价来买)


请教版主:这个buy括号里边的第一个是cond的条件,这里边是个1应该怎么理解啊?就是说如果前边IF的那2个条件为true的话?

如果是这样。那不是条件写外边去了么?

还有那个close。我看是本周期收盘价,那买的时候这根K线还没走完的话怎么办?等最后几秒买?还是只前边那根K线的收盘价啊?


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


加好友 发短信
等级:论坛游侠 帖子:193 积分:0 威望:0 精华:0 注册:2018/12/18 15:40:26
回复:(FireScript) 1就是表示条件成立的意思。...  发帖心情 Post By:2018/12/26 14:49:45    Post IP:123.168.88.72[显示全部帖子]

感谢版主回复,如果没您指导。这个问题会困扰我很久很久。

 回到顶部