電子信箱 service [at] bituzi.com
幣圖誌首頁 facebook粉絲團 google plus google plus


程式交易新手村-跳空進場方式之程式解析



這幾天台股震盪激烈,每天都有如坐雲霄飛車一樣,
可能不開程式是最賺的,因為這樣就不會賠到錢了。
常常有些讀者反映說,他是初學者,有時候真的看不懂獵人文章,
就算跟獵人拿了程式碼也不知道怎麼用?說實在的也看不懂,
獵人今天就來公布之前介紹的跳空進場方式的程式
順便解釋一下怎麼撰寫程式碼。



在之前跳空進場方式的程式中提到過,
通常跳空開高就表示今天的盤勢是比較偏強的,
跳空開低表示今天的盤勢是比較偏弱的。
不過稍微觀察一下K線圖,還是會發現,
開高走高後,結果一路破底下殺的盤勢,還蠻常出現的,
這種情況以後有機會再跟大家一起研究。
接下來就為大家詳細的介紹撰寫程式碼的流程。

參數與變數的設定



首先必須先設定可以從外部更改數值的參數,
而通常在討論的最佳化,就是去最佳化這個設定的參數。
接著要設定變數,變數式用來儲存程式計算中的一些數值,
比如說,你可以儲存某段時間內的最高點跟最低點。
不過在設定完變數之後,有些變數每天都要歸零,
而通常會在當天第一根K棒運算時執行歸零動作。
所以在這邊首先要設定我們的參數跟變數,如下所示:




BTime是代表可以開始進場的時間點,
ETime是代表終止進場的時間點,
THigh是用來儲存某段時間內的最高點,
TLow是用來儲存某段時間內的低點,
mp是用來儲存目前程式的部位狀況,
x是用來紀錄多單的進場次數,
y是用來紀錄空單的進場次數。

因為我們程式的進場方式是:
(1)當天開高,啟動買進訊號,當價格向上突破至9點5分的最高點時進場作多。
(2)當天開低,啟動賣出訊號,當價格往下突破至9點5分的最低點時進場作空。

所以我們必須要去儲存開盤到9點5分時的當日最高跟最低價格,



這樣我們的準備工作就差不多告一段落了,接著就是最重要的進場部分了。

進場程式的撰寫



通常在撰寫進場程式時,最常使用的寫法就是,
如果滿足怎樣的條件,我們就進場做多或作空。
而我們常說的濾網,其實就是我們要滿足的怎樣的條件,
所以我們先來說明一下,怎麼樣限制當天多空都只能各做一次呢?
首先我們設定mp這個變數來記錄我們當天的部位狀況,
也就是mp=marketposition;
如果我們進場做多的話,mp就會等於1;作空時,mp就會等於-1。
所以當前一個部位不是多單,而現在是多單時,就讓x等於1,
同理,當前一個部位不是空單,而現在是空單時,就讓y等於1。
這樣我們就可以確定,今日是否已經進場作多或是作空了。
當我們設定只有在x<1跟y<1時才可以進場作多或作空時,
也就意味我們只能多空各進場一次,因為進場過後,x或y就會等於1,
就會不滿足要小於1的條件,就不會再度進場了。




接著要介紹一下,一些特殊指令的運用,每天的開盤價就是opend(0),
收盤價就是closed(0),最高價就是highd(0),最低價就是lowd(0)。
而在之前文章中提到的收盤價的半年線是指說,120根K棒的均價,
這邊要特別跟大家說明一下,所以寫法就是 average(close,120)
有一點要注意的是,這邊使用到120根K棒去算均價,
所以你必須設定你的程式K棒回朔計算數目要超過120喔!
最後我們的進場程式寫法如下所示:


出場程式的撰寫



之前文章介紹的出場方式如下所示:
(1) 設定停損點數為50點。
(2) 1點10分後,跌破前三根低點時,多單出場。
(3) 1點10分後,漲破前三根高點時,空單出場。
(4) 收盤前1點40分全部出場。

首先在撰寫程式的時候,最重要的是要控制風險,
所以停損機制是一定要設定的,也就是要你不要去凹單,
至於點數要設定多少點,就要看你對風險的忍耐度了,
一般來說都是設定在40到60點之間。
那MultiCharts中有內建停損指令,就是setstoploss(停損金額);
當然你也可以自己寫,不過自己寫會出現一種情況就是,
有時候會虧損超過你設定的點數,為什麼呢?
因為在這根K棒發生時,可能快要到達你的停損點,
不過還差一點,但是下一根K棒可能跳空直接超過你的停損點開出,
那你就會直接出場在下一根K棒的開盤價,就可能超過設定點數。
那自己要寫的話要怎麼寫呢?首先要知道進場價格的寫法是entryprice,
如果作多,你就必須再進場點的相反方向設定出場點,
就是 entryprice-50 stop; ,這邊使用stop單,是因為我們要停損追單。
那其他收盤前的出場點比較單純,大家看到程式碼應該就能了解。
只是這邊要在介紹一下幾個指令,那就是highest(high,3)與lowest(low,3)。
highest(high,3)就是取最近3根K棒的最高點,
lowest(low,3) 就是取最近3根K棒的最低點。
所以出場程式的寫法如下所示:



大家應該有注意到,最後一行程式碼 setexitonclose;
這個主要是用來在回測時使用的,因為結算日當天是1點30收盤,
而平常我們收盤前的出場點最晚是1點40分出場,
但是在結算日不能這樣出場,所以我們設定 setexitonclose;這個指令讓他出場。
當然還是有可以找出結算日然後自動讓他出場的寫法,
以後有機會會在介紹,不過還是建議結算日自己收盤前手動出場。
經過這樣較為詳細的介紹之後,相信對於程式交易新手應該有很大的幫助,
如果覺得獵人的文章有幫助的話,請按標題下的
給獵人一些鼓勵,也期待新手透過本文章會有更深的體會。

程式交易新手就是要多看多寫程式,程式能力自然就會更精進。

0 意見: