以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  仓差代码编写  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=172693)

--  作者:mzxg
--  发布时间:2019/10/30 0:55:21
--  仓差代码编写
请老师帮忙写个仓差的自定义函数:分钟级别的上根K线和当根K线的持仓量之差。现有的仓差只能取当天的,还是返回常数。
--  作者:FireScript
--  发布时间:2019/10/30 9:05:55
--  
 cc:openint-ref(openint,1);

这样就可以了啊。

--  作者:mzxg
--  发布时间:2019/10/30 10:46:45
--  
但是这个在全局变量的公式并在逐K模式运行中用不了
--  作者:FireScript
--  发布时间:2019/10/30 10:55:36
--  
没太明白,你是在序列下给全局变量赋这个openint的值?
序列模式下无法定义全局变量的。你算仓差为什么要用到全局变量啊。而且还是在序列模式下。


--  作者:mzxg
--  发布时间:2019/10/30 11:17:48
--  
像下面这样,画不出线,也没有数值。
VARIABLE:ljh:=0,b1:=0;
N1:=5;
mid:=c;
hsl:=(openint-ref(openint,1))/openint;
ljh:=if(BARPOS=1,hsl,ljh*(1-hsl)*(n1-1)/n1+hsl);
b1:=if(BARPOS=1,mid,(mid*hsl+b1*ref(ljh,1)*(1-hsl)*(n1-1)/n1)/ljh);
K:b1,COLORYELLOW;


--  作者:FireScript
--  发布时间:2019/10/30 13:49:47
--  
是因为一个原因。hsl 在第一个K 其实是一个无效值,这时候赋值给全局变量会导致出问题的。

VARIABLE:ljh:=0,b1:=0;
N1:=5;
mid:=c;
hsl:=if(BARPOS=1,0,(openint-ref(openint,1))/openint);

ljh:=if(BARPOS=1,hsl,ljh*(1-hsl)*(n1-1)/n1+hsl);
b1:=if(BARPOS=1,mid,(mid*hsl+b1*ref(ljh,1)*(1-hsl)*(n1-1)/n1)/ljh);
K:b1,COLORYELLOW;


--  作者:FireScript
--  发布时间:2019/10/30 13:50:02
--  
上面代码需要在逐K模式,序列下无法定义全局变量。
--  作者:mzxg
--  发布时间:2019/11/1 23:48:34
--  
谢谢老师的回复,感谢!
--  作者:mzxg
--  发布时间:2019/11/7 1:55:57
--  
老师,这个公式能让它在分钟周期里从每天开盘第一根K线计算到收盘,然后第二天开盘又重新计算,如此循环。这样该怎么编写?
--  作者:FireScript
--  发布时间:2019/11/7 9:55:54
--  
 那 这样试下呢。

VARIABLE:ljh:=0,b1:=0;


N1:=5;
mid:=c;
hsl:=if(BARPOS=1 or TODAYBAR=1,0,(openint-ref(openint,1))/openint);

ljh:=if(BARPOS=1 or TODAYBAR=1,hsl,ljh*(1-hsl)*(n1-1)/n1+hsl);
b1:=if(BARPOS=1 or TODAYBAR=1,mid,(mid*hsl+b1*ref(ljh,1)*(1-hsl)*(n1-1)/n1)/ljh);
K:b1,COLORYELLOW;