零基礎 極星量化擴充套件二 尾盤清倉

2022-02-05 17:28:02 字數 3310 閱讀 1728

一、前言

很多童鞋一直有問怎麼尾盤清倉,每次我都根據不同的場景給了一些建議,這裡索性我就彙總一下這些思路,然後給出具體的實現方法,以後再有人問就發這個給他。

二、思路

尾盤清倉的兩個重點,第一是尾盤怎麼判斷,第二個是怎麼清倉。清倉其實簡單,幾行**就搞定了,難就難在了尾盤的判斷上,而且不同交易所的交易時間還不一樣這就為捋清思路增加了難度。那麼這裡我們就先捋一捋各種可能存在的情況和時間點。

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讀取到 你可以修改的頁面 內容,你可以寫個 啟動...