想請教各位大神下面有底線部分寫法是否正確
要做一個在幾個特定時間點找出股池裡跌幅最高的前3名要進場的策略
但前3名的條件是跌幅不能大於7%以及價格不能小於CDP的追賣點(AL)且是可買賣現沖股票,若有則往後遞延
目前測試困境是進場的股票是跌幅排名出來未依跌幅數值排列
----------------------------------------------------------------------------
input:mygroup(group,"股池");
var: mygroupsize(0),i(0);
var:intraBarPersist groupratio(0);
var:intraBarPersist symbolratio(0);
array:rankRT[1500,3](0);
mygroupsize=groupSize(mygroup);
var:intraBarPersist flag1(false);
var:intraBarPersist AL(0);
var:intraBarPersist Price(0);
var:intraBarPersist count(0);
if getinfo("isrealtime")=0 then return;
if GetSymbolInfo("買賣現沖")=false then return;
if date<>date[1] then
begin
flag1=false;
count=0;
end;
if (currenttime>=090600 and currenttime<091000) or (currenttime>=091100 and currenttime<091500) and flag1=true then begin
flag1=false;
count=0;
end;
for i=1 to mygroupsize
begin
symbolratio = (getsymbolField(mygroup[i], "收盤價","1")-getsymbolField(mygroup[i], "參考價","D"))/getsymbolField(mygroup[i], "參考價","D")*100; //計算平均漲跌幅
AL = (GetsymbolField(mygroup[i],"High", "D")[1]+GetsymbolField(mygroup[i],"LOW", "D")[1]+2*getsymbolField(mygroup[i], "收盤價","D")[1])/4 - GetsymbolField(mygroup[i],"High", "D")[1]+GetsymbolField(mygroup[i],"LOW", "D")[1]; //計算CDP追賣點
rankRT[i, 1] = strtonum(leftStr(mygroup[i], 4));
rankRT[i,2] = symbolratio;
rankRT[i,3] = AL;
print(time,rankRT[i, 1],rankRT[i,2],rankRT[i,3]);
end;
Array_Sort2d(rankRT, 1, mygroupsize, 2, true);
if (currenttime>=090500 and currenttime<090600) or (currenttime>=091000 and currenttime<091100) or (currenttime>=091500 and currenttime<091600) or (currenttime>=100000 and currenttime<100100) and flag1 = false then
begin
flag1=true;
for i=1 to mygroupsize
begin
//現價不小於CDP追賣點以及跌幅不超過7%才開始排名
if getsymbolField(mygroup[i], "收盤價","1")>=rankRT[i, 3] and rankRT[i, 2]>-7 then
begin
print(time,text("排名", numtostr(i, 0), "商品: "),
text(numtostr(rankRT[i, 1], 0), ".TW"),rankRT[i, 2],rankRT[i, 3]);
end;
if count<3 then
begin
if symbol = text(numtostr(rankRT[i, 1], 0), ".TW") and GetSymbolInfo("買賣現沖") = true and filledAtBroker<0 then
begin
setposition(-1);
count+=1;
end;
end;
end;
end;

10 評論