因有些模型數(shù)據(jù)計(jì)算量大,影響交易速度,因而設(shè)想通過一臺(tái)計(jì)算機(jī)計(jì)算結(jié)果存入數(shù)據(jù)庫(kù),另一臺(tái)電腦讀取結(jié)果進(jìn)行判斷下單.
以計(jì)算布林通道為例:
建立數(shù)據(jù)庫(kù)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)');
寫庫(kù)公式如下:
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);
讀庫(kù)公式:
DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\asset.mdb');
//檢索數(shù)據(jù)庫(kù)表
DBTABLE('Select * From ctzb Order By StockDate');
//讀取STOCKCLOSE字段數(shù)據(jù)
mid:DBVALUE('ma4680');
up:DBVALUE('up4680');
DOWNVOL:DBVALUE('low4680');
問題:1.寫庫(kù)時(shí)有很多相同的記錄無法過濾.
2.讀庫(kù)要約5秒鐘才會(huì)刷新一次,放回同一臺(tái)機(jī)子的金字塔也是這樣.
看看能否解決,萬分感謝!!
很多記錄相同的,但無法過濾(用時(shí)間,價(jià)格等條件作判斷后再寫入)
http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=64723
請(qǐng)看該貼的回復(fù),范例上已經(jīng)用超全局變量控制了,在逐K線模式下最后K線工作,只有出一根新K線才寫庫(kù)