以文本方式查看主题

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

--  作者:oroute
--  发布时间:2018/7/19 20:30:17
--  求助一个引用自身前值的写法

要计算一个关于tt的系列,表征类似于均线,

 

在计算中,需要引用tt的前两个到N个周期的值,简单一点,先说两个,ref(tt,1)和ref(tt,2)

比如

tt:=(c+ref(tt,1)+(tt,2))/3;

 

初始情况下 tt=close

 

是不是要用到全局变量?我还是写不好,请指点

 


--  作者:oroute
--  发布时间:2018/7/19 21:30:24
--  
and,要在逐K线模式下进行
--  作者:wenarm
--  发布时间:2018/7/20 8:19:01
--  
如果你ff已经是序列变量了,那么你上面的方式直接使用aa:ma(ff,n);//就是你要的n个ff的平均值
--  作者:oroute
--  发布时间:2018/7/20 15:09:35
--  
以下是引用wenarm在2018/7/20 8:19:01的发言:
如果你ff已经是序列变量了,那么你上面的方式直接使用aa:ma(ff,n);//就是你要的n个ff的平均值

 

我不是真的要ma啊,只是做个比方,每次算tt都要涉及到前两个tt


--  作者:oroute
--  发布时间:2018/7/20 15:11:29
--  
算法比较复杂,并且为了做交易模块,必须在逐K线模式下进行
--  作者:oroute
--  发布时间:2018/7/20 15:13:42
--  

图片点击可在新窗口打开查看

 

试一下能不能引用


--  作者:FireScript
--  发布时间:2018/7/20 15:28:10
--  
 你这个只需要处理第一个K和第二个K位置的初始值即可。
类似这样:
if BARPOS=1 then tt:=a;
if BARPOS=2 then tt:=b;

if BARPOS>=3 then tt:=(ref(tt,1)+ref(tt,2))/2;



--  作者:oroute
--  发布时间:2018/7/20 15:59:04
--  
以下是引用FireScript在2018/7/20 15:28:10的发言:
 你这个只需要处理第一个K和第二个K位置的初始值即可。
类似这样:
if BARPOS=1 then tt:=a;
if BARPOS=2 then tt:=b;

if BARPOS>=3 then tt:=(ref(tt,1)+ref(tt,2))/2;
 
 
===============
REF 函数在逐K线模式下不能直接在IF控制语句之内引用。请参阅帮助公式部分的解决方案。
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=130



--  作者:oroute
--  发布时间:2018/7/20 15:59:58
--  

我的源码是这样的

 

if BARPOS=1 then lltv:=c;
if BARPOS=2 then lltv:=c;

if BARPOS>=3 then LLTv:=(a-a^2/4)*FC+(a^2/2)*ref(FC,1)-(a-3*a^2/4)*ref(FC,2)+2*(1-a)*ref(lltv,1)-(1-a)^2*ref(lltv,2);

LLT:LLTV;