量化研究 | CTA擇時(shí)出場(chǎng)策略指南大全

『正文』
ˇ
今天給大家介紹和普及一下我說知道的幾種和我用的幾種出場(chǎng)方式,其中有的出場(chǎng)方式是單獨(dú)用的,有的是組合一起用的,并無所謂好壞高低之分,具體看你怎么用。
第一種:百分比跟蹤止盈
如下圖所示:1

上圖很直觀的給大家展示了開倉和平倉點(diǎn)位連線,以及藍(lán)色跟蹤止盈止損線的可視化展示。專門找一個(gè)比較教科書式的做多和跟蹤止盈止損就是很直觀的來給大家講述。
百分比跟蹤止盈邏輯:
1、將開倉價(jià)格往下減去一定百分比的價(jià)格作為進(jìn)場(chǎng)的止損位置。
2、隨著行情演變,只要沒有觸發(fā)1中止損價(jià)格線,那就說明行情再往上走,但行情往上演繹出現(xiàn)利潤后,我們要將1中的止損線自動(dòng)往上提,以達(dá)到跟蹤行情往上,止盈止損線業(yè)自動(dòng)往上的過程,目的就是保住利潤啊。
3、往上跟蹤時(shí)我先將開倉價(jià)格賦值給一個(gè)變量,這個(gè)變量就是下圖中的LowerAfterEntry,我個(gè)人采用的是當(dāng)下K線最低價(jià)和LowerAfterEntry變量比較,在進(jìn)場(chǎng)的K線中,進(jìn)場(chǎng)價(jià)格肯定不是最低價(jià),所以顯而易見進(jìn)場(chǎng)價(jià)格大于最低價(jià),但是隨著行情往上演繹,開倉后的第二個(gè)或者第N個(gè)K線最低價(jià)很有可能大于LowerAfterEntry[1]也就是前一個(gè)LowerAfterEntry,也就是開倉價(jià)格,然后新的LowerAfterEntry就被第二個(gè)或第N個(gè)K線的最低價(jià)所更新,一直持續(xù)迭代下去。
4、我們跟蹤就做好,百分比就是根據(jù)每一個(gè)K的開盤價(jià)往下減去一個(gè)百分比,這個(gè)百分比是個(gè)固定值,當(dāng)然也就是參數(shù)值,這個(gè)區(qū)間是隨著跟蹤變化而不變的,不變的,不變的。變化的只有跟蹤。
5、至此跟蹤百分比的邏輯就都跟大家講清楚了,這種出場(chǎng)邏輯是新手也是初入中低頻CTA領(lǐng)域最先最容易入手的一種出場(chǎng)方式,而后我在此基礎(chǔ)上,進(jìn)行了算法修改,加速了進(jìn)場(chǎng)那一段時(shí)間的止損,以達(dá)到波段行情的快速跟蹤止盈止損。從而減少止損和減少利潤回撤。當(dāng)然優(yōu)點(diǎn)的另一面自然也是缺點(diǎn),那就是會(huì)比沒有加速的更容易打到跟蹤線。
注釋:
MarketPosition:當(dāng)前持倉狀態(tài)(1為多單,-1為空單,0為空倉)
BarsSinceentry:當(dāng)前持倉的建倉位置K線index到當(dāng)前位置的K線index計(jì)數(shù)
代碼實(shí)例:2

代碼釋義:? ? ? ?
顯然這段代碼的目的就是為了計(jì)算“跟蹤“的,跟蹤止盈止損你要跟蹤誰?總得有一個(gè)目標(biāo)物跟蹤把,那么這段代碼就是計(jì)算跟蹤目標(biāo)物的,當(dāng)進(jìn)場(chǎng)后,多單是以進(jìn)場(chǎng)價(jià)格和最低價(jià)格比較,通常基本上都是進(jìn)場(chǎng)價(jià)格較大,那么當(dāng)隨著行情發(fā)展,第二個(gè)…第三個(gè)…第四個(gè)…K出現(xiàn)后他們各自的最低價(jià)和LowerAfterEntry前一個(gè)比較,如果此時(shí)行情往上漲,那么當(dāng)下的最低價(jià)肯定要比LowerAfterEntry前一個(gè)要大,循環(huán)往復(fù)那么一直取這個(gè)最大的最低價(jià)。
計(jì)算完這個(gè)跟蹤,我們來具體計(jì)算實(shí)現(xiàn)跟蹤線,如下圖代碼所示:3

代碼釋義:? ? ? ?
至此,跟蹤止盈百分比出場(chǎng)策略介紹完畢。
第二種:吊燈出場(chǎng)(一)
如圖所示:4

乍一看這個(gè)圖,基本上所有人都不會(huì)想到用這個(gè)圖去講“吊燈止盈止損”,實(shí)際上這個(gè)圖的平倉走的就是吊燈其中一種邏輯——達(dá)到N利潤后,回撤D利潤平倉的邏輯。
百分比吊燈邏輯:
1、當(dāng)下進(jìn)場(chǎng)建倉K線的最高價(jià)和最低價(jià)保存,隨著行情演繹每一個(gè)新K線的最高價(jià)和建倉所屬K線最高價(jià)和最低價(jià)比較,(以做多為例)假設(shè)進(jìn)場(chǎng)后行情開始走高,那么當(dāng)下的最高價(jià)和前面比較完畢的HighAfterEntry比較大小,隨著K線的最高價(jià)逐步走高,那么HighAfterEntry也逐漸賦值持倉到現(xiàn)在所處K線的最高價(jià)。
2、計(jì)算吊燈觸發(fā)和平倉位置。吊燈觸發(fā)是當(dāng)HighAfterEntry>=建倉價(jià)*(1+N),吊燈平倉是當(dāng)觸發(fā)后,最低價(jià)<< span="">=HighAfterEntry -?(HighAfterEntry –?建倉價(jià))* D 按照這個(gè)不等式右邊的價(jià)格平倉
代碼實(shí)例:5

6

代碼釋義:? ? ? ?
至此,吊燈一百分比吊燈出場(chǎng)介紹完畢。
第二種:吊燈出場(chǎng)(二)
如圖所示:7

該小結(jié)并未放置實(shí)際的K線圖,而只是放置了吊燈中的核心——吊燈直觀圖,為什么叫吊燈?大家看上圖中的K線形態(tài),是否像過去小時(shí)候家里面的燈泡上面用電線吊著垂直下來的樣子?
吊燈二——ATR波動(dòng)率吊燈止盈止損邏輯:
?1、當(dāng)下進(jìn)場(chǎng)建倉K線的最高價(jià)和最低價(jià)保存,隨著行情演繹每一個(gè)新K線的最高價(jià)和建倉所屬K線最高價(jià)和最低價(jià)比較,(以做多為例)假設(shè)進(jìn)場(chǎng)后行情開始走高,那么當(dāng)下的最高價(jià)和前面比較完畢的HighAfterEntry比較大小,隨著K線的最高價(jià)逐步走高,那么HighAfterEntry也逐漸賦值持倉到現(xiàn)在所處K線的最高價(jià)。
2、計(jì)算吊燈觸發(fā)和平倉位置。吊燈觸發(fā)是當(dāng)HighAfterEntry -?建倉價(jià)?> N1倍ATR,吊燈平倉是當(dāng)觸發(fā)后,最低價(jià)<< span="">=HighAfterEntry – N2倍ATR,按照這個(gè)不等式右邊的價(jià)格平倉
代碼實(shí)例:
8
???????

9

代碼釋義:? ? ? ?
吊燈總結(jié):
1、吊燈、吊燈名副其實(shí)的形象邏輯理解即為:建倉后,隨著行情演繹,創(chuàng)造了多大的利潤,隨后回撤了多少的止盈止損方法。
2、吊燈多普遍應(yīng)用于止盈,實(shí)際止損是配合吊燈演變而附加的,例如在吊燈百分比止盈止損方法中,止損邏輯往往根據(jù)百分比吊燈止盈,在初步建倉后加入一定百分比的止損線,從而達(dá)到止損的目的。
3、吊燈方法與跟隨主要區(qū)別是:只有行情觸發(fā)了波動(dòng)參數(shù)中規(guī)則,但是跟隨是時(shí)時(shí)刻刻的隨著行情演繹而變動(dòng)。也就是說,在行情中大家可以把吊燈理解為一個(gè)點(diǎn)出場(chǎng),跟隨是一個(gè)過程出場(chǎng)。
第三種:達(dá)到目標(biāo)利潤/目標(biāo)虧損目標(biāo)位出場(chǎng)
如圖所示:
???????10

目標(biāo)位出場(chǎng)邏輯:
1、根據(jù)進(jìn)場(chǎng)價(jià)格或位置,設(shè)定主動(dòng)止損和主動(dòng)止盈的位置,達(dá)到位置后即可出場(chǎng),未達(dá)到位置,持續(xù)持倉。
2、往往根據(jù)百分比、某種區(qū)間計(jì)算的range、ATR等計(jì)算而來,并附以止盈>止損的系數(shù)倍數(shù),從而讓策略達(dá)到穩(wěn)定的盈虧比。
3、該策略的開倉具有一定特殊性,但是我個(gè)人還沒有驗(yàn)證過,因?yàn)榇瞬呗猿鰣?chǎng)方式并不符合我個(gè)人的“審美”。? ? ??
代碼實(shí)例:11

12

代碼釋意:
這里我們不一一的詳解所有代碼,因?yàn)槠渌男〗Y(jié)已經(jīng)敘述了,這里我只針對(duì)進(jìn)出場(chǎng)的價(jià)格構(gòu)造公式進(jìn)行釋意:
進(jìn)場(chǎng):
Buy語句中,按照open和therehold兩個(gè)最大值來進(jìn)行發(fā)單。????
出場(chǎng):(止盈)
Getglobalvar(1)實(shí)際就是therehold,Getglobalvar(2)實(shí)際是當(dāng)天開盤價(jià),?Getglobalvar(3)實(shí)際是前一天的range*ratio1,
止盈價(jià)格 =?Getglobalvar(1)+profitratio* Getglobalvar(3),其中profitratio也是一個(gè)系數(shù)倍數(shù)
(止損)
Getglobalvar(1) - Getglobalvar(3),進(jìn)場(chǎng)的therehold價(jià)格?-?前一天的range*ratio1。
止損價(jià)格 = Getglobalvar(1) - Getglobalvar(3)。
?止盈和止損兩者差距了一個(gè) profitratio系數(shù)倍數(shù)。這個(gè)倍數(shù)是恒定的,因此也就讓該策略回測(cè)績效的盈虧比穩(wěn)定在了profitratio/1。
第四種:時(shí)間出場(chǎng)
顧名思義:以時(shí)間因素為標(biāo)準(zhǔn)的出場(chǎng)策略,例如:日內(nèi)交易、黑色星期四等等。但是還有一種邏輯,在這里跟大家分享一下。那就是以時(shí)間周期為參數(shù)的擇時(shí)。
第五種:K線波幅出場(chǎng)
如下圖所示:13

如上圖所示該出場(chǎng)算法基于K線間的差值,核心就是在初始倉位建立一個(gè)止損線后,根據(jù)差值大小來進(jìn)行跟蹤止盈止損,他不同于第一種的百分比跟蹤止盈止損,百分比參數(shù)是固定的、死的,需要人為的去優(yōu)化修改。然而根據(jù)K線波幅進(jìn)行跟蹤可以達(dá)到大波幅較快的跟蹤,小波幅較小的跟蹤。
K線波幅邏輯:
1、進(jìn)場(chǎng)后建立一個(gè)以ATR自適應(yīng)波動(dòng)的止損線
2、根據(jù)K線波幅差值,乘以控制系數(shù)加以K線初始止損線,隨著行情演繹形成跟蹤止盈止損。
代碼實(shí)例:14

代碼釋義:? ??? ?
K線波幅出場(chǎng)總結(jié):
1、屬于緊密型跟蹤止盈止損出場(chǎng)策略,大家可根據(jù)進(jìn)場(chǎng)策略或品種進(jìn)行具體問題具體分析。
2、可以其他出場(chǎng)策略進(jìn)行組合,形成減倉的策略組合。? ? ??
第六種:VWAP出場(chǎng)
如圖所示:15

黃色線為VWAP(成交量加權(quán)均線)出場(chǎng)線。
VWAP出場(chǎng)策略邏輯:
1、進(jìn)場(chǎng)設(shè)置初始止損,這是一個(gè)百分比值
2、逐個(gè)K成交量乘以初始止損線,滾動(dòng)計(jì)算求和
3、2中數(shù)據(jù)占比成交量滾動(dòng)求和
代碼實(shí)例:16

代碼釋義:(核心計(jì)算)? ? ? ?
Vwap成交量加權(quán)平均線,是以某當(dāng)個(gè)K線成交量占比某一段行情K線成交量占比為權(quán)重系數(shù)的一種算法均線,實(shí)際應(yīng)用中,本人加入了加速的算法置于其中,在這里作為思路拓展就不展開說了。
目前VWAP是一個(gè)很好的普適性出場(chǎng)策略,但并不是組合最好的。
第七種:三檔跟蹤法
如圖所示:17

18

19

三檔跟蹤法邏輯:
就是根據(jù)當(dāng)前不同的盈利幅度,跟蹤止盈線會(huì)分別采用不同的加速系數(shù)。以求將整個(gè)波段都吃掉。核心是盈利幅度和止盈的敏感度是成反比的。具體請(qǐng)看代碼
代碼實(shí)例:20? ? ? ?

代碼釋意:(核心三級(jí)部分)? ? ??
總述
8個(gè)出場(chǎng)策略,是目前市面上傳統(tǒng)CTA中用的比較多的,各有特色,也各有相同點(diǎn),他們之間并沒有誰肯定比誰好,誰肯定不如誰的的說法。核心是看什么進(jìn)場(chǎng)策略用什么樣的出場(chǎng)策略組合。當(dāng)然了,肯定還有更多的出場(chǎng)策略,在這里我會(huì)繼續(xù)搜尋新的出場(chǎng)思路作為文章的后續(xù)補(bǔ)充。
更多精彩內(nèi)容和策略源碼在松鼠寬客俱樂部哦!
本策略僅作學(xué)習(xí)交流使用,實(shí)盤交易盈虧投資者個(gè)人負(fù)責(zé)。
??
End