昨天跟大家分享隔日沖漲停打開就烙跑的腳本,有網友說如果等到漲停打開才跑太慢了,應該是要在漲停鎖死的委買單少到一定的程度後就要跑,這是非常有道理的建議,先前也有隔日沖大戶提到類似的需求,一樣請XS教主幫我寫了以下的腳本,這次我沒有改寫,原汁原味的把他寫的腳本分享給大家。
他的作法是,當漲停鎖死後的委買,只剩下當初漲停時的委買的90%以下時,就平倉,他的觀點是,如果漲停後的委買張數比漲停時的委買張數少,代表買進的力道被賣盤削弱到不如一開始的氣勢,這是比較容易翻車的情況。
以下的腳本是包括了兩種case,一是昨天說的漲停打開,另一個則是漲停委買單變少:
{ 追漲停+提前烙跑 - 日線 - 每日盤前啟動/收盤後關閉 - 使用自訂部位(讓系統記住先前的部位) - 在觸發時間之後, 如果是當日最高價, 且價位接近漲停時買進 - 買進之後, 如果價格無法鎖住漲停, 則先出場 - 買進之後, 如果委買量縮手, 則先出場 } input: entry_time(100000, "觸發時間"); input: up_ratio(9.0, "上漲幅度"); input: check_not_uplimit(1, "漲停打開就先跑"); input: check_buysize(1, "總委買量縮就先跑"); input: bsize_shrink_ratio(0.9, "委買量縮比例"); 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], label:="開盤出場"); Print(text( FormatDate("yyyy/MM/dd", Date), ",", FormatTime("HH:mm", CurrentTime), ",", NumToStr(dayposition[1], 0), ",", "開盤出場" )); dayposition = dayposition[1]; end; end; // 底下是觸發進場的條件: 請自由發揮 // condition1 = CurrentTime >= entry_time; value1 = 100*(Close - GetField("參考價"))/GetField("參考價"); condition2 = value1 >= up_ratio; condition3 = Close = High; condition4 = High < GetField("漲停價"); condition99 = condition1 and condition2 and condition3 and condition4; if condition99 and not placeorder then begin placeorder = true; SetPosition(Position+1, label:="進場"); Print(text( FormatDate("yyyy/MM/dd", Date), ",", FormatTime("HH:mm", CurrentTime), ",", NumToStr(Position+1, 0), ",", "進場" )); 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:="跌破漲停出場"); Print(text( FormatDate("yyyy/MM/dd", Date), ",", FormatTime("HH:mm", CurrentTime), ",", NumToStr(Position-1, 0), ",", "跌破漲停出場" )); end; { case#2: 如果進場之後, 總委買量縮手, 那就先跑 - 請注意因為總委買量無法回測, 所以僅在執行AT時才檢查(GetInfo("Instance")=5) - http://xshelp.xq.com.tw/XSHelp/?HelpName=GetInfo&group=GENERALFUNC - 委買量縮的判斷方式: 目前漲停, 且五檔委買量加起來 < 目前成交量 } if not exitToday and check_buysize = 1 and GetInfo("Instance") = 5 then begin value2 = q_BestBidSize1+q_BestBidSize2+q_BestBidSize3+q_BestBidSize4+q_BestBidSize5; maxbuySizeSinceEntry = MaxList(value2, maxbuySizeSinceEntry); if Close = GetField("漲停價", "D") and value2 < maxbuySizeSinceEntry * bsize_shrink_ratio then begin exitToday = true; SetPosition(Position-1, label:="委買量縮出場"); Print(text( FormatDate("yyyy/MM/dd", Date), ",", FormatTime("HH:mm", CurrentTime), ",", NumToStr(Position-1, 0), ",", "委買量縮進場" )); end; end; end;
這個腳本裡因為有用到委買等欄位,所以無法回測,這點得先跟大家說明清楚。
在大格局充滿不確定因素的情況下,台股從投資型市場變成交易型市場,短線或高頻交易變成顯學,我之後也會陸續跟大家討論這方面的議題。
===
● XQ【盤中量化交易模組】($1,000) 七大功能,購買就送【台股進階(原價$300)+小道瓊行情(延遲)】完整介紹 ➤https://utm.to/4apmvq
● 首次訂閱享7天鑑賞期,首次購買輸入官方優惠碼「@XQ8899」,首月可折抵模組費用$100!