查看完整版本: 输出数据到Excel示例代码-南客

闲人 2004-3-26 02:15

re

闲人 2004-3-26 22:00

今天继续出货

闲人 2004-3-26 22:02

同上

南客 2004-3-29 21:00

[quote][i]闲人[/i] 于 2004-3-21 12:01 PM 写道:
在老师的公式里作了一些改动,已经能显示"亇股体检数据"了,真是太高兴了,谢谢老师!不过问题是历史数添加的问题还是介决不了,万望老师能给予帮助,谢谢老师! [/quote]

最好是使用数据库,用Excel表格,能保存的数据不多。
如果一定要用Excel表格,则应该带有年的信息,把公式代码稍作修改即可。

闲人 2004-3-30 00:16

南客老师,您好!

南客老师,您好!
      今天终于盼来了老师的回复,真是太兴奋了!
      老师建议使用数据库,我也真想用,苦于自已才疏学浅,始终建不起Access数据库,目前只能先用Excel了。我试过将Excel的第一行的日期全改成带年份的格式例如(2003-1-2),再将老师公式里3个带有"2004"字样的改成"2003",但是不成功,我实在不知再要改动何处。敬请老师给予再次帮助。
    衷心感谢老师!!!

南客 2004-4-1 01:40

参考如下:
[code]
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="各股主力仓位"
  else
    TableName="各股体验数据"
  end if
  On Error Resume Next
  Set Conn = CreateObject("ADODB.Connection")
  Driver = "Driver={Microsoft Excel Driver (*.xls)};"
  DBPath = "DBQ=E:\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
         vdate1=DateSerial(vy(i),vm(i),vd(i))
         vdate2=Cdate(mid(rs(j).name,2,len(rs(j).name)-1))
        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
    next
  end if
ffl.vardata("fc")=vc
%>
STICKLINE(fc>0,0,fc,5,1),colorred;
STICKLINE(fc<0,0,fc,5,1),colorgreen;
[/code]

附:公式所用的表格数据,请下载。公式中表格的路径请自行修改

闲人 2004-4-2 04:02

再次感谢南客老师

万分感谢南客老师又为我化费了精力和时间重新写了公式!唉!怪我没有说清楚,2004年的数据都能显示。见图。关键问题是怎样修改公式才能将2004年以前的数据在副图中显示出来。我实在不好意思再一再二地麻烦老师,只恳请老师在有可能的情况下帮我介决这一难题。再次表示衷心的感谢!

南客 2004-4-2 12:30

修正后的公式,应该可以显示任意一年的数据吧?
但Excel表格要按我上传的格式。

[[i] 本贴由 南客 于 2004-4-2 12:31 最后编辑 [/i]]

闲人 2004-4-2 19:05

[2004-2/19  [2004-2/20 [2004-2/23 [2004-2/24 [2004-2/25 [2004-2/26       

[2004-2-19  [2004-2-20 [2004-2-23 [2004-2-24 [2004-2-25 [2004-2-26       

请教南客老师上面二种日期格式用同一公式均能读取吗? 格式不同有什么具体意义吗?

南客 2004-4-2 19:17

[quote][i]闲人[/i] 于 2004-4-2 07:05 PM 写道:
[2004-2/19  [2004-2/20 [2004-2/23 [2004-2/24 [2004-2/25 [2004-2/26       

[2004-2-19  [2004-2-20 [2004-2-23 [2004-2-24 [2004-2-25 [2004-2-26       

请教南客老师上面二种日期格式用同一公式均能读取吗? 格式不 ... [/quote]
写成以下几种形式,都可以:


[2003-2-19
(2000-2-19
(2001-2/19
(2002/2/19
A2004-2-19
B1995-2-19

第一个字符不是数字,后面时间日期的间隔用“-”或"/"都行

闲人 2004-4-2 20:04

谢谢南客老师的指点!我马上就去修改.

闲人 2004-4-3 00:00

向南客老师汇报

按老师指点将日期全部改成 [2003-12/30 这样的格式,结果不能显示任何图形。于是我将新公式的路径修改到老的Excel里也不能显示,我再将老公式的路径修改到新的Excel里也还是不能显示。我芒然了,不知所措了,又不好意思再开口麻烦老师了。不过老师不厌其烦为大家服务的精神还真让我心服。再次衷心谢谢老师!

南客 2004-4-3 01:22

“路径、Excel文件名、表名”这三处,都要进行相应修改。

先试试我上传的数据,应该可以显示吧?

南客 2004-4-3 02:23

只要理解图示解说,稍加修改,应该可以显示
图中,我修改了上传文件中的部分日期,显示的是000001深发展的情况:

南客 2004-4-3 02:27

调整参数,公式显示“个股体验”的数据(楼上的图,显示仓位数据):

南客 2004-4-3 02:32

实在不行的话,可以把你的数据压缩一下,发到我的信箱,我针对你的数据情况,修改公式代码。

闲人 2004-4-3 03:34

我己按老师指点用了老师上传的表格确实能显示,我赶紧将路径修改到我新的表中,果然也能显示了。但不尽如人意,各个股票所显示的天数各有不同。我的数据暂设为[2003-6-2---2004-4-2,显示最多的是上证指数从[2003-6-2----2003-12-12日,2004年的一天都没有,其他股票多少不等,且相差很大。我又奈何不得了。我只能厚厚脸皮将数据发到老师的邮箱里去了。请老师告诉我邮箱地址好吗?

闲人 2004-4-3 03:46

是:buy@fjfox.com 吗?

南客 2004-4-3 14:40

发到这吧:

[email]nanke@fjfox.com[/email]

闲人 2004-4-3 20:49

[quote][i]huazizo2003[/i] 于 2004-4-3 17:58 写道:
有点复杂!你说呢? [/quote]
请朋友赐教高招:clap:

闲人 2004-4-4 00:07

数据原表式已发

南客老师:数据表格已发至邮箱.

南客 2004-4-4 02:29

OK

看到了,你的数据中,表头有点问题,转换时没转全,查了好一阵才发现。
现在可以了。

公式基本上不变,改了表名、Excel文件名等。
有错的文件,我把修正后的发还给你。邮件中包含了公式文件,你导入后修改文件路径就可以用了。

闲人 2004-4-4 23:06

十二万分感谢南客老师

南客老师﹕您好!
      收到您的公式和改好的数据表,既激动又紧张,心里默默念叨着"这下可好了"赶紧操作,果不其然成功了!!!太谢谢了!太谢谢了!:cool::cool::cool:

闲人 2004-4-5 10:43

紧急求助

南客老师:昨晚引入老师发来的新公式后一切很正常,今早集合竞价也正常,等到正式开盘就出现了"执行VBS出现错误",正常行情也不能接收,不知为何?我把路径修改后的公式式一源码贴上请老师给予帮助.谢谢!
这是"个股体检数据"公式.            注: "主力仓位"正常!
[code]input:n(0,0,1);
fc:0;
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="Sheet1"
  else
    TableName="各股体验数据"
  end if
  'On Error Resume Next
  Set Conn = CreateObject("ADODB.Connection")
  Driver = "Driver={Microsoft Excel Driver (*.xls)};"
  DBPath = "DBQ=f:\FoxTrader_V3\各股体验数据.xls"  
  Conn.Open Driver & "ReadOnly=0;" & DBPath
  Set Rs = CreateObject("ADODB.Recordset")
  SQL=("SELECT * FROM [Sheet1$] 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
         vdate1=DateSerial(vy(i),vm(i),vd(i))
         vdate2=Cdate(mid(rs(j).name,2,len(rs(j).name)-1))
        while vdate1>vdate2
          j=j+1
          vdate2=Cdate(mid(rs(j).name,2,len(rs(j).name)-1))
          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
    next
  end if
ffl.vardata("fc")=vc
%>
STICKLINE(fc>0,0,fc,5,1),colorred;
STICKLINE(fc<0,0,fc,5,1),colorgreen;[/code]

闲人 2004-4-5 10:46

不知为什么帖子中会出现这么多头象?决不是有意所为,请不要见怪。

南客 2004-4-5 14:41

改成下面的代码试试:
[code]
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
    TableName="Sheet1"
  'On Error Resume Next
  Set Conn = CreateObject("ADODB.Connection")
  Driver = "Driver={Microsoft Excel Driver (*.xls)};"
  DBPath = "DBQ=E:\FoxTrader_V3\各股体验数据.xls"  
  Conn.Open Driver & "ReadOnly=0;" & DBPath
  Set Rs = CreateObject("ADODB.Recordset")
  SQL=("SELECT * FROM [Sheet1$] 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
         vdate1=DateSerial(vy(i),vm(i),vd(i))
         vdate2=Cdate(mid(rs(j).name,2,len(rs(j).name)-1))
        while vdate1>vdate2
          j=j+1
          if j>rs.fields.count-1 then Exit for
          vdate2=Cdate(mid(rs(j).name,2,len(rs(j).name)-1))
        wend
        if vdate1=vdate2 then
          vc(i)=Rs(j).Value
          j=j+1
          if j>rs.fields.count-1 then Exit for
        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;
[/code]

gzk0701 2004-4-5 15:07

谢谢!

闲人 2004-4-5 15:16

谢谢南客老师!要等明天开盘后才能见分晓。谢谢!谢谢!:cool:

lyk 2004-4-5 16:28

谢谢

闲人 2004-4-5 17:32

南客老师:我将最新的"体检数据"公式引入后,"休检"正常了,"主力仓位"不正常了,为了尽量少烦老师我就依葫芦画瓢,对照着老师的新公式将老公式逐行逐词地比对,修改,结果不成功.现将修改后的公式上传,请老师看看毛病究竟出在什么地方.

闲人 2004-4-6 10:39

谢谢南客老师

今早开盘后无异常,很稳定,只是切换股票时较慢,我己经很满足了.万分感谢南客老师!谢谢!

南客 2004-4-6 16:35

两个公式的代码,其实核心是一样的,只不过换个Excel的文件名罢了,我前面贴过2合一的代码(第3页、第30楼)。
把你传上的代码,修改如下:


[code]
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
   TableName="Sheet1"
  'On Error Resume Next
  Set Conn = CreateObject("ADODB.Connection")
  Driver = "Driver={Microsoft excel Driver (*.xls)};"
  DBPath = "DBQ=F:\FoxTrader_V3\各股主力仓位.xls"  
  Conn.Open Driver & "ReadOnly=0;" & DBPath
  Set Rs = CreateObject("ADODB.Recordset")
  SQL=("SELECT * FROM [Sheet1$] 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
         vdate1=DateSerial(vy(i),vm(i),vd(i))
         vdate2=Cdate(mid(rs(j).name,2,len(rs(j).name)-1))
        while vdate1>vdate2
          j=j+1
          if j>rs.fields.count-1 then Exit for
          vdate2=Cdate(mid(rs(j).name,2,len(rs(j).name)-1))
        wend
        if vdate1=vdate2 then
          vc(i)=Rs(j).Value
          j=j+1
          if j>rs.fields.count-1 then Exit for
        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;

[/code]

[[i] 本贴由 南客 于 2004-4-6 17:03 最后编辑 [/i]]

南客 2004-4-6 16:37

公式稍慢就没办法了,因为切换个股时,要重新打开文件,并筛选当前个股的数据,还要把相应日期的数据跟对应的K线对齐,进行大量的运算。

闲人 2004-4-7 17:37

非常谢谢南客老师!有一个异想天开的想法﹕能否将Excel或Access作为飞狐的一个内部文件保存,如同日线数据一样,在技术上有可能吗?当然不能涉及飞狐本身的核心机密.请老师不要见笑,只是想想而己.

南客 2004-4-7 23:41

当然可以啦

闲人 2004-4-8 00:17

老师有兴趣教吗?我的脸有点红了!

南客 2004-4-8 02:41

难度比较大些,三言两语说不清

闲人 2004-4-9 01:31

和南客老师说说心里话

[quote][i]南客[/i] 于 2004-4-8 02:41 写道:
难度比较大些,三言两语说不清 [/quote]
看了老师此贴,心里真是矛盾极了.老师为了我的公式化了那么多的时间和精力,还不厌其烦地反复修改,最终使我的心愿得以实现,我的心里很过意不去,又无以回报,本不该再有其他要求.但是心里又很想向老师学点知识,故而有了象将Excel Access作为飞狐内部文件保存啦,还有将分笔成交数据保存后怎样在日周期调用啦等等想法,心里想又却于开口但又很渴望学,怎么办呢???矛盾呐!

zhh0 2004-4-17 19:35

向南客老师问好

我从头细看到了90楼,看到了老师乐于助人的热心肠,我对此内容很感兴趣,很想也学到一点知识,希望也能得到老师的指点,可我是一只大笨鸟哦。
                                     学生:zhh0

zhh0 2004-4-18 16:38

求助

南客老师你好:
    我有一个愿望(见附图),你帮我实现好吗?

王庆 2004-4-22 08:44

好好好

redKline 2004-5-7 17:45

南客真大师也

目前我还没发现有南客解决不了的问题!

zyh631226 2004-9-24 22:15

谢谢

weilaic 2004-9-26 12:41

学习

cm012604 2004-10-6 11:54

热心的南客老师!谢谢您!

巴菲特羊 2004-10-15 19:22

谢谢南客老师。学习了。

闲人 2004-10-17 22:51

[quote][i]南客[/i] 于 2004-4-5 14:41 写道:
改成下面的代码试试:
[code]
fc:0,linethick0;
fy:=year; fm:=month; fd:=day;
gpdm:=stklabel;
<%
gpdm=ffl.vardata("gpdm")
vc=ffl.vardata("fc")
vy=ffl.vardata("fy&quo ... [/quote]
南客老师您好!趁您在线上,赶紧向老师请教一个难题:如果将电子表格做成象老师要求的那样 ,并且是每只股票一页工作表或者一个"Excel",那公式作怎样的改动才能正确显示图形呢?恳请老师给予帮助!万分感激!

闲人 2004-10-17 23:58

续上

页: 1 [2] 3
查看完整版本: 输出数据到Excel示例代码-南客