不知道这个数据是怎么制作的,但这样的数据估计制作不方便,使用也不大方便,其横向的日期相当于是字段,当时间很长时,字段不可能无限增加吧?
对前面的代码稍加修改,可以显示到K线图的副图中,对数据情况不大了解,因此,代码中假设表格的数据都是2004年的。
复制内容到剪贴板
代码:
input:n(0,0,1);
fc:0,linethick0;
fy:=year; fm:=month; fd:=day;
gpdm:=stklabel;
<%
gpdm=ffl.vardata("gpdm")
vc=ffl.vardata("fc")
vy=ffl.vardata("fy")
vm=ffl.vardata("fm")
vd=ffl.vardata("fd")
n=ffl.vardata("n")
last=ubound(vc)
Dim Conn, Rs, Driver, DBPath
if n=0 then
TableName="各股主力仓位"
strp1=4 : strp2=4
else
TableName="各股体验数据"
strp1=1 : strp2=2
end if
On Error Resume Next
Set Conn = CreateObject("ADODB.Connection")
Driver = "Driver={Microsoft Excel Driver (*.xls)};"
DBPath = "DBQ=D:\FoxTrader_V3\各股体检数据.xls"
Conn.Open Driver & "ReadOnly=0;" & DBPath
Set Rs = CreateObject("ADODB.Recordset")
SQL=("SELECT * FROM [" & TableName & "$] where 名称 Like '%" & gpdm & "%'") '只返回当前股票的数据
Rs.Open SQL, Conn, 3, 2
if Err.Number <> 0 or Rs.Recordcount=0 then
'msgbox "数据不存在"
else
j=1
for i=0 to last
if strcomp(vy(i),"2004")=0 then
vdate1=DateSerial(vy(i),vm(i),vd(i))
vdate2=Cdate("2004-" & mid(rs(j).name,strp1,len(rs(j).name)-strp2))
while vdate1>vdate2
j=j+1
vdate2=Cdate("2004-" & mid(rs(j).name,strp1,len(rs(j).name)-strp2))
if j>rs.fields.count-1 then Exit for
wend
if vdate1=vdate2 then
vc(i)=Rs(j).Value
j=j+1
if j>rs.fields.count-1 then Exit for
end if
end if
next
end if
ffl.vardata("fc")=vc
%>
STICKLINE(fc>0,0,fc,5,1),colorred;
STICKLINE(fc<0,0,fc,5,1),colorgreen;