. 程式碼有何不足處? 如程式碼
2.為何回測,獲利賣出時會有虧損情況發生? 如圖
3. 觸發買進的紀錄B1p變數,抓資料時數據是怪怪的,如圖
input: T1(60,"09:30秒"),T2(300,"秒"),C1(1,"均1"),C2(2,"均2"),C3(5,"均5"),C4(12,"E12"),C5(26,"E26");
input: B1A(1.03);
var: intraBarPersist B1P(0),intraBarPersist BIT(0);
value1=average(close,c1);
value2=average(close,c2);
value3=average(close,c3);
value4=ema(close,c4);
value5=ema(getField("Close"),c5);
if FilledAtBroker <=2 and value2 cross Over value3 //and position =0
//and close > average(close,60)
then
begin
SetPosition(position+1,MinList(value3,GEtField("收盤價", "Tick")),label:="訊號觸發買進");
B1p=MinList(value3,GEtField("收盤價", "Tick"));
BIT=Getfield("時間","Tick");
print( B1p,value3,"V3");
end ;
if Position > filled //and TrueAll(Position <> Filled, 3)
then
begin
if currentTime <= 093000 and Getfield("時間","Tick")>=TimeAdd(BIT,"S",T1)
then CancelAllOrders(label:="未成交逾時T1取消買進委託");
if currentTime >= 093000 and Getfield("時間","Tick")>=TimeAdd(BIT,"S",T2)
then CancelAllOrders(label:="未成交逾時T2取消買進委託");
end;
var: intraBarPersist ord1(true),intraBarPersist Sod1(B1p); //為避免抓錯資料改初始B1p測試
if Filled > 0 and ord1=true
and GetField("收盤價", "Tick") > FilledAvgPrice*B1A //or GetField("收盤價", "Tick") > B1p*B1A) //B1p似乎會抓錯資料暫不執行
then
begin
Setposition(Position-1,GetField("收盤價", "Tick"),label:="獲利後賣出");
Sod1=GetField("收盤價", "Tick");
ord1=False;
end;
var: intraBarPersist Brd1(true);
if GetField("收盤價", "Tick") < Sod1*0.98 and Brd1=true
then
begin
setposition(Position+1,GetField("收盤價", "Tick"),label:="賣出後當沖買回");
Brd1=False;
End;


1 評論