
以下,所有的測試與範例,都用這個 code 來試驗。規則很簡單,就是用最近的三根K棒,去判斷是否發生"轉彎"?有就把轉彎的高點與低點記錄下來,而後等 K棒的收盤價大於轉彎高點就買進作多, K棒收盤價小於轉彎低點就賣出放空。
var:toShort(0), toBuy(999999);
if H<=H[1] and H[1]>=H[2] then begin
toBuy= highest(H,3);
toShort= 0;
end;
if L>=L[1] and L[1]<=L[2] then begin
toShort= lowest(L,3);
toBuy= 999999;
end;
if marketposition<=0 and C>toBuy then
buy next bar market;
if marketposition>=0 and C<toShort then
sellshort next bar market;
讓我們先用 Heikin-Ashi 圖表來看看這簡單規則,能有多好的回測績效?以下測試時間週期都定用 300秒,避免 Tick base bar 的歷史資料其實無法盤中取得的問題。交易成本每口單邊500元,資料區間:2008/01/01~2014/10/25。
苦惱於沒有表現優秀的簡單策略嗎?別說我小氣,這個就送給你了 ^^。不過,要是你真的拿去交易下單,發生的任何損益都與我無關啊!
那麼... 為什麼直接用 Heikin-Ashi 做出的回測報表會是垃圾呢?讓我們把 Heikin-Ashi 圖表與傳統 K棒(真實世界)圖表並列做一下比較就很清楚了。看看下圖,我們測試的策略都是動作在 next bar market,所以訊號發生的價格就會是條件成立的下一根的開盤價。Heikin-Ashi 的回測卻看到多翻空在 8731,而真實世界的報價,訊號發生點卻在...8717!!!更妙的是,條件成立的下根K棒(訊號發生),最高點也不過 8719 @_@,我都不知道要如何在這根K棒,才能跟我下單的期貨商要到 8731 的空單成交價 XD

看到這裡,希望你能了解,不是掛上程式交易就以為是絕對執行的保證。工具是中性的,用來做擬真的歷史評估是為了交易,或許有人有其不同的目的,不予置評。但有一句老話:「害人之心不可有,防人之心不可無」。
但是,類似 Heikin-Ashi ,其實 MultiCharts 還內建了多種非傳統 K棒圖表,它們不是沒有用處,而是...怎麼用?下一篇,我們繼續以 Heikin-Ashi 來做示範,如何用這類的特殊圖表做接近真實的擬真回測,我們是可以用非傳統圖表來開發策略的。