分批買進,一次賣出
我想要寫以下條件的交易系統,但實在是程式技能低下,故請版主予以指點
//買進條件
//第一次是以存股的方式買, 例如以 20170601 開始回測,那就是 20170601
//第二次買(即加碼),以中期回檔的型態買進。大盤一年高點回跌超過 10%,一年回跌率超過 25% 且 一個月回跌率超過 10%
//第三次買(再加碼),是第一次及第二次買進的平均成本九折以下的價格
//不論在第一次買進後,或第二次,第三次買進後,一旦觸及賣出條件即一次全賣出,並重新由第一次開始買進
//賣出條件
//中期反彈,
//1.獲利超過 25%
//2.大盤一年低點反彈超過 15%
//3.一年漲升率超過 35% 且 一個月漲升率超過 11%
第一次買進訊號:=IF (
DATE+19000000=第一次買進日期
OR
BARPOS=0,
1,
0);
第二次買進訊號:=IF (
//大盤一年高點回跌超過 10%
//(("TW100$CLOSE"-HHV("TW100$CLOSE",240))/HHV("TW100$CLOSE",240)*100< -10)
//AND
// 一年回跌率超過 25% 且 一個月回跌率超過 10%
((C - HHV(C,240))/HHV(C,240)*100 < -15 and (C-LLV(C,240))/LLV(C,240)*100 < 25)
AND
((C - HHV(C,20))/HHV(C,20)*100 < -10)
AND
(C = LLV(C,20))
AND
((c - ref(c,1))/ref(c,1) < -0.02)
AND
DATE+19000000>第一次買進日期
OR
BARPOS=0,
1,
0);
//第二次買進價格:=REF(C,BARSlast(第二次買進訊號=1));
//第二次買進日期:=REF(DATE,BARSlast(第二次買進訊號=1));
第三次買進訊號:=1;
DA:=date;
CL:=close;
for i:=1 to datacount do begin
if 第一次買進訊號[i]=1 then begin
第一次買進價格:=CL[i];
持有成本:=第一次買進價格;
END;
ELSE BEGIN
//if 第二次買進訊號[i]<>0 then begin
if 第二次買進訊號[i]=1 then begin
第二次買進日期:=DA[i];
第二次買進價格:=CL[i];
持有成本:=(第一次買進價格+第二次買進價格)/2;
第二次買進訊號:=2;
end;
else begin
if CL[i]<(第一次買進價格+第二次買進價格)*0.45 and DA[i]>第二次買進日期 AND 第三次買進訊號=1 then begin
第三次買進日期:=DA[i];
第三次買進價格:=CL[i];
持有成本:=(第一次買進價格+第二次買進價格+第三次買進價格)/3;
第三次買進訊號:=2;
end;
end;
//end;
end;
end;
//大盤一年低點反彈超過 15%
//一年漲升率超過 35% 且 一個月漲升率超過 11%
//目標獲利
賣出訊號:=IF (
C>持有成本*(1+GPR/100),
1,
0);
ENTERLONG:
DATE+19000000=第一次買進日期
OR
DATE+19000000=第二次買進日期
OR
DATE+19000000=第三次買進日期
;
EXITLONG:
賣出訊號=1
|