以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  有关ACCESS数据库操作问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=64791)

--  作者:tdk1
--  发布时间:2014/5/8 15:44:53
--  有关ACCESS数据库操作问题

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

以计算布林通道为例:

建立数据库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秒钟才会刷新一次,放回同一台机子的金字塔也是这样.

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

 


 


--  作者: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

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


--  作者:王锋
--  发布时间:2014/5/8 15:54:35
--  

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

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


--  作者:2003hcz
--  发布时间:2018/8/17 10:44:30
--  

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


--  作者:无为剑
--  发布时间:2018/8/17 13:19:11
--  

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