隔日沖 Part4

By | 2022-07-27

前幾天的隔日沖語法介紹,湧現不少的回響,其中有一個需求是,追漲停的標的如果鎖不住,應該要讓電腦自動平倉,這個想法很好,我請XS教主幫我寫出這樣的語法,供大家作參考。

他寫的語法我稍為改寫如下(一樣,改錯了怪我,無損教主威名)

{
追漲停+提前烙跑

- 日線
- 每日盤前啟動/收盤後關閉
- 使用自訂部位(讓系統記住先前的部位)
- 在觸發時間之後, 如果是當日最高價, 且價位是漲停時買進
- 買進之後, 如果價格無法鎖住漲停, 則先出場

}

input: entry_time(093000, "觸發時間");
input: check_not_uplimit(1, "漲停打開就先跑");
var: intraBarPersist lastdate(0); { 用來判斷換日 }
var: intraBarPersist dayposition(0); { 每一日剛開始時的部位}
var: intraBarPersist placeorder(false); { 今日觸發了沒 }

if barFreq <> "D" then RaiseRunTimeError("請使用日線");

if date <> lastdate then begin
lastdate = date;
placeorder = false;
dayposition = Position;
if dayposition <> dayposition[1] then begin
SetPosition(dayposition[1]);
dayposition = dayposition[1];
end; 
end;

// 底下是觸發條件
//
condition1 = CurrentTime >= entry_time;

condition2 = close=getField("漲停價", "D");

condition99 = condition1 and condition2 ;

if condition99 and not placeorder then begin
placeorder = true;
SetPosition(Position+1); 

end;
//當日提前出場的檢查
//
var: intraBarPersist exitToday(false); { 今日提前出場 }
var: intraBarPersist highestSinceEntry(0); { 紀錄當日進場後的最高價 }
var: intraBarPersist maxbuySizeSinceEntry(0); { 紀錄當日進場後的最大委買量 }

if placeorder and Filled = Position then begin

{ 如果已經成交, 檢查是否要提前出場 }

{ case#1: 如果進場之後, 成交觸及漲停, 可是之後回落, 那就先跑 }

highestSinceEntry = MaxList(Close, highestSinceEntry);
if not exitToday and check_not_uplimit = 1 and 
highestSinceEntry = GetField("漲停價", "D") and Close < highestSinceEntry then begin

exitToday = true;

SetPosition(Position-1, label:="跌破漲停出場"); 
end;
end;













這個腳本的概念是,每天九點半之後,如果收盤價=漲停價,就市價追一張,如果之後成交價不是漲停價,就出場。

我拿這個腳本去跑所有非KY的個股,過去兩年的回測 MDD是-13.28%。

 

● XQ【盤中量化交易模組】($1,000) 七大功能,購買就送【台股進階(原價$300)+小道瓊行情(延遲)】完整介紹 ➤https://utm.to/4apmvq

● 首次訂閱享7天鑑賞期,首次購買輸入官方優惠碼「@XQ8899」,首月可折抵模組費用$100!