dim shanchushanchu = 0 ; dim dangtianshuju ; dim bili bili = 0.001 ; dim xinheyuexinheyue = "IF88" ; dim xinmingchengxinmingcheng = "IF等价K线"; dim xinshichangxinshichang = "ZJ" ; dim laoheyuelaoheyue = "IF00" ; dim laoshichanglaoshichang = "ZJ"; dim laozhishulaozhishu = "IF13" ; Sub lishishuju() ; cunzai = marketdata.IsExistStock(xinheyue,xinshichang) ; if cunzai = 0 then call marketdata.AddStock(xinheyue,xinshichang,xinmingcheng) ; application.MsgOut ; else application.MsgOut; end if set Report1 = marketdata.GetReportData(laoheyue,laoshichang) ; qj = Report1.Open*bili ; if shanchu = 1 then Set History1 = marketdata.GetHistoryData(xinheyue,xinshichang,0); for j = 0 to History1.Count-1 History1.RemoveAt(j) ; next call History1.InsertAt(0) ; History1.open(0) = Report1.Open ; History1.close(0) = Report1.Open ; History1.high(0) = Report1.Open ; History1.low(0) = Report1.Open ; History1.Date(0) = Report1.Date ; History1.Volume(0) = Report1.Volume ; History1.OpenInt(0) = Report1.OpenInt ; Call History1.SaveData(xinheyue,xinshichang,1) ; application.MsgOut ;"等价K线【历史数据初始化】成功!" end if set minutedata = marketdata.GetMinuteData(laoheyue,laoshichang) ; Count = minutedata.Count ; for i = 1 to count-1 Set History2 = marketdata.GetHistoryData(xinheyue,xinshichang,0) ; mxopen = History2.open(History2.Count-1); mxclose = History2.close(History2.Count-1); mxhigh = History2.high(History2.Count-1); mxlow = History2.low(History2.Count-1); mxDate = History2.Date(History2.Count-1); mxVolume = History2.Volume(History2.Count-1); mxOpenInt = History2.OpenInt(History2.Count-1); close = minutedata.newprice(i); fbDate = minutedata.Date(i); Volume = minutedata.Volume(i); mxVolume = minutedata.Volume(i-1); OpenInt = minutedata.OpenInt(i); if close > mxhigh then mxhigh = close; end if if close < mxlow then mxlow = close; end if mxdate = fbDate; mxxVolume = (Volume-mxVolume)+mxxVolume; mxOpenInt = OpenInt ; History2.close(History2.Count-1) = close; History2.high(History2.Count-1) = mxhigh; History2.low(History2.Count-1) = mxlow ; History2.Date(History2.Count-1) = mxdate; History2.Volume(History2.Count-1) = mxxVolume; History2.OpenInt(History2.Count-1) = mxOpenInt; call History2.SaveData(xinheyue,xinshichang,1); if abs(close-mxopen) > qj then call History2.InsertAt(History2.Count) ; History2.open(History2.Count-1) = close; History2.close(History2.Count-1) = close; History2.high(History2.Count-1) = close ; History2.low(History2.Count-1) = close ; History2.Date(History2.Count-1) = mxdate; History2.Volume(History2.Count-1) = 0; History2.OpenInt(History2.Count-1) = OpenInt; call History2.SaveData(xinheyue,xinshichang,1); mxxVolume = 0 ; end if next End Sub sub dengjiaK(); call lishishuju(); end sub Sub APPLICATION_VBAStart(); call Application.SetTimer(0,1000);
Sub APPLICATION_Timer(ID); if ID = 0 then if (cdate(time)<=cdate("11:30:00") and cdate(time)>cdate("9:15:00")) or (cdate(time)<=cdate("15:15:00") and cdate(time)>cdate("13:00:00")) then '等价区间处理 set Report1 = marketdata.GetReportData(laoheyue,laoshichang); qj = Report1.Open*bili; set Report2; = marketdata.GetReportData(laozhishu,laoshichang); Set History2 = marketdata.GetHistoryData(xinheyue,xinshichang,0); mxopen = History2.open(History2.Count-1); mxclose = History2.close(History2.Count-1); mxhigh = History2.high(History2.Count-1); mxlow = History2.low(History2.Count-1); mxDate = History2.Date(History2.Count-1); mxxVolume = History2.Volume(History2.Count-1); mxOpenInt = History2.OpenInt(History2.Count-1); set minutedata = marketdata.GetMinuteData(laoheyue,laoshichang); Count = minutedata.Count ; close = minutedata.newprice(Count-1); fbDate = minutedata.Date(Count-1); mxVolume = minutedata.Volume(Count-2); Volume = minutedata.Volume(Count-1); OpenInt = minutedata.OpenInt(Count-1); if close > mxhigh then mxhigh = close ; end if if close < mxlow then mxlow = close ; end if mxdate = fbDate ; mxxVolume = mxxVolume+(Volume-mxVolume); mxOpenInt =OpenInt' ; application.MsgOut mxxVolume&" "&Volume&" "&Volume-mxVolume History2.close(History2.Count-1) = close; History2.high(History2.Count-1) = mxhigh ; History2.low(History2.Count-1) = mxlow ; History2.Date(History2.Count-1) = mxdate; History2.Volume(History2.Count-1) = mxxVolume; History2.OpenInt(History2.Count-1) = mxOpenInt ; call History2.SaveData(xinheyue,xinshichang,1) ; if abs(close-mxopen) > qj then call History2.InsertAt(History2.Count) ; History2.open(History2.Count-1) = close; History2.close(History2.Count-1) = close ; History2.high(History2.Count-1) = close ; History2.low(History2.Count-1) = close ; History2.Date(History2.Count-1) = mxdate ; History2.Volume(History2.Count-1) = 0 ; History2.OpenInt(History2.Count-1) = OpenInt ; call History2.SaveData(xinheyue,xinshichang,1); mxxVolume = 0 ; end if call Application.ActivateFrameWithCode("Technic",xinheyue,xinshichang,0); call Technic.Refresh; end if end if end sub Sub to_0()
Set History = marketdata.GetHistoryData("IF88","ZJ",0); for i=0 to History.Count-1History Volume(i) = 0; next call History.SaveData("IF88","ZJ",1);
End Sub
|
dim shanchushanchu = 0 ;
dim dangtianshuju ;
dim bili bili = 0.001 ;
dim xinheyuexinheyue = "IF88" ;
dim xinmingchengxinmingcheng = "IF等价K线";
dim xinshichangxinshichang = "ZJ" ;
dim laoheyuelaoheyue = "IF00" ;
dim laoshichanglaoshichang = "ZJ";
dim laozhishulaozhishu = "IF13" ;
Sub lishishuju() ;
cunzai = marketdata.IsExistStock(xinheyue,xinshichang) ;
if cunzai = 0 then
call
marketdata.AddStock(xinheyue,xinshichang,xinmingcheng) ;
application.MsgOut ;
else
application.MsgOut;
end if
set
Report1 = marketdata.GetReportData(laoheyue,laoshichang) ;
qj = Report1.Open*bili ;
if shanchu = 1
then
Set
History1 = marketdata.GetHistoryData(xinheyue,xinshichang,0);
for j = 0 to History1.Count-1
History1.RemoveAt(j) ;
next
call
History1.InsertAt(0) ;
History1.open(0) = Report1.Open ;
History1.close(0) = Report1.Open ;
History1.high(0) = Report1.Open ;
History1.low(0) = Report1.Open ;
History1.Date(0) = Report1.Date ;
History1.Volume(0) = Report1.Volume ;
History1.OpenInt(0) = Report1.OpenInt ;
Call
History1.SaveData(xinheyue,xinshichang,1) ;
application.MsgOut ;"等价K线【历史数据初始化】成功!"
end if
set
minutedata = marketdata.GetMinuteData(laoheyue,laoshichang) ;
Count = minutedata.Count ;
for i = 1 to count-1
Set
History2 = marketdata.GetHistoryData(xinheyue,xinshichang,0) ;
mxopen = History2.open(History2.Count-1);
mxclose = History2.close(History2.Count-1);
mxhigh = History2.high(History2.Count-1);
mxlow = History2.low(History2.Count-1);
mxDate = History2.Date(History2.Count-1);
mxVolume = History2.Volume(History2.Count-1);
mxOpenInt = History2.OpenInt(History2.Count-1);
close = minutedata.newprice(i);
fbDate = minutedata.Date(i);
Volume = minutedata.Volume(i);
mxVolume = minutedata.Volume(i-1);
OpenInt = minutedata.OpenInt(i);
if close > mxhigh
then
mxhigh = close;
end if
if close < mxlow
then
mxlow = close;
end if
mxdate = fbDate;
mxxVolume = (Volume-mxVolume)+mxxVolume;
mxOpenInt = OpenInt ;
History2.close(History2.Count-1) = close;
History2.high(History2.Count-1) = mxhigh;
History2.low(History2.Count-1) = mxlow ;
History2.Date(History2.Count-1) = mxdate;
History2.Volume(History2.Count-1) = mxxVolume;
History2.OpenInt(History2.Count-1) = mxOpenInt;
call
History2.SaveData(xinheyue,xinshichang,1);
if abs(close-mxopen) > qj
then
call
History2.InsertAt(History2.Count) ;
History2.open(History2.Count-1) = close;
History2.close(History2.Count-1) = close;
History2.high(History2.Count-1) = close ;
History2.low(History2.Count-1) = close ;
History2.Date(History2.Count-1) = mxdate;
History2.Volume(History2.Count-1) = 0;
History2.OpenInt(History2.Count-1) = OpenInt;
call
History2.SaveData(xinheyue,xinshichang,1);
mxxVolume = 0 ;
end if
next
End Sub
sub dengjiaK();
call
lishishuju();
end sub
Sub APPLICATION_VBAStart();
call
Application.SetTimer(0,1000);
Sub APPLICATION_Timer(ID);
if ID = 0
then
if (cdate(time)<=cdate("11:30:00") and cdate(time)>cdate("9:15:00")) or (cdate(time)<=cdate("15:15:00") and cdate(time)>cdate("13:00:00")) then '等价区间处理
set
Report1 = marketdata.GetReportData(laoheyue,laoshichang);
qj = Report1.Open*bili;
set
Report2; = marketdata.GetReportData(laozhishu,laoshichang);
Set
History2 = marketdata.GetHistoryData(xinheyue,xinshichang,0);
mxopen = History2.open(History2.Count-1);
mxclose = History2.close(History2.Count-1);
mxhigh = History2.high(History2.Count-1);
mxlow = History2.low(History2.Count-1);
mxDate = History2.Date(History2.Count-1);
mxxVolume = History2.Volume(History2.Count-1);
mxOpenInt = History2.OpenInt(History2.Count-1);
set
minutedata = marketdata.GetMinuteData(laoheyue,laoshichang);
Count = minutedata.Count ;
close = minutedata.newprice(Count-1);
fbDate = minutedata.Date(Count-1);
mxVolume = minutedata.Volume(Count-2);
Volume = minutedata.Volume(Count-1);
OpenInt = minutedata.OpenInt(Count-1);
if close > mxhigh
then
mxhigh = close ;
end if
if close < mxlow
then
mxlow = close ;
end if
mxdate = fbDate ;
mxxVolume = mxxVolume+(Volume-mxVolume);
mxOpenInt =OpenInt' ;
application.MsgOut mxxVolume&" "&Volume&" "&Volume-mxVolume
History2.close(History2.Count-1) = close;
History2.high(History2.Count-1) = mxhigh ;
History2.low(History2.Count-1) = mxlow ;
History2.Date(History2.Count-1) = mxdate;
History2.Volume(History2.Count-1) = mxxVolume;
History2.OpenInt(History2.Count-1) = mxOpenInt ;
call
History2.SaveData(xinheyue,xinshichang,1) ;
if abs(close-mxopen) > qj
then
call
History2.InsertAt(History2.Count) ;
History2.open(History2.Count-1) = close;
History2.close(History2.Count-1) = close ;
History2.high(History2.Count-1) = close ;
History2.low(History2.Count-1) = close ;
History2.Date(History2.Count-1) = mxdate ;
History2.Volume(History2.Count-1) = 0 ;
History2.OpenInt(History2.Count-1) = OpenInt ;
call
History2.SaveData(xinheyue,xinshichang,1);
mxxVolume = 0 ;
end if
call Application.ActivateFrameWithCode("Technic",xinheyue,xinshichang,0);
call
Technic.Refresh;
end if
end if
end sub
Sub to_0()
Set History = marketdata.GetHistoryData("IF88","ZJ",0);
for i=0 to History.Count-1History
Volume(i) = 0;
next
call
History.SaveData("IF88","ZJ",1);
End Sub