從零開始,如何用邏輯打造程式交易策略 (2)
NEWS 2018/11/12

 

 

在上篇文章裡,策略的出場很單純的只有用200點來做為停損點。但現實生活中這樣200點的出場過於單純,所以我們可以從這點開始下手修改。技術指標就我而言,只是將我們的交易行為轉換至另一個價格維度裡,記住:所有的技術指標都是價格的加減乘除組合而成。但我們轉換至指標的維度交易,就要將指標的用法盡可能的淋漓盡致。所以我們就從觀察指標與訊號開始,看看有沒有什麼線索。

 【指標觀察修正】

由上圖可知,根據RSI指標進場後,若方向不對往往停損會整個打滿。在不調整200點的停損點數情況下,我們可以利用RSI本身的數值來進行出場與停損。因此我們加上一個簡單的條件,如果今天我們是多單虧損的情況下,RSI又低於50時,我們就先停損出場。反之,空單亦然。寫法如下: 

 

在一個邏輯的修正結束後,我們必須觀察程式在圖表上是否有符合我們修改的預期現象。所以當完成一段程式碼後,建議再到圖表上檢視一下。

 

這樣的修改,已經讓績效有大幅的成長。延續多單與RSI指標的觀察,在上例中我們只針對持倉虧損的部份來做修正。但獲利的情況,是否也可以利用RSI<50來進行出場效率的提昇。接著我們觀察到,開盤的跳空行為會讓RSI有快速修正的情況(通常),而持倉跳空反向的情況又伴隨著指標快速修正。此時趨勢通常有反轉的疑慮,因此我們新增一個跳空行為的邏輯來修正策略: 

其中先整理一下常用的函數給大家參考:

結合上述,語法翻譯如下:

當開盤價小於昨天低點 “opend(0)<lowd(1)” 且偏空頭 ”RSIvalue<50

多單就市價單直接出場在下一根K棒,而空方則相反,

當開盤價大於昨天高點 “opend(0)>highd(1)” 且偏多頭 ”RSIvalue>50

空單就市價單直接出場在下一根K棒。

由上可知,透過觀察與結合RSI的應用,不只修正了我們停損的行為,同時也增加了停利的機制。在進行完簡單的出場修正,我們接下來觀察進場的行為是否有機會做一個調整。

【進場邏輯修正】

在原先的範例程式裡,我們採用簡單的只要RSI大於某個值就做市價進場的動作。但這樣的方式常常會進場在正在拉回的K棒,因此使用指標上我們往往會搭配一個突破的方式來確認趨勢的強度。

從上觀察,我們決定採用最簡單的3根高低點突破來做一修正。使用到highest(,3)與 lowest(L,3) 與STOP單來達到我們要的確認目的。

 

再一次的檢視,是否有達到我們預期中的效用:

 

【進場交易次數修正】

除了上述的突破方式確認為,因為這個是波段策略的設計,我們不希望一天因為行情太大而出現交易頻繁的情況。所以,也提供一個概念與寫法讓大家參考,主要的目的有下:

1.今天有被停損出場後,今天就不要再進場了。

2.等到早上9:00現貨開盤才讓期貨進場。

EntriesToday(d)是個常用的函數,用來統計當天的交易次數。因此這個值傳回0,即代表今日尚未交易。

 

【強勢提早進場】

指標的設計,往往都會有落後的情況。最後一個修正。提供一個較少人提到的思維,如何配合行情來調性修正指標的進場基準。這樣的寫法,必須建構在合理的交易邏輯上,而並非試誤出來的結果。程式交易是一個需要高度信念的操作方法,因此設計的過程要符合自己的觀察與個性,未來當行情改變時,也能知道該調整與修正的地方為何? 
最後一個修正方式的觀察,是在於我們的進場若是用突破的情況下,偶爾會進場在行情的尾端。那如果今天出現了一個強勢的攻擊現象,我們是否可以調整進場的方式,讓進場提早發生? 這就是我們要做的修正。

若出現開高的情況(opend(0)>CloseD(1)),此時我們逆向的降低進場的條件,只要RSIvalue30大(fliter=20)。我們就在今日的高點(highd(0))突破建立多單。反之空單亦然。

這樣的修正,提供了我們在盤整突破或是底部反轉的行情可以進場,而不用等待行情走一段後才進場。

 

【參數調整與績效】

上文中我們都是針對交易邏輯來進行修正,因為主要看重的是邏輯,但不免俗的我們試著調整一下參數,來完成最後的成品。

在經過參數最佳化後,RSIlen14變成26Fliter20變成15。將最後參數設定後,績效如下:

這樣就完成了一支策略的發想與修改,這裡用到的靈感與技巧都不會太難。但重點在於思考的過程與邏輯,要打造自己的交易策略,不妨就從這樣的流程開始練習。如果想要大量的學習這樣的程式語法,也歡迎一起加入我的團隊學習囉

 

【最後成品】

台指日盤

週期:15分鐘

成本:來回500(共1000)