2010年8月9日 星期一
依市場波動調整部位大小
前文「停損-進場部位大小不一定」為的就是就是現在的這一篇做前引。
這一篇所要講的觀念其實是我最近讀了「交易.創造自己的聖盃(第二版)」這本書而從其中擷取來所做測試感想。我會說其中的概念與作法,也會附上部分的程式碼但僅取手邊一堆系統中加入這個方式後,不算特別誇張的做例子。
這是用來作為這個方式解說的原始測試報告。請你記住這張圖上的最大損失 51,000、最大評價損失幅度 117,600。這是一個類似通道突破型會追著價格跑的系統。
現在用這個系統,加入進場時先計算當時市場價格波動程度,去決定當訊號被觸發的時候要下多少口數,也就是說,進場的口數並不固定,但進場之後口數不會有變化(加減碼),直到下次訊號出現翻單,才有可能口數會變化。
而計算進場口數引用的原理來自於「養套殺就從慣性來」這一篇舊文。所宗的原理其實就是假設盤整盤與趨勢盤會交替出現。我希望讓系統在已經"看到"盤整出現的時候加大口數,以求也許訊號發出剛好就碰上趨勢盤的開始幸運的加大趨勢帶來的獲利;也希望在已經"看到"趨勢盤已經出現的時候,訊號發出時降低口數,因為可能就碰上了盤整的開始從而可能降低虧損金額的發生。
簡單說,這樣的作法並不去提高進場方向猜中的可能性,完全就是利用目前眼睛已經看的到的方式來與人的慣性對幹。盤整顯現在眼前了,有訊號卻不管可能繼續盤整而下大注,已經看到擺明了的趨勢,有訊號卻當做可能要盤整了而下小注。這不以交易策略本身過去的表現來決定下單的口數,而以市場的波動來決定下單的口數。
那麼,讓我們來看看這麼做的測試報告來跟沒有因為市場波動而調整口數的對照。首先可以看到手上最大持有口數從 1 口變成 4 口,這是因為即使是口數放大我也希望有個限制,我定了最大只能到 4 口,因為 1 口大台可以換成 4 口小台來做大約等值考量。
在上面這張有因為市場價格波動程度做下單口數的調整的測試報告中,我們可以明顯看到淨獲利倍增有餘,但是 MaxDrawDown 沒有隨之倍增,而僅增加 60% 多一些,這看到了 淨利/MaxDD 的比值滿大幅度的上升。再來,我們還看到單筆最大損失其實並沒有大幅度的上升,那是因為作為本篇的前引文,「停損 - 當口數不固定」的效應,我希望在口數放大的時候,不要多承受更多單次交易的停損風險程度。
這樣的調整下單口數的方式因為市場走勢可能會"盤整開始後繼續盤整",而這個系統設計原理是一種通道突破的方式,如果在因為看到盤整就加大口數時,走勢依然繼續盤整,那麼這個通道突破策略必然一樣是雙巴、三殺、連環殺,所以我要讓因為口數加大時,萬一被點停損的話所承受的損失跟只下 1 口的時候損失金額差異不大,而不要因為下 2 口就停損金額倍增。
接著我說明一下這個所謂依市場價格波動調整下單口數的程式碼部分,你不能完全照抄,這得因應你自己的程式去做修正。
原本的買賣指令像是這樣
if Buy_Condition then
Buy next bar at BuyPrice stop
end if
if Sell_Condition then
Sell next bar at SellPrice stop
end if
改成
N= 停損點數/波動數值
if Buy_Condition then
Buy N share next bar at BuyPrice stop
end if
if Sell_Condition then
Sell N share next bar at SellPrice stop
end if
N 就是要下單的口數,固定的停損當被除數,你自己適用的波動率指標的數值當除數。波動小的時候,下單口數越大,反之衡量波動程度的指標數值越大就下單口數越小...小到甚至變成 0 !還記得當 N 變成 0 的時候會有什麼效果嗎?就是只出場不進場~當走勢一個勁兒的往一邊跑後,交易策略發出往另外一邊的訊號時,行情開始陷入盤整好像也滿合理的嘛。
再來,我們考量到交易策略這樣做了下單口數的調整之後,最大下單口數從原本的 1 口 變成了 4 口,這對資金準備上的要求必然不同,所以還必須去對這樣會調整口數的交易明細做檢視了。在這個例子中,我做了平均持有口數的計算是 1.9 口,像這個樣子。
寫了這篇僅在進場時決定下單口數,但不在持有的過程中去改變手上持有口數的變化,讓我想起了過去寫下的這篇,也提供您參考「你的交易策略,真的需要加減碼的設計?」。至於用這樣的方式去做下單口數調整後,資金準備到底需要怎樣的變化,還有這樣做到底有沒有比用舊有的策略直接下 4 口更來得好?那是另外一個題目了。
如何實作呢?進階課程
用自己的程式下去實驗:http://www.yctseng.net/2010/11/blog-post_7060.html
熱門文章
-
在 MultiCharts 裡,本來我以為 EntryPrice(0) 就代表了最後一個進場的成本價,經過測試後,確定了 EntryPrice( 0 ) 不是最後一次進場價,而是最後進場方向的第一筆價格(可查閱"程式交易語法大全 page 255")。什麼意思...
-
去年開發「 把策略訊號轉換成選擇權去執行 」的時候,一直有個實務上的困擾:標的物價格。 我要把訊號轉成選擇權的時候,事前不能精準的知道要交易哪一個履約價、Put 或 Call,需要在訊號或市況變化的當下才決定交易標的。但在 MultiCharts 的運作架構上,需要開啟欲取...
-
看到朋友分享的一篇文章( https://www.facebook.com/eric.hsu.73/posts/9305791976115818 ),截圖如下: 簡單總結一下: 決策是否投入賭局,要在賭局對自己呈現正期望值,並且如果賭輸的損失發生時自己仍能多次承受的前提下才...
-
在 MultiCharts 或是 TradeStation 中都有 Set開頭的一些指令可以運用,比如 停損─SetStopLoss、停利─SetProfitTarget,這些都是所謂的 ThisBar 模式運作的特殊指令,它們讓你在條件成立的當根K棒就可以做出對應動作,而不是一...