hx817 2004-3-10 18:36
输出数据到Excel示例代码-南客
[code]fc:c;
fy:=year; fm:=month; fd:=day;
gpname:=stkname;
<%
vstkname=ffl.vardata("gpname")
vc=ffl.vardata("fc")
vy=ffl.vardata("fy")
vm=ffl.vardata("fm")
vd=ffl.vardata("fd")
Set oExcel= CreateObject("excel.application")
oExcel.Visible = False 'Excel是否可视,若赋值为True则可视,但速度会慢得多
oExcel.Workbooks.Add
Set oSheet = oExcel.Workbooks(1).Worksheets("sheet1")
oSheet.Activate
Set oTitle = oSheet.Range("A1")
oTitle.Value = vstkname+" 收盘价"
for i=0 to ubound(vc)
vdate=DateSerial(vy(i), vm(i), vd(i))
oSheet.Cells(i+2,1).Value=vdate
oSheet.Cells(i+2,2).Value=round(vc(i),2)
next
'设置标题的字体、字号等
oTitle.Font.Bold = -1
oTitle.Font.Size = 18
oTitle.Font.Name = "宋体"
'另存为“股票数据.xls”,注意要写出完全路径,路径不存在会出错
oSheet.SaveAs "e:\foxtrader_v3\user\股票数据.xls"
oExcel.Quit '退出Excel
Set oExcel = Nothing
%>
/////////[/code]
hx817 2004-3-10 18:36
把上述代码改成如下试试效果如何,最好用K线数少的股票做实验,比如600249:[code]fc:c;
fy:=year; fm:=month; fd:=day;
gpname:=stkname;
<%
vstkname=ffl.vardata("gpname")
vc=ffl.vardata("fc")
vy=ffl.vardata("fy")
vm=ffl.vardata("fm")
vd=ffl.vardata("fd")
Set oExcel= CreateObject("excel.application")
oExcel.Visible = True 'Excel是否可视,若赋值为True则可视,但速度会慢得多
oExcel.Workbooks.Add
Set oSheet = oExcel.Workbooks(1).Worksheets("sheet1")
oSheet.Activate
Set oTitle = oSheet.Range("A1")
oTitle.Value = vstkname+" 收盘价"
for i=0 to ubound(vc)
vdate=DateSerial(vy(i), vm(i), vd(i))
oSheet.Cells(i+2,1).Value=vdate
oSheet.Cells(i+2,2).Value=round(vc(i),2)
next
Set oExcel = Nothing
%>
/////////////[/code]公式附件如下:
tang2008 2004-3-11 12:16
请教一下这个函数怎么使用啊?
闲人 2004-3-12 01:54
hx817老师:
通过老师的公式可将"飞狐"数据输出到EXCEL,请教老师有无方法将另一个EXCEL的数据输入到"飞狐"里呢?例如:[code]名称2004-3-9 涨跌幅% 主力资金(万元) 主力仓位(万股) 仓位比率‰ 当日强度% 智能体检(分)
[ 600028 ] 中国石化 2.97 18127.186 3472.641 12.4 21.079 13.407
[ 600019 ] 宝钢股份 2.23 10389.3353 1413.515 7.53 20.0493 18.755[/code]以上粘贴显得另乱,实际是EXCEL的格式.
南客 2004-3-12 09:01
[quote][i]tang2008[/i] 于 2004-3-11 12:16 PM 写道:
请教一下这个函数怎么使用啊? [/quote]
哪个函数?
南客 2004-3-12 09:05
[quote][i]闲人[/i] 于 2004-3-12 01:54 AM 写道:
hx817老师:
通过老师的公式可将"飞狐"数据输出到EXCEL,请教老师有无方法将另一个EXCEL的数据输入到"飞狐"里呢?例如:
[code]
名称2004-3-9 涨跌幅% 主力资金(万元) 主力仓位(万股) 仓位 ... [/quote]
可以呀,VBS代码中,比如写成如下:
oSheet.Cells(3,2).Value="测试"
表示,在Excel表格的第3行、第2列写入“测试”两个字
反之,如果写成下面的代码:
x=oSheet.Cells(3,2).Value
则表示,取出第3行、第2列的数据,并赋值到变量x之中。
至于如何完全取出,则需要通过数组和循环来完成。
南客 2004-3-12 09:06
如果要写完整的代码,请上传相应的Excel电子表,我抽空试试
闲人 2004-3-12 12:59
谢谢南客老师
我想将电子表格上传到老师的信箱里,请告诉邮箱地址。
闲人 2004-3-12 16:39
上传EXCEEL
南客老师:
现将电子表格上传。
说明:”体检“体现股价的位置,借助判断底 顶。
“仓位”体现主力真实的买卖情况。
我想将表格中的数据做成副图指标,请南客老师多多费心。谢谢!
不支持“扩展名”表格的上传。怎样才能上传呢?
hx817 2004-3-12 17:13
将 excel 文件压缩一下,传到论坛来
闲人 2004-3-12 17:27
上传EXCEEL
闲人 2004-3-12 17:35
表格上传
已上传到论坛老师《给发布公式狐友们的一个建议》里面。请老师多多费心。谢谢!!!
南客 2004-3-13 00:08
表格已经看过,这样的表格不大规范,横向、纵向都有日期(横向3月2日至3月10日?),要用公式来处理不是不可以,但太麻烦了。
闲人 2004-3-13 00:37
表格说明
南客老师:
对不起,我将三张表格合并在一起了,其实它们都是独立的表格。若老师能帮我,我再重新上传。好吗?
闲人 2004-3-13 01:09
重新上传数据
闲人 2004-3-13 01:27
重新上传数据2
闲人 2004-3-13 01:30
重新上传数据3
闲人 2004-3-13 01:38
数据处理
因文件太大不能上传,删除了一部分。请老师下载完后将文件删除。以免其他朋友好奇化时间去下载。谢谢老师!!!
闲人 2004-3-13 01:44
重新上传数据
南客老师:
我已重新将数据发到原来的论坛里去了。期盼着老师的好消息。谢谢!!!
南客 2004-3-13 23:41
日期不太好判断,只有月、日信息?
读取方法,要按照数据库的方法,速度才会比较快,读取的方法,代码大致参考如下(可根据自己的需要,进一步完善):[code]fc:c;
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")
Dim Conn, Rs, Driver, DBPath
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 then
x="仓位(2-19)=" & Rs(1).value
x=x & ",仓位(2-20)=" & Rs(2).value
x=x & ",仓位(2-21)=" & Rs(3).value
x=x & ",仓位(2-22)=" & Rs(4).value
x=x & ",仓位(2-23)=" & Rs(5).value
x=x & ",仓位(2-24)=" & Rs(6).value
msgbox x, 0 ,GPDM & "仓位情况" '显示结果
end if
%>[/code]
南客 2004-3-13 23:42
注意这行代码中的路径,要改成自己的实际情况,否则会出错:
DBPath = "DBQ=E:\FoxTrader_V3\各股主力仓位数据.xls"
闲人 2004-3-14 00:42
进一步请教老师
电子表格要放在什么路径才能让“飞狐”读取呢?
《DBPath=DBQ=E:\foxtrader_V3\各股主力仓位数据.xls"》又放在何处?如果在表格中再添加上年份,这样是否能跟主图上的K 线日期相对应呢?还望老师进一步指教。谢谢!!!
南客 2004-3-14 01:08
放在什么位置都可以,只要在公式代码中,指明正确的位置就行了。
加上年份,可以跟K线相对应。
闲人 2004-3-14 01:37
还要麻烦老师
[quote][i]闲人[/i] 于 2004-3-14 00:42 写道:
电子表格要放在什么路径才能让“飞狐”读取呢?
《DBPath=DBQ=E:\foxtrader_V3\各股主力仓位数据.xls"》又放在何处?如果在表格中再添加上年份,这样是否能跟主图上的K 线日期相对应呢?还望老师进一步指教 ... [/quote]
这一点我已明白。问题是我想将“各股主力仓位数据”做成象成交量柱型图在副图中显示并且要和K线相对应。我有2001年到现在的数据而且今后每天还要添加。恳请老师多多费心。万分感谢!!!
知秋7209 2004-3-14 02:14
呵呵,挺热心的!好
闲人 2004-3-14 11:39
请老师下载大盘数据
请老师下载论坛里的大盘数据,里面有我的想法和心愿。另外再次恳请老师将论坛里的数据删除,以免别的朋友化冤枉时间去下载。再次谢谢老师!
hx817 2004-3-14 15:19
[quote][i]闲人[/i] 于 2004-3-14 11:39 写道:
请老师下载论坛里的大盘数据,里面有我的想法和心愿。另外再次恳请老师将论坛里的数据删除,以免别的朋友化冤枉时间去下载。再次谢谢老师! [/quote]
我帮你将那些附件移到这个帖子了,以后附件直接跟贴回复,不要再放到另外帖子去了,谢谢
闲人 2004-3-14 16:29
谢谢老师的提醒!老师在百忙中为我做了许多,尽管我的愿望暂时没能得到满足,但是让我体会到了老师为大家服务的热情,再次感谢老师!!!
另外请老师点您发表的关于循环语句使用方法的教学贴子在哪里?我想去学习。谢谢老师!
南客 2004-3-14 18:42
不知道这个数据是怎么制作的,但这样的数据估计制作不方便,使用也不大方便,其横向的日期相当于是字段,当时间很长时,字段不可能无限增加吧?
对前面的代码稍加修改,可以显示到K线图的副图中,对数据情况不大了解,因此,代码中假设表格的数据都是2004年的。
[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="各股主力仓位"
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;
[/code]
南客 2004-3-14 18:50
2张表格我都做在同一个工作薄中了,代码是按新工作薄来编制的。
南客 2004-3-14 18:53
这里的贴子,尽可能让其它的狐友,有互相交流学习的机会,数据表格还是不用删除吧:)
南客 2004-3-14 18:57
飞狐内置循环语句,跟VBS不大一样。VBS是一个完整的体系,功能非常强大,上面的代码使用的是VBS脚本语句。
飞狐内置循环语句的学习,可参见此贴:
[url]http://bbs.fjfox.com/viewthread.php?tid=1945&highlight=&page=1[/url]
闲人 2004-3-15 00:05
确实让我感动的好老师
刚从老师的关于循环语句的贴子里下来就看到了老师给我定作的公式,心里真是一下惊喜万分,真让我太激动了!太感谢老师了!谢谢!谢谢!
我将公式复制到软件里,副图中显示出了15根柱状图,体检数据没有显示,不管显示的数量有多少·着实让我高兴不己。
至于数据本不是我本人制作的,是某咨询公司给每位会员发的,发来的格式也和现在的不同·第一列是沪深全部股票代码名称,第二列是日期,之后是数字,第一行第一列以次为名称、日期、主力资金、主力仓位、仓位比率等等。如果要看某只个股的详细数据还得让软件再计算,显示的方式参攻"大盘数据"里的"数据源".。我每天整理剪切成现在这样。平时查看起来极不方便,有好多会员还不会整理剪切,那样查看还要费时麻烦,所以我一直梦想能够将繁杂的数据引入飞狐做成公式·能方便的象调看kdj,macd就好了。苦于自已无才无学一直不能如愿。现在老师帮我实现了这愿望,怎能让我不激动呢!再次谢谢老师!并且我还要向其他会员朋友介绍,让他们知道飞狐有这么强大的功能。
另外请教老师,怎样的电子表格才能更有利于公式的编写呢?照目前这样的表格每一单项(例如主力仓位)只能使用一个年度·第二年就得换一张,将来软件读取数据又是麻烦,请问老师有好的办法吗?在所有的数据中,主力仓位(显示主力增减仓的动作,有的长阳减仓,有的长阴增仓)、仓位比率(显示增减仓占流通盘的比率,大于千分之四说明主力有大规模增减仓的意图)、体检数据(体现股价的位置,零分以下不操作,上窜零关注有大规模建仓的股票。60分以上风险区,分值一下调即刻清仓)、市场均价(显示市场平均持筹成本)显得最为关键。好,令天就说到这里。老师说数据不删也罢,若能对大家有所帮助也是好事·建议下载大盘数看看,可能对大家会有所启迪。
南客 2004-3-15 00:55
不客气,飞狐可以实现的功能,远远比这里的示例代码要强大得多。
1、体验数据也可以显示,是通过公式的参数来调节的。切换参数为0、或1时调整。
2、假设共有3只股票,3天的数据,则只需做成下面的形式,用公式就很方便读取了,数据量应该可以很大,具体要看Execl对表格的行数有何限制。
3、股票名称就不要了,飞狐可根据股票代码自动定位股票,可节省文件尺寸。
4、大盘数据的表格,有空的时候我看看。
5、股票代码,如果写成“000001]”的形式(即去掉前面的中括号),公式代码判断读取股票代码时,可以减少不少运算量。
[[i] 本贴由 南客 于 2004-3-15 01:02 最后编辑 [/i]]
南客 2004-3-15 01:18
Sorry,刚才看了Excel对表格行数的限制,是65536行。
看来用Excel来处理这种比较大的数据量的情况,不太好办。
如果做Excel表格比较方便的话,可以变通处理:
1、定期制作并更新Excel表格的内容
2、把Excel的数据内容,导出到Access数据库中
3、通过飞狐读取Access数据库
具体怎么把Excel的数据导向Access数据库,我没试过,可看看微软的相关文档,按理说是可以的,微软的office办公组件功能是很强大的,相互之间的转换、链接很方便。
闲人 2004-3-15 01:56
表格原式样上传
闲人 2004-3-15 02:09
回复
很高兴又见到了老师。现将原表格式传给一老师看看,我今后按行往下累贴好呢还是按老方法(将第一行改写成标准的日期格式)好呢?按行往下贴大约50天换一张表。
老师提议将Excel改成Access数据库,今后我会学着去做的。
再次谢谢老师!晚安!
闲人 2004-3-15 03:12
回复
再次烦请老师指教﹕
按老师点拨,切换0或1·结果是换成0和原来显示的主力仓位一样,没有体检数据,切换成1则什么也不显示。由于上传文件不能太大·不得已只好删除部分股票和数据,所以传给老师的数据是不完整的,故而公式不能显示缺失的股票,正常。但是我将完整的表格换上后,原来不显示的股票还是不显示。换上去的表格最后的周期是4/12日,公式还是按老样子显示4/10日往前15根仓位柱状线,还请老师多指教。如若能显示更多的数据则更完美了。谢谢老师!哟·要向老师请早安了!再见!
南客 2004-3-17 00:26
[quote][i]yadi[/i] 于 2004-3-15 03:58 PM 写道:
请教hx817l老师 南客老师
老师能否同时将收盘价,最高价,最低价输出到Excel?
谢谢老师 [/quote]
可以的,参见示例进行修改。
南客 2004-3-17 00:27
[quote][i]闲人[/i] 于 2004-3-15 03:12 AM 写道:
再次烦请老师指教﹕
按老师点拨,切换0或1·结果是换成0和原来显示的主力仓位一样,没有体检数据,切换成1则什么也不显示。由于上传文件不能太大·不得已只好删除部分股票和数据,所以传给老师的数 ... [/quote]
平时比较忙,上传的文件,我有空时看看
前面的代码应该没有问题,但要用我上传的(修改过的)Excel表格才行。
闲人 2004-3-18 14:12
再次有请南客老师
南客老师,您好!
按老师指点3月10日以后添加的数据可以全部显示在副图中,我想將03年数据也添加进去,由于不得要领怎么弄都不成功,请老师帮助.谢谢!
闲人 2004-3-21 00:33
求助南客老师
南客老师您好!
我知道老师为了我的公式花费了很多时间和精力,在此再次谢谢老师!
我按照老师的指点学习怎样建立Access2000数据庫,由于我这方面的知识实在太差,目前还沒有这亇能力,只好用Excel代用了.下面上传一幅个股K线图请老师看一看,副图"主力仓位"就是用了老师给我编的公式,效果非常好,该股涨跌动因可以把握了。老师在公式中把日期设定为O4年,所以在图中也只是显示O4年以后的数据和图形.我在老师的公式中将全部"2004"改 成"2003",企盼能显示2003年以后的数据,但是不成功,实在没有办法只好再次烦请老师帮助指教,在公式中作怎样的修改才能在副图中显示O3年或者更长的历史数据呢?另外我还想知道老师是将"各股体检数据"和"各股主力仓位"编在同一亇公式里了吗?如果是的,切换N也不能显示"亇股体检数据",不知道怎样操作才能够显示?千万千万请老师帮我,谢谢老师!!!
我将怀着忐忑的心情企盼着老师的好消息!
闲人 2004-3-21 01:38
求助南客老师
如能将下图和"主力仓位"同时在2幅图中显示多好啊!再次恳請老师给予帮助!在此表示衷心的感谢!!!
闲人 2004-3-21 12:01
感谢南客老师
在老师的公式里作了一些改动,已经能显示"亇股体检数据"了,真是太高兴了,谢谢老师!不过问题是历史数添加的问题还是介决不了,万望老师能给予帮助,谢谢老师!
un8888un 2004-3-23 17:35
南客老师真是个热心人!!
受益匪浅!受益匪浅!!
闲人 2004-3-26 02:04
有请南客 Hx817老师
下面几幅图里面的副图指标就是用了老师给编的公式。看:涨停,多诱人,骨子里在出货。一目了然。