以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  [求助]请教全局变量问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=174730)

--  作者:vakoth
--  发布时间:2020/3/3 22:12:40
--  [求助]请教全局变量问题

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
--  发布时间:2020/3/3 22:37:34
--  
贴出完整的公式。单独这两句话,没法帮你分析原因
--  作者:vakoth
--  发布时间:2020/3/3 23:19:22
--  
可是我就是为了测试这两个写法的的结果才做的实验啊
好吧我贴完把



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
--  发布时间:2020/3/3 23:40:03
--  

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

 


--  作者:vakoth
--  发布时间:2020/3/4 0:16:28
--  

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
--  发布时间:2020/3/4 0:16:38
--  
晕死了
--  作者:wenarm
--  发布时间:2020/3/4 8:41:37
--  
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
--  发布时间:2020/3/4 11:23:52
--  
哦,原来这样啊,我原来的理解错误了

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


--  作者:vakoth
--  发布时间:2020/3/4 11:35:40
--  
请看曲线,按照你的说法,用全局变量出来的数值是有问题的,无论上是取HH,或者是LL,还是取上一个trend1的值都不应该出现trend1=0才对啊
或者是我能力不够,分析不出来吗?

--  作者:wenarm
--  发布时间:2020/3/4 12:08:39
--  

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

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

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