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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]请教全局变量问题

   

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


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

主题:[求助]请教全局变量问题

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


加好友 发短信
等级:论坛游侠 帖子:166 积分:0 威望:0 精华:0 注册:2019/6/14 11:24:06
[求助]请教全局变量问题  发帖心情 Post By:2020/3/3 22:12:40    Post IP:119.123.206.60[只看该作者]


TREND:IF(EVWMA>REF(HH,LOOKBACK),LL,VALUEWHEN(EVWMA<REF(LL,LOOKBACK),HH));

VARIABLE:TREND1=0;
TREND1:=IF(EVWMA>REF(HH,LOOKBACK),LL,IF(EVWMA<REF(LL,LOOKBACK),HH,TREND1));


两个写法在跳转的地方取值不一样,上面的取值貌似还好,下面的取值直接为0,该怎么写才是对的?

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


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2020/3/3 22:37:34    Post IP:101.88.211.163[只看该作者]

贴出完整的公式。单独这两句话,没法帮你分析原因


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
vakoth
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:166 积分:0 威望:0 精华:0 注册:2019/6/14 11:24:06
  发帖心情 Post By:2020/3/3 23:19:22    Post IP:119.123.206.60[只看该作者]

可是我就是为了测试这两个写法的的结果才做的实验啊
好吧我贴完把



LEN:= 20;
LOOKBACK:=10;

NV:= SUM(VOL,LEN);
EVWMA:EMA(CLOSE,NV/VOL,1);   


HH:=HHV(EVWMA,LEN);
LL:=LLV(EVWMA,LEN);


VARIABLE:TREND1=0;
TREND1:=IF(EVWMA>REF(HH,LOOKBACK),LL,IF(EVWMA<REF(LL,LOOKBACK),HH,TREND1));

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


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2020/3/3 23:40:03    Post IP:101.88.208.24[只看该作者]

你的代码都无法编译通过。请问,要我们怎么帮您分析问题

 



编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
vakoth
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:166 积分:0 威望:0 精华:0 注册:2019/6/14 11:24:06
  发帖心情 Post By:2020/3/4 0:16:28    Post IP:119.123.206.60[只看该作者]


LEN:= 20;
LOOKBACK:=10;

NV:= SUM(VOL,LEN);
EVWMA:sMA(CLOSE,NV/VOL,1);   


HH:=HHV(EVWMA,LEN);
LL:=LLV(EVWMA,LEN);


VARIABLE:TREND1=0;
TREND1:=IF(EVWMA>REF(HH,LOOKBACK),LL,IF(EVWMA<REF(LL,LOOKBACK),HH,TREND1));

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


加好友 发短信
等级:论坛游侠 帖子:166 积分:0 威望:0 精华:0 注册:2019/6/14 11:24:06
  发帖心情 Post By:2020/3/4 0:16:38    Post IP:119.123.206.60[只看该作者]

晕死了

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


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

TREND:IF(EVWMA>REF(HH,LOOKBACK),LL,VALUEWHEN(EVWMA<REF(LL,LOOKBACK),HH));
当EVWMA>REF(HH,LOOKBACK) 不成立时,VALUEWHEN(EVWMA<REF(LL,LOOKBACK),HH)最终会向前找,直到找到最近一次EVWMA<REF(LL,LOOKBACK)时的HH。
例如:第30根k位置执行逻辑触发VALUEWHEN(EVWMA<REF(LL,LOOKBACK),HH),并且EVWMA<REF(LL,LOOKBACK)并不成立。而恰好是第5根k线位置才满足。那么你在30根k线上得到的是,第5根k对应的HH。

 
VARIABLE:TREND1=0;
TREND1:=IF(EVWMA>REF(HH,LOOKBACK),LL,IF(EVWMA<REF(LL,LOOKBACK),HH,TREND1));
当EVWMA>REF(HH,LOOKBACK) 不成立时,IF(EVWMA<REF(LL,LOOKBACK),HH,TREND1); 如果EVWMA<REF(LL,LOOKBACK)成立取值HH,不成立则取上根K对应的TREND1;
例如:第30根k位置执行逻辑触发IF(EVWMA<REF(LL,LOOKBACK),HH,TREND1),EVWMA<REF(LL,LOOKBACK)不成立,那么取的是第29根k上的TREND1。



编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
vakoth
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:166 积分:0 威望:0 精华:0 注册:2019/6/14 11:24:06
  发帖心情 Post By:2020/3/4 11:23:52    Post IP:119.123.206.60[只看该作者]

哦,原来这样啊,我原来的理解错误了

当条件COND满足时,取当时的DATA的值,否则取得VALUEWHEN的前一个值。这话的意思博大精深啊


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


加好友 发短信
等级:论坛游侠 帖子:166 积分:0 威望:0 精华:0 注册:2019/6/14 11:24:06
  发帖心情 Post By:2020/3/4 11:35:40    Post IP:119.123.206.60[只看该作者]

请看曲线,按照你的说法,用全局变量出来的数值是有问题的,无论上是取HH,或者是LL,还是取上一个trend1的值都不应该出现trend1=0才对啊
或者是我能力不够,分析不出来吗?

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


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

你看的是k线图最开始的几根吧?开始因为计算量不够计算0 ,TREND1用的不就是初始化的值吗。

之后该值被改写后(非零),就不会是0.

你自己按照你的代码逻辑,自己在对应的k线位置,分析计算下结果就能排查问题。



编程无捷径,技巧靠积累。
 回到顶部
总数 22 1 2 3 下一页