以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教IF分段显示与SUM的用法  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=64414)

--  作者:yanxc
--  发布时间:2014/4/27 11:13:45
--  请教IF分段显示与SUM的用法

原始问题见:

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=64377

 

H2:=SELFDATAN(3); //自定义资金值
tm:=OPENMINUTES(TIME); //开盘分钟数
ts:=INTPART(CURRBARSCOUNT/270); //距今天数

cha[1]:=VALUEWHEN(tm=255 and ts=1,H2);
cha[2]:=VALUEWHEN(tm=255 and ts=2,H2);
cha[3]:=VALUEWHEN(tm=255 and ts=3,H2);
cha[4]:=VALUEWHEN(tm=255 and ts=4,H2);

……

cha[n]:=VALUEWHEN(tm=255 and ts=n,H2); //每日资金线向上移动的差值,等于15:00的流出量

 

现在的问题是,如下使用IF为何不行?

 

IF ts=1 then H连续:H2-cha[1];

IF ts=2 then H连续:H2-cha[1]-cha[2];

IF ts=3 then H连续:H2-cha[1]-cha[2]-cha[3];

 

我想分段显示该线,一天前显示H2-cha[1],二天前显示H2-cha[1]-cha[2]……可第一天的线就不显示了。不知为何。

 

请问这个IF then该如何使用?


 


--  作者:yanxc
--  发布时间:2014/4/27 11:14:56
--  

另外,试图改写为一条线,用SUM来归纳,其线型却不正确:]

 

H连续:IF(ts=0,H2,H2-SUM(cha[ts],ts));

 

请问这里SUM应该如何正确使用?


--  作者:jinzhe
--  发布时间:2014/4/28 9:09:06
--  

上面的cha[1],cha[2]有没有具体的数据输出?


--  作者:yanxc
--  发布时间:2014/4/28 11:51:12
--  
以下是引用jinzhe在2014/4/28 9:09:06的发言:

上面的cha[1],cha[2]有没有具体的数据输出?

 

有值啊,以下都能显示:

H21:IF(ts=0,H2,H2-cha[1]);
H22:IF(ts=0,H2,H2-cha[1]-cha[2]);
H23:IF(ts=0,H2,H2-cha[1]-cha[2]-cha[3]);
H24:IF(ts=0,H2,H2-cha[1]-cha[2]-cha[3]-cha[4]);


--  作者:yanxc
--  发布时间:2014/4/28 16:03:22
--  
无人解答吗?
--  作者:fly
--  发布时间:2014/4/28 16:24:00
--  

1楼问题,后面的会覆盖前面的.

 

以下代码为一个均线,分段显示不同的颜色,希望对您的编写有启发

 

//5日均线,连续3个向上后(即今天的数值大于昨天的,连续3个),均线用红色显示,
//连续3个向下后,用绿色显示;
//如果数值有上有下,用白色显示。

mc:ma(close,5),colorwhite;
rmc:=ref(mc,1);
partline(all(mc>=rmc,3),mc,colorred);
partline(all(mc<=rmc,3),mc,colorgreen);

 

2楼.

H连续:IF(ts=0,H2,H2-SUM(cha[ts],ts));

 

你试试把求和放到前面

cha1:=SUM(cha,ts);

H连续:IF(ts=0,H2,H2-cha1);

 


--  作者:yanxc
--  发布时间:2014/4/28 16:53:26
--  
以下是引用fly在2014/4/28 16:24:00的发言:

1楼问题,后面的会覆盖前面的.

 

以下代码为一个均线,分段显示不同的颜色,希望对您的编写有启发

 

//5日均线,连续3个向上后(即今天的数值大于昨天的,连续3个),均线用红色显示,
//连续3个向下后,用绿色显示;
//如果数值有上有下,用白色显示。

mc:ma(close,5),colorwhite;
rmc:=ref(mc,1);
partline(all(mc>=rmc,3),mc,colorred);
partline(all(mc<=rmc,3),mc,colorgreen);

 

2楼.

H连续:IF(ts=0,H2,H2-SUM(cha[ts],ts));

 

你试试把求和放到前面

cha1:=SUM(cha,ts);

H连续:IF(ts=0,H2,H2-cha1);

 

 

1楼问题。

因为画线不是最终结果,而是要引用H连续曲线这个数据,因此用partline似乎不行。

 

2楼问题。

放到前面后,画出的曲线与放到里面完全一样。


--  作者:yanxc
--  发布时间:2014/4/28 16:54:17
--  

原始问题如下:

 

目前,已经保存每天每分钟的“资金值”记录。

现在,希望模型计算的时候,把昨天的资金曲线的尾巴,与今天资金曲线的开头,连接起来。形成累加的资金曲线。

就象K线那样连续。

 

要求的结果是:如果今天9:30的初始值为0,则昨天15:00的结束值为0。

 

也就是说,昨天如果到15:00的时候资金流出100亿,则写个代码,把昨天的所有保存“资金值”数据都加上100亿。

 

 


图片点击可在新窗口打开查看此主题相关图片如下:分段.jpg
图片点击可在新窗口打开查看

 

目前是这样



图片点击可在新窗口打开查看此主题相关图片如下:连续.jpg
图片点击可在新窗口打开查看


希望连接成类似这样

 

以上演示是易士0号的累加效果,需要保留大量扩展数据,且一旦中断补充就无法连接。

而我们保存了自定义资金数据,为每日每分钟线。

以上需求,可支付现金解决。


--  作者:yanxc
--  发布时间:2014/4/28 16:59:30
--  


目前的进展:

 

使用如下代码,可以连接好当天与昨天的线,但更早的线就不正确了

H连续:IF(ts=0,H2,H2-SUM(cha[ts],ts));

 

 

 


图片点击可在新窗口打开查看此主题相关图片如下:红线.jpg
图片点击可在新窗口打开查看

图中红箭头段(今天与昨天)的连接是正确的,昨天结束与今天开始是平齐的。

而更早的日期就不对了,如绿箭头所示,前一天结束与当天开始不一样高。


--  作者:yanxc
--  发布时间:2014/4/29 17:06:02
--  
求解。