以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  关于逐k线下的逻辑问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=163540)

--  作者:jayhaha580
--  发布时间:2018/5/20 19:48:30
--  关于逐k线下的逻辑问题
你好,我想请教一下,以下这个公式为什么能成立
IF RSI1>80 THEN CHM:=1;
IF RSI1<20 THEN CHM:=2;

IF CHM=1 AND C>MAVALUE AND REF(C,1)>REF(MAVALUE,1) THEN CHM:=3;
IF CHM=2 AND C<MAVALUE AND REF(C,1)<REF(MAVALUE,1) THEN CHM:=4;

IF CHM=3 AND C<MAVALUE AND REF(C,1)>REF(MAVALUE,1) THEN CHM:=0;
IF CHM=4 AND C>MAVALUE AND REF(C,1)<REF(MAVALUE,1) THEN CHM:=0;

我的理解是逐k线模式下,公式将每个k线解释一次,而CHM 并没有标记为全局变量,所以当前的k线下CHM=1时的C>MAVALUE和CHM=3时的C<MAVALUE冲突,因为是同一k线下。
但是公式运行是成功的。我想请教一下我的理解在哪个方面出错了。谢谢老师

--  作者:wenarm
--  发布时间:2018/5/21 8:40:09
--  

你可以直接在k线上输出你的条件的因子项,在成立位置看结果。

 


--  作者:jayhaha580
--  发布时间:2018/5/21 9:29:25
--  
好的,我按照你的方法,加了color来显示图标,只是针对rsi1>80的情况,改成了以下:
IF RSI1>80 THEN CHM:1,COLORRED,NOAXIS;
IF RSI1<20 THEN CHM:=2;

IF CHM=1 AND C>MAVALUE AND REF(C,1)>REF(MAVALUE,1) AND REF(C,2)<REF(MAVALUE,2)  THEN CHM:3,COLORYELLOW,NOAXIS;
IF CHM=2 AND C<MAVALUE AND REF(C,1)<REF(MAVALUE,1) AND REF(C,2)>REF(MAVALUE,2)  THEN CHM:=4;

IF CHM=3 AND C<MAVALUE AND REF(C,1)>REF(MAVALUE,1) THEN CHM:0,COLORGREEN,NOAXIS;
IF CHM=4 AND C>MAVALUE AND REF(C,1)<REF(MAVALUE,1) THEN CHM:=0;

结果显示:

编译错误,变量名‘CHM’重复。

为什么会这样呢?之前是一直稳定的。

--  作者:FireScript
--  发布时间:2018/5/21 9:32:03
--  
 ‘:’是定义和赋值,你前面已经定义了CHM,  后面不能再用对CHM使用‘:’了。 后面的CHM的赋值全部改成 用 ‘:=’

--  作者:jayhaha580
--  发布时间:2018/5/21 10:21:36
--  
好的,但是我全部改成"CHM:=",就不能在图表上显示位置了呀,这就搞不清楚开始那个问题:CHM到赋值流程到底是怎么样的。
--  作者:FireScript
--  发布时间:2018/5/21 10:32:40
--  
CHM:0;
IF RSI1>80 THEN CHM:=1,COLORRED,NOAXIS;
IF RSI1<20 THEN CHM:=2;


第一次定义的时候 用 “:” 后面的用 ‘:=’就可以了。

--  作者:jayhaha580
--  发布时间:2018/5/21 13:34:48
--  
突然想到,回到最初的问题,我想请教一下,当逐k线模式情况下,在前面没有定义的变量,是否会按照上一根k线遗留下来的变量来进行赋值:
就像之前的公式:
IF CHM=1 AND C>MAVALUE AND REF(C,1)>REF(MAVALUE,1)  THEN CHM:=3,coloergreen,noaxis;
IF CHM=2 AND C<MAVALUE AND REF(C,1)<REF(MAVALUE,1) THEN CHM:=4;

IF CHM=3 AND C<MAVALUE AND REF(C,1)>REF(MAVALUE,1) THEN CHM:=0;
IF CHM=4 AND C>MAVALUE AND REF(C,1)<REF(MAVALUE,1) THEN CHM:=0;

中的,CHM=3时,是否是公式在上一根k线留下的变量。

毕竟我测评过,CHM=0或CHM=3的不同情况下,对于交易结果都是不一样的。

--  作者:FireScript
--  发布时间:2018/5/21 13:53:49
--  
 会有这种情况的。但是可以在你的判断里面进行一下处理,保证CHM在任何情况下都有赋值。你原先那个如果RSI1 在[20,80]直接那就没有赋值了。