在執行以下腳本時
如何讓 v___ 紀錄到每檔的第一筆進迴圈計算的tick序號?
目前執行遇到的問題:
1. v___ 只能記錄到第一檔執行商品第一筆的tick序號
2. 如何抓取漏tick的資料
腳本如下:
-----------------------------------------------------------------------
input:mygroup(group,"股池");
var: mygroupsize(0),i(0);
var:intraBarPersist groupratio(0);
mygroupsize=groupSize(mygroup);
var:intraBarPersist v___(0);
var: intraBarPersist v1(0);
if GetSymbolInfo("買賣現沖")=false then return;
if getinfo("isrealtime")=0 then return;
if date<>date[1] then
begin
groupratio=0;
flag=false;
v___=0;
end;
for i=1 to mygroupsize
begin
//計算每檔第一筆進來的tick平均漲跌幅
if v___=0 and i<= mygroupsize then
begin
groupratio +=(getsymbolField(mygroup[i], "收盤價","tick")-getsymbolField(mygroup[i], "參考價","D"))/getsymbolField(mygroup[i], "參考價","D")*100/mygroupsize;
v___=getsymbolField(mygroup[i], "當日序號", "Tick");
print("1",v___,v1,groupratio,getsymbolField(mygroup[i], "收盤價","tick"),getsymbolField(mygroup[i], "收盤價","tick")[1]);
end;
//每新一筆tick進來重新計算平均漲跌幅
if v___<>0 and islastBar and v1<>0 and getsymbolField(mygroup[i], "當日序號", "Tick")-v1=1 then
begin
groupratio +=(((getsymbolField(mygroup[i], "收盤價","tick")-getsymbolField(mygroup[i], "參考價","D"))/getsymbolField(mygroup[i], "參考價","D")*100/mygroupsize)-((getsymbolField(mygroup[i], "收盤價","tick")[1]- getsymbolField(mygroup[i], "參考價","D"))/getsymbolField(mygroup[i], "參考價","D")*100/mygroupsize));
v1=getsymbolField(mygroup[i], "當日序號","tick");
end;
//漏tick則略過漏tick的資料重新計算平均漲跌幅
if v___<>0 and islastBar and v1<>0 and getsymbolField(mygroup[i], "當日序號", "Tick")>v___ and getsymbolField(mygroup[i], "當日序號", "Tick")-v1>1 then
begin
groupratio +=(((getsymbolField(mygroup[i], "收盤價","tick")-getsymbolField(mygroup[i], "參考價","D"))/getsymbolField(mygroup[i], "參考價","D")*100/mygroupsize)-((getsymbolField(mygroup[i], "收盤價","tick")[getsymbolField(mygroup[i], "當日序號", "Tick")-v1]-getsymbolField(mygroup[i], "參考價","D"))/getsymbolField(mygroup[i], "參考價","D")*100/mygroupsize));
v1=getsymbolField(mygroup[i], "當日序號","tick");
end;
print("4",file("d:\print\"),v___,v1,getsymbolField(mygroup[i], "收盤價","tick"),getsymbolField(mygroup[i], "收盤價","tick")[1],getsymbolField(mygroup[i], "當日序號","tick"),v1[1]);
end;
print(CurrentTimeMS,symbol,symbolName,"股池平均漲跌幅:"+numtoStr(groupratio,2),"個股漲跌幅"+numtoStr(q_PriceChangeRatio,2),mygroupsize,i);
5 評論