Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共5 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:有关ACCESS数据库操作问题

1楼
tdk1 发表于:2014/5/8 15:44:53

因有些模型数据计算量大,影响交易速度,因而设想通过一台计算机计算结果存入数据库,另一台电脑读取结果进行判断下单.

以计算布林通道为例:

建立数据库CTZB公式:

 

DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\asset.mdb');
DBEXECUTE('create table ctzb(stockdate date,ma4680 double,up4680 double,low4680 double)');

写库公式如下:

DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\asset.mdb');
stdp30:=2*stdp(close,4680);
ma30:ma(close,4680);
up30:=ma30+stdp30;
down30:=ma30-stdp30;
T0:=NUMTOSTR(DYNAINFO(207),0);
T01:=STRCAT(NUMTOSTR(hour,0),':');
T02:=STRCAT(NUMTOSTR(minute,0),':');
T1:=STRCAT(STRCAT(T01,T02),STRRIGHT(T0,2));
D0:=NUMTOSTR(DATE,0);
D01:=STRCAT('20',STRMID(D0,2,2));
D02:=STRCAT('-',STRMID(D0,4,2));
D03:=STRCAT('-',STRMID(D0,6,2));
D1:=STRCAT(STRCAT(D01,D02),D03);
DAY11:=STRCAT(STRCAT(D1,' '),T1);
DAY01:=STRCAT(char(39),DAY11);
DAY1:=STRCAT(DAY01,char(39));
if ma30<>ref(ma30,1) or up30<>ref(up30,1) or down30<>ref(down30,1) then begin
DBEXECUTE('insert into ctzb(stockdate,ma4680,up4680,low4680) values(cdate('&day1[DATACOUNT]&'),'&numtostr(ma30[DATACOUNT],3)&','&numtostr(up30[DATACOUNT],3)&','&numtostr(down30[DATACOUNT],3)&')');
end
DRAWTEXTEX(1,1,50,0,''&day1[DATACOUNT]&'',colorred);

 

读库公式:

DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\asset.mdb');
//检索数据库表
DBTABLE('Select * From ctzb Order By StockDate');
//读取STOCKCLOSE字段数据
mid:DBVALUE('ma4680');
up:DBVALUE('up4680');
DOWNVOL:DBVALUE('low4680');

 

问题:1.写库时有很多相同的记录无法过滤.

       2.读库要约5秒钟才会刷新一次,放回同一台机子的金字塔也是这样.

看看能否解决,万分感谢!!

 


 

2楼
tdk1 发表于:2014/5/8 15:49:52

ctzb
stockdate ma4680 up4680 low4680
2014-05-08 15:03:30 2148.328 2165.552 2131.104
2014-05-08 15:03:30 2148.328 2165.552 2131.104
2014-05-08 15:06:19 2148.252 2165.541 2130.963
2014-05-08 15:06:19 2148.252 2165.541 2130.963
2014-05-08 15:06:21 2148.248 2165.54 2130.956
2014-05-08 15:06:21 2148.248 2165.54 2130.956
2014-05-08 15:06:23 2148.248 2165.54 2130.956
2014-05-08 15:06:23 2148.248 2165.54 2130.956
2014-05-08 15:06:25 2148.248 2165.54 2130.956
2014-05-08 15:06:25 2148.248 2165.54 2130.956
2014-05-08 15:06:27 2148.248 2165.54 2130.956
2014-05-08 15:06:27 2148.248 2165.54 2130.956
2014-05-08 15:06:29 2148.248 2165.54 2130.956
2014-05-08 15:06:29 2148.248 2165.54 2130.956
2014-05-08 15:06:31 2148.243 2165.539 2130.948
2014-05-08 15:06:31 2148.243 2165.539 2130.948
2014-05-08 15:06:33 2148.243 2165.539 2130.948
2014-05-08 15:06:33 2148.243 2165.539 2130.948
2014-05-08 15:06:35 2148.243 2165.539 2130.948
2014-05-08 15:06:35 2148.243 2165.539 2130.948
2014-05-08 15:06:37 2148.243 2165.539 2130.948
2014-05-08 15:06:37 2148.243 2165.539 2130.948
2014-05-08 15:06:39 2148.244 2165.538 2130.949
2014-05-08 15:06:39 2148.244 2165.538 2130.949

很多记录相同的,但无法过滤(用时间,价格等条件作判断后再写入)

3楼
王锋 发表于:2014/5/8 15:54:35

http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=64723

请看该贴的回复,范例上已经用超全局变量控制了,在逐K线模式下最后K线工作,只有出一根新K线才写库

4楼
2003hcz 发表于:2018/8/17 10:44:30

王锋老师您好,用你的公式1、公式2 确实可以记录数据,并且也能用DBVALUE函数取值。但有一个问题老是困扰到我:我用1分钟K线记录数据,结果老有重复的数据写入数据库中,造成大量重复数据堆积,占用系统资源。从“消息窗口”看,每隔一定时间(一分钟内)就会有一次“涮新”重写操作,可能是系统的某些机制吧,请问如何避免重复录入数据操作,谢谢!

5楼
无为剑 发表于:2018/8/17 13:19:11

学会用调试手段,看一下重复写库是什么控制变量出现的问题,也好有针对性的解决

共5 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.04688 s, 2 queries.