一、前言
很多童鞋一直有問怎麼尾盤清倉,每次我都根據不同的場景給了一些建議,這裡索性我就彙總一下這些思路,然後給出具體的實現方法,以後再有人問就發這個給他。
二、思路
尾盤清倉的兩個重點,第一是尾盤怎麼判斷,第二個是怎麼清倉。清倉其實簡單,幾行**就搞定了,難就難在了尾盤的判斷上,而且不同交易所的交易時間還不一樣這就為捋清思路增加了難度。那麼這裡我們就先捋一捋各種可能存在的情況和時間點。
1)盤中休息清倉:針對的是有中午休息制度的交易所,比如內盤的幾家基本都是在中午11點30到下午13點30休息,下午15點到晚上9點也休息
2)交易日結束清倉:針對的是非24小時連續交易的品種,比如幾乎全部內盤品種和部分外盤品種
3)每週結束清倉:即使是24小時連續交易的交易所,週末還是要休息的,所以周五的晚上或者週六的凌晨可以做清倉。持倉不過週末是很多外盤老哥的多年心得。
彙總一下的話,那其實就是兩種情況:
1)交易日指定時刻清倉
2)每週最後交易日**前清倉
那麼現在的問題就變成:
1)如何知道今天是否是交易日、是否是本週最後交易日
2)如何知道當前交易日、當前交易所幾點開始交易,幾點休息,幾點**
另外我們還要考慮因為假期導致的交易日或交易周提前結束。
仔細翻看了極星量化每乙個函式後,發現有五個似乎有用的函式。
這幾個函式能夠得到的資訊有:某個品種的交易時段個數,然後根據時段index獲取時段的開始和結束時間。但這些資訊依然找不到交易周的最後一日,週末的判斷我們可以通過一些公共函式來做,但交易所假期就不好處理了。
所以還是得輔助一點人工,使用**來自動生成常規的交易日曆和交易時間段,然後再根據交易所的通知來特設假期和清倉時間。
三、實現
實現要按交易所來分別做,內盤大家都一樣但是外盤幾十家交易所每家情況可能都不一樣,不同地域假期還不同,搞全套可能就太麻煩了,所以我這裡就只做內盤一家交易所鄭商所作為示例,其他的原理相同大家自由發揮。
1、生成通用交易日曆
本來想從網上找乙個現成的,有個提供api查詢的**似乎停止服務了,於是只能自己做了。
1)生成全年的日期資訊
參考:
2)識別出指定日期是週幾
全球大部分交易所週末都是不交易的,但是外盤會有點複雜,比如有些交易所週六凌晨還有交易,因為這個時間對他們來說可能還是晚上。所以我們不能直接一刀切說週末全都不交易了,乾脆將所有日期是週幾都識別出來。
3)將全年日期和週幾記錄到檔案
我們將日期和對應的週幾數寫入檔案,csv格式方便後面編輯和使用。
4)將公共假期標記出來
除了週末我們還經常要放假的,比如過年國慶啥的,這個就只能自己上網搜了。
除了國家假期,交易所也可能會發布不交易的通知,比如2023年因為新冠疫情原因導致好幾個月暫停夜盤交易。
這裡我們先將公共假期,鐵定不會交易的日期標註出來。至此我們已經有了乙個「標準」的交易日曆,下面是考慮如何根據實際需要來應用它。
2、在交易日曆中標記清倉時間
鄭商所交易時間是:9:00-10:15 10:30-11:30 13:30-15:00 21:00-23:00
我們這裡不可能考慮到所有情況,所以就實現一種情況「每日**前清倉」,這裡假設是提前10分鐘開始清倉,每間隔一分鐘判斷持倉情況並考慮是否重新掛單。
大部分情況下我們認為晚上23點為一天的**時間(雖然實際上並不是),但有些情況下是沒有夜盤的,比如節假日前以及新冠疫情期間,同時週末是沒有交易的,所以我們先把每日22:50開始清倉的時間寫入交易日曆,比如下面這樣。
接著由於假期前沒有夜盤所以清倉時間要改為14:50。
然後處理特殊情況,比如新冠疫情導致很長時間沒有夜盤(鄭商所5月6日起恢復夜盤)。
最後考慮到節假日和週末不交易但是我們量化可能不關閉,那麼可以將節假日和週末的時間備註刪除。
這樣我們就得到了2023年完整的交易日曆,並標註了每日具體的清倉時間,下面就是在**中根據這個時間來執行清倉操作了。
如果你是要週末清倉或者節假日前清倉,那麼只需要將這個表不清倉日期對應的時間刪除即可。如果交易所發布了新的公告修改了交易時間,那麼對應修改表中的時間即可。
3、**中執行清倉操作
執行清倉操作也有一點小技巧,因為我們策略的觸發週期是不固定的,比如有些童鞋可能是5分鐘,有些是10分鐘,還有以乙個小時為觸發週期的。假如某日的清倉時間為22:50,若你的觸發週期為5分鐘,那麼22:50-23:00你策略最多隻觸發兩次,如果觸發週期為10,那麼你可能只能觸發一次,如果是1小時的週期,那麼一次也觸發不了。這樣的話對於較大觸發週期的策略可能就會錯過清倉時機。
所以我們在策略原來的觸發週期之上再疊加乙個觸發週期,比如可以設定為定時1分鐘觸發一次,這個觸發週期專門用來處理清倉操作。
1)設定乙個定時觸發並在**中區分清倉操作和普通策略
2)獲取當前日期並查詢清倉時間
3)構建清倉邏輯
要實現清倉的邏輯閉環還是要寫不少**的,另外寫到這裡我才發現,檔案中標註上清倉的開始時間和結束時間比較好,現在這樣的做法時間上有點誤差。
四、總結
其中t1是生成基礎交易日曆的,t2是包含清倉邏輯的**。
零基礎 極星量化入門八 簡單的boll實盤
一 前言 前一篇已經講了boll的回測,那這裡為啥又要說實盤呢?因為實盤執行與回測還是有些區別的。這裡說的實盤是包括實盤模擬和實盤交易的,二者都是利用最新的 做交易,這篇就講一下最近關於實盤的心得。二 修改 整體上實盤的 與回測是差不多的,但是有幾個要點注意和修改。1 成交 在回測時我們使用的是 價...
零基礎 極星量化擴充套件一 如何做跨合約的交易
一 前言 最近有個童鞋想用a合約的訊號來交易b合約,不懂為什麼要這麼做,在實現時發現無論怎麼做都只能發a合約的委託。其實問題很簡單,這裡就以雙 策略為例,以rb2007為訊號,交易rb2010。這裡說的雙 策略是極星量化自帶的示例策略dma,我們改改。二 實現 1 訂閱兩個合約 注意這裡先訂閱訊號合...
零基礎 極星量化入門十一 遠端遙控的簡單辦法
一 前言 於是我就想了個比較 土 但也比較容易實現的辦法。簡單來說 1 你得有個部落格,或者任何你可以修改編輯的 網頁 2 在極星量化中,通過requests模組,依然是get上面說的 你可以修改的頁面 3 現在你就可以在極星量化中使用requests讀取到 你可以修改的頁面 內容,你可以寫個 啟動...