以文本方式查看主题

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

--  作者:Follow
--  发布时间:2014/5/26 22:46:54
--  金字塔编程请教
向大家请教一个金字塔的编程问题,我觉得这段代码这样写比较繁琐,有没有类似于循环的语句可以把它改良一下

///////////////////////////////////////////////////////设置全局变量///////////////////////////////////////////////////
VARIABLE:a10=0,a9=0,a8=0,a7=0,a6=0,a5=0,a4=0,a3=0,a2=0,a1=0;
VARIABLE:b10=0,b9=0,b8=0,b7=0,b6=0,b5=0,b4=0,b3=0,b2=0,b1=0;

//////////////////////////////////////////////////////对an,bn赋值/////////////////////////////////////////////////////
if ref(close-open,10)>0 then 
a10:=1;
else a10:=0;

if ref(close-open,9)>0 then 
a9:=1;
else a9:=0;

if ref(close-open,8)>0 then 
a8:=1;
else a8:=0;

if ref(close-open,7)>0 then 
a7:=1;
else a7:=0;

if ref(close-open,6)>0 then 
a6:=1;
else a6:=0;

if ref(close-open,5)>0 then 
a5:=1;
else a5:=0;

if ref(close-open,4)>0 then 
a4:=1;
else a4:=0;

if ref(close-open,3)>0 then 
a3:=1;
else a3:=0;

if ref(close-open,2)>0 then 
a2:=1;
else a2:=0;

if ref(close-open,1)>0 then 
a1:=1;
else a1:=0;////////////////对an进行赋值////////////////////////

if ref(close-open,10)<0 then 
b10:=1;
else b10:=0;

if ref(close-open,9)<0 then 
b9:=1;
else b9:=0;

if ref(close-open,8)<0 then 
b8:=1;
else b8:=0;

if ref(close-open,7)<0 then 
b7:=1;
else b7:=0;

if ref(close-open,6)<0 then 
b6:=1;
else b6:=0;

if ref(close-open,5)<0 then 
b5:=1;
else b5:=0;

if ref(close-open,4)<0 then 
b4:=1;
else b4:=0;

if ref(close-open,3)<0 then 
b3:=1;
else b3:=0;

if ref(close-open,2)<0 then 
b2:=1;
else b2:=0;

if ref(close-open,1)<0 then 
b1:=1;
else b1:=0;////////////////对bn进行赋值////////////////////////

收阳上涨幅度和:=(a10)*ref(close-open,10)+(a9)*ref(close-open,9)+(a8)*ref(close-open,8)+(a7)*ref(close-open,7)+(a6)*ref(close-open,6)+(a5)*ref(close-open,5)+(a4)*ref(close-open,4)+(a3)*ref(close-open,3)+(a2)*ref(close-open,2)+(a1)*ref(close-open,1),NOAXIS;
收阴下跌幅度和:=(b10)*ref(open-close,10)+(b9)*ref(open-close,9)+(b8)*ref(open-close,8)+(b7)*ref(open-close,7)+(b6)*ref(open-close,6)+(b5)*ref(open-close,5)+(b4)*ref(open-close,4)+(b3)*ref(open-close,3)+(b2)*ref(open-close,2)+(b1)*ref(open-close,1),NOAXIS;

--  作者:jinzhe
--  发布时间:2014/5/27 9:01:55
--  
这样挺好的,觉得繁琐可以自己想办法写成其他的
--  作者:无极无名
--  发布时间:2014/5/27 9:46:22
--  
我来试试。应该不需要这么复杂。

HL:=CLOSE-OPEN;

X:=SUM(HL,10);//阳减阴
Y:=SUM(ABS(HL),10);//阳加阴

//////////于是图片点击可在新窗口打开查看/////////////
A:=0.5*(X+Y);//收阳上涨幅度和
B:=0.5*(Y-X);//收阴下跌幅度和

--  作者:Follow
--  发布时间:2014/5/27 10:30:30
--  
高手!太聪明了!数学真好。谢谢
--  作者:Follow
--  发布时间:2014/5/27 10:31:21
--  
好的,我已经找到解决方法了
--  作者:无极无名
--  发布时间:2014/5/27 12:51:10
--  
图片点击可在新窗口打开查看回答问题有金币奖励。
--  作者:jinzhe
--  发布时间:2014/5/27 13:31:08
--  
以下是引用无极无名在2014/5/27 12:51:10的发言:
图片点击可在新窗口打开查看回答问题有金币奖励。

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

那是,必须的