以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=187914)

--  作者:mikael_luo
--  发布时间:2021/4/19 9:25:54
--  在程序中变量自己需要引用自己怎么解决?

A的值和之前一根K线的值相关.

假如条件B成立,A的值等于之前的值,否则等于之前的值乘-1.
请问这种程序怎么表达?


--  作者:FireScript
--  发布时间:2021/4/19 9:47:49
--  
 这个你要处理的是初始值的问题。也就是第一个K位置时候,它必须有一个初始值。
但是你这个逻辑。你这个值的结果几乎就2个值。 初始值和 乘上-1的初始值。

你可以用全局变量处理:
VARIABLE:x:=1;//初始值是1

x:=if(条件A,-x,x);

showx:x;//全局变量默认不输出指标线,所以用普通变量来显示它的值。

--  作者:mikael_luo
--  发布时间:2021/4/19 10:03:36
--  

如果条件b成立则a的值等于之前的值,否则a的值+1.

如何表达呢?


--  作者:mikael_luo
--  发布时间:2021/4/19 10:06:30
--  

初始值还是设置为1


--  作者:FireScript
--  发布时间:2021/4/19 10:09:40
--  
一样的,if第二个参数这里你改下逻辑就行了。
x:=if(条件A,1+x,x);

--  作者:mikael_luo
--  发布时间:2021/4/20 9:21:39
--  

好像要加入一句,否则输出结果不同。RUNMODE:0;

我怀疑和这一句有关,

VARIABLE:x:=1;//初始值是1


--  作者:FireScript
--  发布时间:2021/4/20 9:24:42
--  
 你逐K模式还是序列模式啊。这个全局变量 序列模式无效的。所以你只能用RUNMODE去改变模式。
--  作者:mikael_luo
--  发布时间:2021/4/20 10:19:51
--  

哦,明白了,全局变量必须是逐K模式