以文本方式查看主题

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

--  作者:qq代人发帖
--  发布时间:2019/3/11 11:17:36
--  金字塔是否有函数能能指定数据开始日期
请问金字塔是否有函数能能指定数据开始日期,
此函数能指定起始计算数据的日期,如框架里的指定开始日期一样。
若没有,能否增加一个。

--  作者:FireScript
--  发布时间:2019/3/11 11:21:25
--  
 可以在指标里面做限定,限定指标仅在指定日期之后开始指标的计算。
比如限定代码仅在18年10.16之后开始才进行计算。只需要把代码嵌入到一个if语句下面即可。if的条件设置成日期的判断。
if date>=1181016 then
begin
//交易代码
end

--  作者:sword8586
--  发布时间:2019/4/2 13:50:43
--  
使用该法,提示ema在if.......之后,不能用。请金字塔提供起始函数
--  作者:FireScript
--  发布时间:2019/4/2 14:01:03
--  
 一般这样做,把ema的计算放到if外部。然后if里面调用这个变量。
es:ema(c,5);
if date>=1181016 then
begin
//调用es变量
end

--  作者:sword8586
--  发布时间:2019/4/2 14:20:42
--  
这就没用了,我要的是ema(c,5)计算的起点是在指定日期以后。
--  作者:FireScript
--  发布时间:2019/4/2 14:55:26
--  
那就不能直接使用这个函数了。只能把函数的算法抽离出来,自行编写代码了。比如ema(c,20),在第一个K上取回的值就是当时的c.这样后面的都可以按照算法计算出来了。

N:=10;//相当于ema的参数N
X:=C;//相当于ema参数x
VARIABLE:mark:=0;
VARIABLE:ema_:=0;
//ema
mark:=if(date>=1181016,1,0);//指定日期开始计算

if count(mark=1,0)=1 then ema_:=X;
ema_:=if(count(mark=1,0)>1,(2*x+(N-1)*REF(ema_,1))/(N+1),ema_);//ema算法处理

ema_show:ema_;//最后结果

上面这个代码供参考。


--  作者:sword8586
--  发布时间:2019/4/2 15:18:51
--  
这样,可以但好麻烦。能否提供一个函数,就如exit一样,自此以下从开始日期计算,框架确定任意起始可以,应该可以调用。请提供解决方案。
--  作者:FireScript
--  发布时间:2019/4/2 15:24:28
--  
 没办法,ema这种只能还原它算法的方式来获取了。没有其他可用的函数了。