P02 比例下單的參數設定

比例下單的策略設定好之後,想要調整各項比例參數,要從哪裡開始進行呢 ?

比例下單的參數設定

這裡介紹的是比例下單頁面上半部的參數設定。

請注意:不管是【簡易模式】或【精細模式】,都會用到【上半部】的設定,所以一定要弄清楚設定的方式。至於【下半部】的設定,就只有【精細模式】會使用到,這會在下一篇的操作說明裡介紹。

比例下單上半部的計算方式是依【由左到右】的順序計算,因此各項參數設定,請依照這個順序來進行設定。

以下就依照這個順序來說明每一個參數的意思。

若要將相同的設定值套用到所有策略,只要在設定框上按滑鼠右鍵【套用到全部】,就會套用到所有策略。

簡易模式

【簡易模式】(預設是勾選) 使用在下列情況,也就是上一篇所講的方式:
1.全部策略都是文字檔,並且輸出到同一個資料夾裡。
2.每個策略多空最高倉位都 1 口,都沒有加碼單,所以每個文字檔的總倉位只會是:1, 0, -1。(若不是 1 口要改用【精細模式】)
3.系統會將所有文字檔的總倉位相加之後,再把加總值做最終比例倉位的計算。(也就是不能針對單一文字檔個別設定比例)

【精細模式】(取消勾選) 使用在以下任何一種情況:
1.對不同的策略,要分別設定不同的多空限制、倍數與比例。
2.某一策略的多空最高倉位會超過 1 口。
3.要合併的策略中包含【萬用 API】的訊號。

不論是【簡易模式】或【精細模式】,凡是文字檔的策略都要輸出到同一個資料夾裡,並且都是以【總倉位】的方式下單,訊號格式也必須都是【DateTime,Current,Price】的格式,例如【2020/05/23 13:00,-1,10950】。

啟用

啟用有兩個欄位:
【啟用】欄位:勾選【啟用/不啟用】,不勾選的就不會列入比例倉位的計算。
【策略】欄位:這是顯示的是在【策略管理】頁面的啟用狀態,這必須在策略管理的頁面才能勾選,不能在比例下單的頁面勾選。

請注意:這兩個欄位都必須【同時勾選】,這一個比例下單策略才會有作用 !

沒有啟用的比例下單策略,不會進行計算,在畫面上會以【灰色】的文字顯示。

滿倉部位與總倉位

依照【簡易模式】與【精細模式】的不同,這兩個欄位的計算方式也不一樣。

【簡易模式】:
【滿倉部位】= 會等於資料夾內文字檔的數量,因為每個策略最多下 1 口,例如有 6 個文字檔,最多就會下 6 口,多空倉位會顯示【6/-6】。
【總倉位】= 將目前資料夾內所有文字檔的倉位相加,就是目前的總倉位。

【精細模式】:現在還沒講解到,可以等下一篇看完之後,再回頭來看這裡的說明。
【滿倉部位】= 因為每個策略的最高口數可能不同,所以用每個策略的多空最高口數,分計算出來的多空【比例訊號】值相加。
【總倉位】= 將目前每個策略的【比例訊號】相加,就是目前的總倉位。

如果多空限制條件中 (包含精細模式中,任何一個個別的訊號設定),有設定【不限制】的話,就無法計算最高口數的【滿倉部位】。(連帶的【多空拐點】與【滿倉縮放】也會無法計算,所以無法使用這兩項功能,其它功能可以使用不受影響)

多空拐點:偏移多空部位的基準點

未設定是 0%,代表多空雙方的計算比例是相等的,沒有偏移的。

如果設定多空拐點【 > 0】,代表多單會偏移縮小,空單則會偏移放大。
如果設定多空拐點【 < 0】,代表空單會偏移縮小,多單則會偏移放大。

例如:多單限制 10 口、空單限制 10 口、多空拐點設定為【30%】:
目前總倉位【5】口:計算值 = 10 * (5/10 – 30%) =【2】口 (本來 5 口多單縮小成 2 口)
目前總倉位【0】口:計算值 = 10 * (0/10 – 30%) =【-3】口 (本來 0 口放大成空單 3 口)
目前總倉位【-5】口:計算值 = 10 * (-5/10 – 30%) =【-8】口 (本來 3 口空單放大成 8 口)

例如:多單限制 10 口、空單限制 5 口、多空拐點設定為【-30%】:
請注意,由於多空的限制口數不一樣,所以最高滿倉部位是取多空限制的最大值:10 口
目前總倉位【5】口:計算值 = 10 * (5/10 – (-30%)) =【8】口 (本來 5 口多單放大成 8 口)
目前總倉位【0】口:計算值 = 10 * (0/10 – (-30%)) =【3】口 (本來 0 口放大成多單 3 口)
目前總倉位【-5】口:計算值 = 10 * (-5/10 – (-30%)) =【-2】口 (本來 5 口空單縮小成 2 口)

請注意:因為要用最高口數來計算,所以主策略與所有訊號的【多單限制】與【空單限制】要設定 > 0,【多空拐點】的設定才會有作用 !

請注意:多空拐點 > 0 (向空方偏移) 時,總倉位 = 0 可能會下空單;反之多空拐點 < 0 (向多方偏移) 時,總倉位 = 0 可能會下多單。

即時比例

【總倉位】經過【多空拐點】的計算之後的倉位,佔最高口數【滿倉部位】的比例值:

即時比例的計算方式 = 滿倉部位 * ( (總倉位 / 滿倉部位) – 多空拐點) / 滿倉部位

多單限制與空單限制

【多單限制】就是最高的多單口數:如果設定為 -1 代表【不限制】, 設定為 0 代表【不作多】。

【空單限制】就是最高的空單口數:如果設定為 +1 代表【不限制】, 設定為 0 代表【不作空】。

滿倉縮放:將目前總倉位依資金大小縮放至可接受的口數

以【多單】為例:
例如所有訊號的多單最高會下 20 口,目前計算出來的總倉位是 15 口,並且設定下單口數限制是 8 口,則最終【比例倉位】計算如下:
【未設定】滿倉縮放的話:因為下單限制是 8 口,所以就算是 15 口最多也只會下到 8 口。
設定【滿倉縮放】的話 :因為下單限制是 8 口,所以要下到滿 20 口,才會下到 8 口,目前總倉位 15 口會下到 15/20 * 8 = 6 口。
請注意:如果是在【精細模式】中,所有訊號的【多單限制】口數都要設為 >= 0,才能取得多空最高口數計算【滿倉縮放】的值 !

以【空單】為例:
例如所有訊號的單最高會下 -20 口,目前計算出來的總倉位是 -15 口,並且設定下單口數限制是 -8 口,則最終【比例倉位】計算如下:
【未設定】滿倉縮放的話:因為下單限制是 -8 口,所以就算是 -15 口最多也只會下到 -8 口。
設定【滿倉縮放】的話 :因為下單限制是 -8 口,所以要下到滿 -20 口,才會下到 -8 口,目前總倉位 -15 口會下到 -15/20 * 8 = -6 口。
請注意:如果是在【精細模式】中,所有訊號的單限制口數都要設為 >= 0,才能取得多空最高口數計算【滿倉縮放】的值 !

請注意:必須【滿倉部位】與【多空限制口數】都有值,也就是最高多空口數是確定的,【 滿倉縮放】的設定才會有作用。

例如有某個策略的多空限制是設定成【不限制】,這樣就不能確定最高口數是多少,所以滿倉縮放就不能計算了。

倍數

倍數也是比例的一種,而且可設定至小數兩位數,也能設定【負值】,所以跟其它參數撘配起來變化就很靈活。

請注意:設定【負值】代表與訊號對作,進行反向操作,如果不清楚自己真正的意圖,請勿使用【負值】的倍數。

動態倍數

勾選動態倍數:讀取外部文字檔即時取得倍數值。

需要另外寫一支調控策略,依照評價函數、波動率、風控管理、資金大小等自訂條件,計算整體策略組合之【倍數】值,動態調控整體組合的下單口數。

例如目前策略組合下單口數是 8 口,倍數 1;後來調控策略計算出來的動態倍數是 0.75,輸出至文字檔傳給下單大師之後,將立刻平倉 2 口,把整體下單口數調降為 6 口。

請注意:若無法讀取文字檔,將自動改用之前所記錄的【固定倍數】值。

捨入方式

目前提供四種捨入方式:

【四捨五入】
2.3 –> 2、2.5 –> 3、2.6 –> 3
-2.3 –> -2、-2.5 –> -3、-2.6 –> -3

【四捨六入】五成雙:遇 5 會捨入至最接近的【偶數】
2.3 –> 2、1.5 –> 2、2.5 –> 2、2.6 –> 3
-2.3 –> -2、-1.5 –> -2、-2.5 –> -2、-2.6 –> -3

【無條件捨去】
2.3 –> 2、2.8 –> 2
-2.3 –> -2、-2.8 –> 2

【無條件進位】
2.3 –> 3、2.8 –> 3
-2.3 –> -3、-2.8 –> -3

維基百科:奇進偶捨 (四捨六入五成雙)
奇進偶捨,是一種計數保留法,是一種數值簡化規則。從統計學的角度,「奇進偶捨」比「四捨五入」更為精確:在大量運算時,因為捨入後的結果有的變大,有的變小,更使捨入後的結果誤差均值趨於零。而不是像四捨五入那樣逢五就進位,導致結果偏向大數,使得誤差產生積累進而產生系統誤差。「奇進偶捨」使測量結果受到捨入誤差的影響降到最低。

比例倉位 (最終總倉位)

【總倉位】經過【多空拐點】、【多空限制】與【倍數】的計算後,會得到【計算值】。

把【計算值】經過【捨入方式】捨入成整數,就是這個比例策略最終要下單的【比例倉位】(最終總倉位)。

在下單期間,只要【比例倉位】(最終總倉位) 發生變動,就會發動下單。

最新價格

顯示該比例策略的所有訊號【最近一次】訊號倉位變動的價格,此價格會和【比例倉位】(最終總倉位) 一起傳送至下單訊號中。

訊號偵測時間

不論比例策略裡的訊號數量多少,只會開一個執行緒偵測,而這個時間就是偵測所有策略總倉位的時間。

例如有 25 個策略訊號,設定 0.05 秒,每一秒會偵測 20 次:把 25 個策略的最新倉位全部取出並計算最終的比例倉位 (最終總倉位)。

實測 250 個策略文字檔放在虛擬硬碟中,全部重取最新倉位並計算完最終比例倉位的時間約在 15 毫秒之內,也就是每一毫秒(千分之一秒)可以處理 16~18 個策略。

等待時間

假設等待時間設定 5 秒,用上一個相同的例子,有 25 個策略訊號,偵測時間設定 0.05 秒,所以每秒每秒會一直連續偵測 20 次,直到有一次的偵測發現比例倉位 (最終總倉位) 跟之前不一樣的時候 (代表有新的下單訊號),這時候就會再等待 5 秒鐘,然後再偵測一次,確定比例倉位 (最終總倉位) 真的是不一樣,才會發動下單 !

為什麼要這樣呢 ? 因為可能在這 5 秒鐘內,25 個策略中有其它策略也在同時間被觸發導致倉位變動了,所以過了 5 秒再偵測一次,來確認真正的比例倉位 (最終總倉位) 是多少 ? 這樣也可以減少短時間進出的次數,因為比例下單是合併很多策略,所以同一時間有很多策略同時被觸發是很常見的情況。

例如 +1 -1 兩個策略同時被觸發,如果等待時間太短,則會 +1 -1 分別下單兩次,若設定適當的等待時間,則 +1 -1 就會互相抵消,因此總倉位不變就不會下單,這樣可以有效減少下單次數,避免不必要的進出。

下單間隔時間

假設下單間隔時間設定 20 秒,用上一個相同的例子,每秒 20 次偵測完,偵測到總倉位有變動,再等待 5 秒鐘,再偵測一遍,確定最終總倉位有變動而發動下單之後,會間隔 20 秒,然後再重新開始每秒 20 次的偵測,繼續偵測新的比例倉位 (最終總倉位) 是否有變動 ?

為什麼呢 ? 這也是因為多策略被同時觸發的關係,實務上是有客戶用 200 個策略合併成一個比例下單,經常發生價格剛好在某一區間,導致不斷下單又平倉,所以該客戶是設定下單後間隔 5 分鐘 (300 秒),直到價格脫離某個區間,再重新開始偵測新的下單訊號。

這是避免大量策略在某一價格發生多空策略交戰導致總倉位上上下下的不斷變動,又正好在捨入法的邊界值附近,使得比例倉位 (最終總倉位) 在短時間不斷變動,造成不斷重覆下單又平倉的情況。

摘要

比例下單的各項參數設定,請依照【由左到右】的順序設定,若要將相同的設定值套用到所有策略,在設定框上按滑鼠右鍵【套用到全部】。

相關教學