以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- [求助]IF 表达式1 THEN STICKLINE (表达式2,画线位置1,0,1,0,colorgreen);//为何不管表达式1是否为真都会执行表达式2? (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=167509) |
-- 作者:JJG -- 发布时间:2019/1/4 2:01:33 -- [求助]IF 表达式1 THEN STICKLINE (表达式2,画线位置1,0,1,0,colorgreen);//为何不管表达式1是否为真都会执行表达式2? 当前MFI : (HIGH-LOW)/VOL*10000;//数值结果太小,小数点后4位都是“0”被当作数值为“0”,无法比较因此放大10000倍处理。 之前MFI : (REF(HIGH,1)-REF(LOW,1))/REF(VOL,1)*10000;//数值结果太小,小数点后4位都是“0”被当作数值为“0”,无法比较因此放大10000倍处理。 IF 当前MFI>之前MFI THEN STICKLINE ((VOL>REF(VOL,1)),当前MFI,0,1,0,colorgreen); //这条语句的效果不正确。问题见随后的两行注释 //IF 表达式1 THEN 表达式2 应该是表达式1为真才会执行表达式2 为何这条语句不管当前MFI>之前MFI是否为真只要VOL>REF(VOL,1)就会画绿线? //详见品种M05(豆粕1905)的12月21日和12月7日的绿线是不应该出现的。 //STICKLINE ((当前MFI>之前MFI) and (VOL>REF(VOL,1)),当前MFI,0,1,0,colorgreen);//此行语句效果是正确的 //STICKLINE ((当前MFI>之前MFI) and (VOL<=REF(VOL,1)),当前MFI,0,1,0,colorblue);//此行语句效果是正确的 //STICKLINE ((当前MFI<之前MFI) and (VOL<=REF(VOL,1)),当前MFI,0,1,0,colorbrown);//此行语句效果是正确的 //STICKLINE ((当前MFI<之前MFI) and (VOL>REF(VOL,1)),当前MFI,0,1,0,coloryellow);//此行语句效果是正确的 |
-- 作者:FireScript -- 发布时间:2019/1/4 8:50:25 -- 1.你代码是序列还是逐K模式的? 2.你把这个判断直接输出出来,不要看前面的数值直接判断,数值有小数点 肉眼观察到的有误差也是有可能的。
[此贴子已经被作者于2019/1/4 8:53:38编辑过]
|
-- 作者:JJG -- 发布时间:2019/1/4 9:58:21 -- 我的代码是序列的,判断直接输出也是错误的。 我调试过错误的代码行是: IF 当前MFI>之前MFI THEN STICKLINE ((VOL>REF(VOL,1)),当前MFI,0,1,0,colorgreen); 我要实现的意图是VOL>REF(VOL,1)柱状图集合限制在当前MFI>之前MFI柱状图的交集内。 这条代码不管当前MFI>之前MFI这个表达式是否为真都会按VOL>REF(VOL,1)这个表达式执行,没有起到 IF 限定交集的作用。
|
-- 作者:FireScript -- 发布时间:2019/1/4 10:20:28 -- 这个if在序列模式下的处理和逐K有差异。你改成逐K试下呢。 |
-- 作者:FireScript -- 发布时间:2019/1/4 10:23:24 -- http://www.weistock.com/runmode.htm 这里的例子有对这个情况做说明的。 |