以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- while循环中使用ref的问题 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=167075) |
-- 作者:zhuangjyuan -- 发布时间:2018/12/13 15:22:19 -- while循环中使用ref的问题 if (dea>0) then {DEA为MACD中的DEA,前面有定义,这里 省略} begin va:=0; j:=0; cond3:=0; while (va>=0) do { VA为中间变量,调用以前的DEA用} begin
j:=j+1;
va:=ref(dea,j);
if ref(low,j)<=ref(ma4,j) then{MA4,为30日均线,前面有定义,这里省略)
cond3:=1;
break; end end 我这个的意思是:当MACD中DEA为正时,往前看DEA>0这段时间内就最低价是否触碰MA4这根均线,如果触碰就复制条件cond3=1; 这个程序编译后说ref()这个函数不能在循环语句中调用,请问不这样写要怎么写呢】 |
-- 作者:FireScript -- 发布时间:2018/12/13 15:48:06 -- 你这个无法处理的。一般通常ref是在循环外面计算好,然后在循环里面调用。但是你这种没办法。你的ref调用和j有关联。 |
-- 作者:zhuangjyuan -- 发布时间:2018/12/13 16:43:18 -- 那请问有其他写法吗,我不知道有什么其他表达方式 |
-- 作者:FireScript -- 发布时间:2018/12/13 17:14:39 -- 你的原始思路是什么?是这个“当MACD中DEA为正时,往前看DEA>0这段时间内就最低价是否触碰MA4这根均线,如果触碰就复制条件cond3=1;”吗? |
-- 作者:zhuangjyuan -- 发布时间:2018/12/14 21:09:30 -- 就是DEA从之前金叉到现在这段K线,是否出现价格触碰MA4,就是这个意思 |
-- 作者:FireScript -- 发布时间:2018/12/17 9:52:12 -- 不需要循环。 ma4:=ma(c,4);
len:BARSLAST(cross(dea,diff));//上次金叉距离现在的周期数 cond:if(dea>0 and count(l<=ma4,len+1)>=1,1,0);//当前是dea>0,并且上次金叉到现在存在 l<=ma4成立的K。 |
-- 作者:zhuangjyuan -- 发布时间:2018/12/17 11:45:26 -- 好的 谢谢
|