XQ自動交易不採坑: 交易進場日跟選股一致了嗎? (日資料)

2Shares
Image

在新版XQ支援自動交易可以直接取得財報資料後,策略終於可以不用分開寫在選股與交易兩個模組裡面了,這大幅提升了策略開發的速度與後續維護的方便性。不過,當把選股條件寫入自動交易時,會遇到不同頻率的資料、還有些資料是在盤後才更新,取錯期數,很有可能發生選股與交易回測時,進場都是一致的,但一到實單就出現落差,本篇文章就是要來測試不同寫法對於進場日的影響,並找出正確的寫法,讓選股與交易不管是回測還是實單,都能保持一致的進場時機。

1. 前言

許多在用XQ開發股票交易的人,應該都很困擾自動交易中心無法取得財報資料來撰寫策略,須要把策略拆開,先用選股中心協助做財報選股,再由自動交易交測抓取選股結果,執行後續的進出場邏輯,不知道怎麼做的,可以看這篇

而這樣最大的問題就是,一個策略被分成了兩個部分,維護起來很麻煩,如果選股的程式碼、設定或參數被改動了,使用者是很難發現的,另外就是做自動交易策略開發時,回測的結果並不會列出所使用的選股條件與設定,如果沒有另外記錄下來,之後是無法找回原本的選股設定的。

這一個困擾人的問題,XQ最近終於解決了,讓指標、雷達、自動交易都可以取得財報的功能,對於想要開發自動交易策略的人,可以把所有條件都寫在一個策略內了,真的大大方便了策略的開發,但是,要把選股條件寫到自動交易內,還是有些地方要注意的,不然很有可能抓到不對的資料,甚是在回測時用了未來資料,這對開發策略,都是非常危險的,可能造成重大的金錢損失,真的是一定要注意。

選股資料有分日、月、季、年等頻率,大部分資料都是盤後資料,但日資料卻有可能是盤中資料,在取資料上的寫法有何差異,以下內容來告訴你。

2. 日頻率資料取前一期[1]就對了

以下表格整理了在日頻率資料下,要取那一期,自動交易的回測與實單才能得到一致的結果。

日頻率資料比較麻煩的地方在於,日資料有兩種,一種是盤中會出現的資料,如價格、成交量,而另一種是盤後才會更新的資料,如外資買賣超這類籌碼數據,不過還好在寫法上是一致的,只要是日資料,通通取上一期[1]資料就對了,如果取當期資料,回測結果就是錯的,而盤中進場要不是比選股早一日,要不就是策略會出錯。

下面詳細說明選股與自動交易的進場邏輯與不同寫法的測試結果,不一定需要看,有些初階內容、也有點枯燥,想多了解的人再去看看囉。

3. 選股中心的策略何時進場

選股中心主要是用收盤之後的資料來篩選隔天要進場的股票,所以最快的進場的時間點,會是隔天的開盤進場,不會因為隔天開盤的漲跌而做調整。

下面為選股中心的回測設定,有兩個進場方式,一個是當天的收盤價進場,那種會是比較特殊狀況才會用,比如當天收盤前就已知的事,如隔天要除息了,有的人就會在除息前一天收盤進場,如果我們用的是當天收盤後才會有的資料做進場判斷,選擇當天收盤價進場就等於是用未來值來做判斷,通常回測績效會非常好,但實際上可能績效是天差地別的,所以在設定上一定要非常小心的。

所以在使用選股中心回測時,進場就多是選擇隔天開盤價,就是隔天一開盤就進場

4. 在自動交易中心執行選股策略

由於選股中心沒有交易功能,想要做到自動交易,就需要透過自動交易模組來執行,執行的方式有兩種

4.1 透過自動交易的商品串選股策略

這件事在設定上比較麻煩,需要在自動交易中心另外寫進出場腳本,透過商品那加入選股策略,雖然這樣是可以執行的,但等於是把一個策略拆分成兩個部分,對於策略的維護管理都是非常不利的,在自動交易回測不同選股設定時,也很難追蹤紀錄。

4.2 將選股程式碼寫到交易腳本內

在XQ開放自動交易取得選股資料的功能後,原本的選股策略可以直接寫入交易腳本內,不用像4.1要分開兩個策略,大大改善了我們對策略開發、維護與管理上的方便性與效率,不過,在改寫成交易程式碼,就會需要特別注意,不然很有可能取得錯的資料,尤其是如發生取到未來值,又拿來交易,那可能會滿慘的。

後面的內容,將會採用這個方式,去測試不同日資料寫法,比較選股回測與自動交易回測的差異。

5. 日資料怎麼取回測才正確

日資料有分為盤中會更新的資料與盤後才會更新的資料,然後許資料又分取當期或是取前一期,因使,我們分成以下四種狀況去回測,並比較結果

5.1 有盤中資料、取前期[1]

這個策略的選股條件

今天收盤後,選出今天成交量大於10000張的股票,明天開盤進場

但當改寫成自動交易腳本時,由於開盤才會執行,因此,我們在寫腳本時,應該要這樣想

今天開盤時,幫我取得昨天成交量大於10000張的股票,今天開盤立刻進場,

因此,在自動交易的腳本會寫成如下,

if position=0 and filled=0 then begin
    if getfield("成交量", "D")[1] >= 10000 then setposition(1,market);
end;

為何交易程式碼用中括號1呢,因為我們要在今天開盤時取昨天成交量大於10000張股票的資料,所以要用[1]去取得昨天的資料,從下圖的選股跟交易回測的結果來看,進場日期與時間都是一樣的,表示這樣的寫法是正確的。

11

5.2 有盤中資料、取當期[0]

上面5.1在交易腳本的寫法,回測可以做到跟選股一樣的進場日且是開盤進場,那如果原本的腳本改成用中括號[0],會出現怎樣的狀況呢?

if position=0 and filled=0 then begin
    if getfield("成交量", "D")[0] >= 10000 then setposition(1,market);
end;

下圖為回測結果,當交易腳本的日成交量取的期數為0的時候,有兩個地方可以觀察下,一個是進場日期,都會比原本選股的提前一個交易日,另一個就是交易腳本的進場時間,都是在盤中的某的時間點,而不是開在開的時候

這個結果其實滿容易理解的,當交易腳本的日成交量取的期數為0的時候,就是要取當天的成交量資料,而成交量資料在盤中會更新的,因此,在當天盤中累積的成交量超過10000張時,就會馬上進場了,不會等到隔天,因此,會比選股提前一天就在盤中進場。

5.3 盤後才有新資料、取當期[0]

5.2的狀況是盤中數據會更新,那如果用了中括號0,但是盤中不會有新數據,要等盤後才會更新,這樣又會如何呢? 這邊用外資買賣超來做測試。

if position=0 and filled=0 then begin
    if getfield("外資買賣超", "D")[0] >= 5000 then setposition(1,market);
end;

從選股跟交易的回測比較可以看出來,交易回測的進場日跟5.2一樣,都提前了一個交易日,而且是在開盤就進場,但這樣是很有問題的,因為外資買賣超數據是盤後才會更新,卻被那來當成是當天的數據,並且在開盤就進場,等於是用了未來值來做回測

Image Not FoundImage Not Found

5.4 盤後才有新資料、取前期[1]

由於5.3回測會取到未來值,因此這次改取前一期做回測,程式碼如下

if position=0 and filled=0 then begin
    if getfield("外資買賣超", "D")[1] >= 5000 then setposition(1,market);
end;

這次自動交易的回測結果就跟選股回測一致了,因此,可以很確定的是回測盤後才會更新的資料時,跟盤中資料一樣,都是要取前一期的資料才行。

不過,這個結果,在實單上會不會又不一樣呢,5.3因為是回測,資料庫有數據,所以才會發生取到未來值,但在實際交易時,因為沒有資料,會不會反而正確呢?

Image Not FoundImage Not Found

6. 實際交易如何寫才對

上面的回測結果我們已經找出正確的寫法,讓選股與回測的進場日可以一致,但是在實際交易上,同樣的寫法會是正確的嗎? 盤中會更新的資料可以很確定不會有問題,我們比較擔心的是盤後更新的資料,回測的寫法在實際交易會不會有問題。

以下是我們把外資買賣超取當期在盤中的狀況,因為外資買賣超還沒有新的資料,因此,一開啟策略,策略就出現錯誤訊息了,因此,可以確定,盤後更新資料,在盤中使用時,也是要取上一期才行,實際策略,取前一期自動交易才能正常執行。

7. 總結

從上面的比較,可以整理出下方的表格,讀者只要記得,日頻率的選股條件,通通都取前一期就對了

另一個簡單的想法就是,今天的資料跟昨天會不會一樣,如果會不一樣,那就是用前一期,如果是一樣的資料,那就用當期,不過,這個想法,在月、季或年資料是不是這樣呢?我們下一文章在解答啦。

2Shares


發佈留言

在〈XQ自動交易不採坑: 交易進場日跟選股一致了嗎? (日資料)〉中有 3 則留言

  1. 「expe」的個人頭像
    expe

    看完了這一篇,感覺有所幫助,也覺得這應該是XQ官方要說明清楚的東西,居然是由使用者自己來測試出來才能知道(好在A+替大家測試了,並且寫了詳細圖文說明給大家參考),我認為有幫助我節省到時間了~要給個讚 ! 哈~

    1. 「A+管理員」的個人頭像

      他們用不好,我們才有生存空間,有東西可以寫啊~~🤣🤣🤣

  2. 「expe」的個人頭像
    expe

    看完了這一篇,感覺有所幫助。也覺得這本該是由XQ官方要說明清楚的,卻得由使用者自己來測試出來才能知道。(感謝有A+替大家測試了,並寫了詳細的圖文說明給大家參考) 有幫助我節省到時間~ 要給個讚 ! 哈~

相關文章

[VIP] 當沖交易如何做到收K進場即時出場2

上一篇文章大概說明了如何在逐筆中運用condition[1]做到收K進場,即時出場,不過,這樣的運用還有些需要注意的細節,將會在本篇文章說明,不過寫的有點複雜,請耐心閱讀,對你的回測一定會有幫助的。

當沖交易如何做到收K進場即時出場1

想要讓回測績效貼近實單績效,你一定要知道如何做到收K進場即時出場,本文將不同的回測設定與程式碼撰寫方式做了比較,證明在逐筆回測中是可以收K後進場的,而且這樣的作法,自動交易也可以執行,不需要向過往把進場跟出場分開寫,更容易維護策略。

如何運用AI修正XS程式碼錯誤

現在很多人都在用AI來寫程式,使用XQ的你,是不是超級羨慕也去嘗試讓AI撰寫XS程式碼了呢? 相信你試過之後的結果都會很失望吧,你以為他給你的是XS程式碼,但常常都是其他軟體的語法。

[AI] 定期定額投資績效計算頁面

定期定額投資的績效表現在XQ上並不容易回測,本文將會介紹我如何運用量化交易實驗室的AI,在短時間內就寫出一個可以計算定期定投入績效的XQ看盤頁面。

[VIP] 投資節目老師報明牌行不行

如果還沒看到前一篇的文章,可以先閱讀下,這篇主要是說明頁面我做了那些調整,跟我觀察到的心得分享,希望對大家有幫助。

投資節目老師報明牌行不行

前幾天在搜薄碩士論文的時候,看到一篇有趣的研究,研究標題是-投資理財節目異常推介有價證券與投資人行為及報酬率檢視-以上櫃公司為例,相信很多人都會跟我一樣想要知道老師報的明牌到底有沒有用吧,結論是大部分情況是有用,不過研究只有一年,到底現在還能不能用呢?用了個頁面讓大家自己研究研究

20250322[貓老大][XQ週末特訓班][講義下載]飆股的起點

貓老大「飆股的起點」講座資料,需要的請註冊後到最下方點下載,包含有講義跟XQ 雷達檔

[VIP] XQ自動交易不採坑: 交易進場日跟選股一致了嗎? (月、季、年資料)

上一篇跟大家分享了把日資料選股條件寫成自動交易腳本的正確方式,這篇文章將要繼續來分享月、季、年資料選股條件在自動交易內的正確撰寫方式。

XQ自動交易不採坑: 進出場價的設定

自動交易不採坑系列,主要在分享開發自動交易策略時需要注意的事情,避免開發出回測好看,但與實際交易落差很大的策略來。而本篇文章將會討論setposition的用法,很基礎但超級重要,一定要了解。

XQ當沖回測設定: 用開盤價進場

XQ的自動交易回測,由於並非使用tick數據來回測,加上還有回測頻率、模擬逐筆、觸價即判斷成交、讓價幾檔等設定,讓許多人都搞不清楚,這些選項對回測進出場價格到底有何的影響,也常常會抱怨回測與實際下單有很大落差,本系列文章,將測試各種設定,讓使用者能更清楚各種設定相互間的關係,找出最適合自己的回測方式,本篇將來測試開盤價進場的設定,告訴你怎樣設定才能用開盤價進場。

[VIP] Finlab價格意圖因子策略2-策略優化

前一篇的價格意圖因子文章,我們採用了跟Finlab一樣,用排名+每季固定時間換股的方式來開發策略,而在這篇文章中,我們調整了價格因子的使用方式,沒想到績效更好。

Finlab價格意圖因子策略1-原始策略回測

Finlab的價格意圖因子一文提到,其中提到股價穩定上漲的股票,有可能是公司或主力有意為之,而這樣的股票,未來繼續上漲的可能性也較高,而Finlab的回測也證明了這樣的策略是可以打敗大盤的,而本文嘗試將Finlab用到的條件,扁成XQ策略,看看能否得到相同的結果。

XQ版RS相對強弱PR指標

有參加11/24的XQ周末特訓班的朋友,在聽到尼克萊大大分享用RS相對強弱的PR值找強勢股之後,應該都超有興趣想要嘗試的吧,雖然尼克萊大大說XQ寫不出來,不過,有著程式魂的我們怎麼可能放棄呢? 最終靠著google大神,在XS討論區找到有高手已經寫出來了,就很不要臉的拿來修改成指標了。

[VIP] 週三選擇權樂透這樣買,報酬好像還不錯

週三選擇權結算時,很多人都會小買一下,試試看會不會遇到大行情,賺個幾十倍甚至上百倍,雖然這樣的事情真的是發生過,但賺錢機率真的太小了,要讓人一直持續投入真的不符合人性,而本篇的樂透策略。就是運用回測的方式,找出較符合人性能持續賺錢的交易方式,而換算每次平均報酬,大約能達到40%,其實已經非常驚人了

[積木-VIP] 重視研發公司股價跌破淨值

一間願意投入研發且財報沒有虧損的公司,當股價跌破淨值,到底是個撿便宜的機會還是一個投機的行為呢? 本文透過回測證明,這樣個公司,股價淨值比降低到一個程度後,會是一個好的進場時機,而且短期內就能獲利。

[技巧-VIP] 運用選股策略報價組合研究當沖

台灣的上市櫃股票加起來超過1800檔,如果想要做當沖,事前篩選隔天可能要操作的標的變的非常重要,除了可以減少當天觸發一堆無用的標的外,也可在事前先做研究,隔天驗證自己的研判是否正確,而這篇文章,要來分享一個方式,幫助你在盤中更方便觀察選出的標的,更可以做到盤中調整條件後即時看到新挑選出的標的。

[指標] 累積成交量比指標(股票版)

成交量比指標主要是以當下的累績成交量,與過去幾天同一時間的成交量均量做相比,用來判斷今日該股成交量是放大還是縮小,成交量放的越大,該股今日動能越高,越可能出現行情,對於投資者來說,這樣的商品會是最適合拿來操作當沖的標的

20241019[貓老大][XQ週末特訓班][講義下載]價量秘密 (2):從營收角度解析飆股的關鍵

貓老大「從營收角度解析飆股的關鍵」講座資料,需要的請註冊後到最下方點下載,包含有講義跟XQ 頁面指標檔案

[積木-VIP] 股東人數創低策略

當某檔股票的股東人數持續減少時,可能反映出他們對該公司的未來前景不看好。然而,這種悲觀情緒往往會導致股價下跌,使得股票成為更具吸引力的買入選擇,另一方面,股東人數減少也意味著籌碼集中,反而有助於穩定股價,甚至上漲

連續漲停一字鎖

今天開發的策略想找的情境是「第一次發生連續三根K棒…

最近發文

加入我們

Categories

最新留言