M
may158
Unregistered / Unconfirmed
GUEST, unregistred user!
VBS脚本
A1:=IF(K=0,O,0)
A2:=IF(K=1,H,0)
A3:=IF(K=2,L,0)
A4:=IF(K=3,C,0)
A:=A1+A2+A3+A4;
C1:=A
C2:=A
C3:=A
C4:=A
C5:=A;
CL1:=L
CL2:=L
CH1:=H
CH2:=H;
定义变量
<%
vc1=ffl.vardata("c1")
vc2=ffl.vardata("c2")
vc3=ffl.vardata("c3")
vc4=ffl.vardata("c4")
vc5=ffl.vardata("c5")
vcL1=ffl.vardata("cL1")
vcL2=ffl.vardata("cL2")
vcH1=ffl.vardata("cH1")
vcH2=ffl.vardata("cH2")
vn=ffl.vardata("n") '来者不拒,多多益善
last=ubound(vc1)
以上向脚本中传入数据
一下使数据处理部分(只要将以下部分改为delphi即可)
for i=0 to last
vc4(i)=0
vc5(i)=0
next '清零,作信号记录
p=0
r=0
s=0
t=0
u=0 '定义变量,顺便清零
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1 to last
if p=0 or p=1 then
if vc1(i)>=vc2(i-1)*(1-vn/100) then '找向下的拐点
vc2(i)=max(vc1(i),vc2(i-1)) '找不到时,前面取最大
vcH2(i)=max(vcH2(i),vcH2(i-1)) '加一行,取H的最大
r=r+1
else '这里是找到了
p=-1 '找到向下拐点,P记为-1
vc4(i)=-1
for j=i-r-1 to i '找到向下的拐点,就找前面的高点(H)
if vcH1(j)=vcH2(i-1) and t=0 then
vc5(j)=2
t=t+1
end if
next
r=0
t=0
end if
end if '----------------------------------
if p=0 or p=-1 then
if vc1(i)<=vc3(i-1)*(1+vn/100) then '找向上的拐点
vc3(i)=min(vc1(i),vc3(i-1)) '找不到时,前面取最小
vcL2(i)=min(vcL2(i),vcL2(i-1)) '加一行,取L的最小
s=s+1
else
p=1 '找到向上的拐点,P记为1
vc4(i)=1
for j=i-s-1 to i '找到向上的拐点,就找前面的低点(L)
if vcL1(j)=vcL2(i-1) and t=0 then
vc5(j)=-2
t=t+1
end if
next
s=0
t=0
end if
end if
next '拐点是指至少能达到要求的点,但并不是峰点。
'前面是找拐点和峰点(是H或L点,记在VC5上)---前面多了个无效的峰点,后面的峰点(高低点、转折点)还没有处理,以下处理
for i=0 to last '处理开始部分:找第一个VC5的非0值,如果是2,首根K线就是高点,如果是-2,首K就是低点。
if vc5(i)<>0 and u=0 then 'U的加入是为了循环是一次性的
u=u+1
if vc5(i)=2 then
vc5(i)=0
vc5(0)=2
else
vc5(i)=0
vc5(0)=-2
end if
end if
next
u=0 '-------------------------------
for i=last to 0 step-1 '处理最后。最后的VC4=-1,找最低,最后的K线就是高点。最后的是1,找最高,最后的K线就是低点
if vc4(i)<>0 and u=0 then 'U的加入是为了循环是一次性的
if vc4(i)=1 then '最后的是向上的拐点
for j=i to last
if vcH1(j)=vcH2(last) AND U=0 then
if j<last then '两个最高点相等有两个情况:重合在最后的K线上,或者是等高
vc5(j)=2
vc5(last)=-2
else '相当于是j=last,即两个高点重合在最后的K线上
vc5(last)=2
end if
U=U+1
end if
next
else ' 相当于vc4(i)=-1
for j=i to last
if vcL1(j)=vcL2(last) AND U=0 then
if j<last then '两个最低点相等有两个情况:重合在最后的K线上,或者是等低
vc5(j)=-2
vc5(last)=2
else '相当于是j=last,即两个低点重合在最后的K线上
vc5(last)=-2
end if
U=U+1
end if
next
end if
end if
next
' 以上把高低点全部求出了。下面求转折线上的各点的值。用VCH1、VCL1和VC5来判断
u=0
s=0
for i=1 to last
u=u+1
if vc5(i)=-2 then '是低点
v=(vcH1(i-u)-vcL1(i))/u
for j=i to i-u step-1
vc3(j)=vcL1(i)+(i-j)*v
next
u=0
end if
if vc5(i)=2 then '是高点
v=(vcL1(i-u)-vcH1(i))/u
for j=i to i-u step-1
vc3(j)=vcH1(i)+(i-j)*v
next
u=0
end if
next
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function max(x,y) '自定义函数,在两者之间取最大值
if x>=y then
j=x
else
j=y
end if
max=j
end function
function min(x,y) '自定义函数,在两者之间取最小值
if x>=y then
j=y
else
j=x
end if
min=j
end function
以下传出数据
ffl.vardata("c3")=vc3
'ffl.vardata("c4")=vc4
'ffl.varstartindex("c4")=0
%>
C3;
A1:=IF(K=0,O,0)
A2:=IF(K=1,H,0)
A3:=IF(K=2,L,0)
A4:=IF(K=3,C,0)
A:=A1+A2+A3+A4;
C1:=A
C2:=A
C3:=A
C4:=A
C5:=A;
CL1:=L
CL2:=L
CH1:=H
CH2:=H;
定义变量
<%
vc1=ffl.vardata("c1")
vc2=ffl.vardata("c2")
vc3=ffl.vardata("c3")
vc4=ffl.vardata("c4")
vc5=ffl.vardata("c5")
vcL1=ffl.vardata("cL1")
vcL2=ffl.vardata("cL2")
vcH1=ffl.vardata("cH1")
vcH2=ffl.vardata("cH2")
vn=ffl.vardata("n") '来者不拒,多多益善
last=ubound(vc1)
以上向脚本中传入数据
一下使数据处理部分(只要将以下部分改为delphi即可)
for i=0 to last
vc4(i)=0
vc5(i)=0
next '清零,作信号记录
p=0
r=0
s=0
t=0
u=0 '定义变量,顺便清零
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1 to last
if p=0 or p=1 then
if vc1(i)>=vc2(i-1)*(1-vn/100) then '找向下的拐点
vc2(i)=max(vc1(i),vc2(i-1)) '找不到时,前面取最大
vcH2(i)=max(vcH2(i),vcH2(i-1)) '加一行,取H的最大
r=r+1
else '这里是找到了
p=-1 '找到向下拐点,P记为-1
vc4(i)=-1
for j=i-r-1 to i '找到向下的拐点,就找前面的高点(H)
if vcH1(j)=vcH2(i-1) and t=0 then
vc5(j)=2
t=t+1
end if
next
r=0
t=0
end if
end if '----------------------------------
if p=0 or p=-1 then
if vc1(i)<=vc3(i-1)*(1+vn/100) then '找向上的拐点
vc3(i)=min(vc1(i),vc3(i-1)) '找不到时,前面取最小
vcL2(i)=min(vcL2(i),vcL2(i-1)) '加一行,取L的最小
s=s+1
else
p=1 '找到向上的拐点,P记为1
vc4(i)=1
for j=i-s-1 to i '找到向上的拐点,就找前面的低点(L)
if vcL1(j)=vcL2(i-1) and t=0 then
vc5(j)=-2
t=t+1
end if
next
s=0
t=0
end if
end if
next '拐点是指至少能达到要求的点,但并不是峰点。
'前面是找拐点和峰点(是H或L点,记在VC5上)---前面多了个无效的峰点,后面的峰点(高低点、转折点)还没有处理,以下处理
for i=0 to last '处理开始部分:找第一个VC5的非0值,如果是2,首根K线就是高点,如果是-2,首K就是低点。
if vc5(i)<>0 and u=0 then 'U的加入是为了循环是一次性的
u=u+1
if vc5(i)=2 then
vc5(i)=0
vc5(0)=2
else
vc5(i)=0
vc5(0)=-2
end if
end if
next
u=0 '-------------------------------
for i=last to 0 step-1 '处理最后。最后的VC4=-1,找最低,最后的K线就是高点。最后的是1,找最高,最后的K线就是低点
if vc4(i)<>0 and u=0 then 'U的加入是为了循环是一次性的
if vc4(i)=1 then '最后的是向上的拐点
for j=i to last
if vcH1(j)=vcH2(last) AND U=0 then
if j<last then '两个最高点相等有两个情况:重合在最后的K线上,或者是等高
vc5(j)=2
vc5(last)=-2
else '相当于是j=last,即两个高点重合在最后的K线上
vc5(last)=2
end if
U=U+1
end if
next
else ' 相当于vc4(i)=-1
for j=i to last
if vcL1(j)=vcL2(last) AND U=0 then
if j<last then '两个最低点相等有两个情况:重合在最后的K线上,或者是等低
vc5(j)=-2
vc5(last)=2
else '相当于是j=last,即两个低点重合在最后的K线上
vc5(last)=-2
end if
U=U+1
end if
next
end if
end if
next
' 以上把高低点全部求出了。下面求转折线上的各点的值。用VCH1、VCL1和VC5来判断
u=0
s=0
for i=1 to last
u=u+1
if vc5(i)=-2 then '是低点
v=(vcH1(i-u)-vcL1(i))/u
for j=i to i-u step-1
vc3(j)=vcL1(i)+(i-j)*v
next
u=0
end if
if vc5(i)=2 then '是高点
v=(vcL1(i-u)-vcH1(i))/u
for j=i to i-u step-1
vc3(j)=vcH1(i)+(i-j)*v
next
u=0
end if
next
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function max(x,y) '自定义函数,在两者之间取最大值
if x>=y then
j=x
else
j=y
end if
max=j
end function
function min(x,y) '自定义函数,在两者之间取最小值
if x>=y then
j=y
else
j=x
end if
min=j
end function
以下传出数据
ffl.vardata("c3")=vc3
'ffl.vardata("c4")=vc4
'ffl.varstartindex("c4")=0
%>
C3;