以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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线位置,分析计算下结果就能排查问题。 |