在軟體工程中強調架構的延展性、維護性及重用性,將運算邏輯先寫成函式就是為了提高重用及維護,軟體界在這樣的發展下,開發出許多通用的套件,使得許多程式開發者可以利用套件來提升開發速度及穩定度,就如同現在的微波食品,想要煮一桌菜,不用自己從買食材開始、處理食材、料理食物、擺盤上桌⋯⋯等步驟,只需將買來的調理包弄熱,擺盤就可上桌了,在前篇寫的函式就可想像類似製作這類的調理包,日後只要拿來搭配使用,就可以寫出各式的指標或策略。
接下來就來將連續過高點或連續過低點的指標寫出來,讓MC的圖表視窗可以拿來使用,首先在PowerLanguage Editor中新增一個指標類型的空白文件,新增的方式與函式類似,只是在類型的視窗選擇「指標」。
指標名稱就取名為「_ContinueBreakOut」。
在指標的部份,也可以設定輸入的參數,與函式不同點在於函式是指定參數名及參數型態,而在指標是指定參數名及參數值,為了讓指標的使用情境可以更多元,在輸入參數的部份設計成三個參數,說明如下:
Inputs:BarCount(3), Direction(0), Offset(3);
接下來在指標的程式中,也需要使用到幾個變數,其說明如下:
Variables:NeedDraw(False), Color(White), PlotValue(0), UpColor(Red), DownColor(Green);
調理包熱好了,餐具也準備好了,接下來進行擺盤後,就可以上桌了,讀者在剛接觸到程式設計時,也許無法一次就將這些變數完整設計出來,可以在用到時,再宣告就好,隨著寫作的次數增加,就會越來越熟練。
NeedDraw = False;
If Direction >= 0 And _ContinueBreakOut(BarCount, 1) Then
Begin
Color = UpColor;
PlotValue = High + Offset;
NeedDraw = True;
End;
If Direction <= 0 And _ContinueBreakOut(BarCount, -1) Then
Begin
Color = DownColor;
PlotValue = Low - Offset;
NeedDraw = True;
End;
If NeedDraw Then
Plot1(PlotValue, "", Color);
在指標撰寫時,先將NeedDraw設為False(即預設為沒有創高或創低),接下來,就要使用買來的調理包來上菜(誤,是已寫好的判斷函式),首先,先判斷是否有連續創高點,在此要有二個判斷式都成立,才會標示,Direction >= 0,用來決定是否要判斷行情連續創高點,在這裹使用個小技巧,使用Direction >= 0,讓使用者可以使用0或1來畫創高點(可參閱輸入參數說明,1表示只畫創高、0表示創高與創低均畫),另外使用我們已寫好的判斷函式_ContinueBreakOut,若回傳True即代表本根K棒是創新高。當二者都成立時,就將要標示的顏色(Color = UpColor)、標示的位置(PlotValue = High + Offset)並將此根K標示為需要標示(NeedDraw = True);連續創低點的邏輯與此類似,只是將其反過來,讓顏色及位置符合標示低點的設定。
最後使用Plot1這個內建函式來將標示點畫出,在這使用了NeedDraw來判斷是否需要畫出標示點,至此已將指標撰寫好,可以加入圖表視窗中使用。
在在桌角遇到MultiCharts文寫到如何新增指標,讀者現在就可將指標顯示在K線圖上。
在指標的預設類型為「線條圖」,讀者可以將此類型變更為「點狀圖」這可以讓指標將標示點標示為點狀而非如均線般的線條,選完後,可勾選左下角的「設成預設值」即可將此指標的預設值設定為「點狀圖」,下次再使用時,就不需再手動調整。
按下確定後,即可將指標標示在行情上,但讀者會發現,為什麼不是如同均線一般標示在K線的圖表中,而是如成交量一樣,新增在下方成為一個新圖表,這是因MC的預設都是新增一個副圖。
此時,可以透過設定指標的方式,將圖移至K線圖,在設定的「屬性」頁籤可看到「副圖」的選項,將此指標的副圖選至「副圖#1」,然後一樣勾選「設成預設值」即可將其移至K線圖的位置。
雖然已移至K線圖所在的區塊,但標示圖太小,不容易看,此時可以再透過設定的方式,增加其寬度,就可讓標示的點變大。
至此,讀者有沒有覺得自己突然得到神丹,功力立馬大增數萬年,已經可以開發自己的指標並且標示在線圖上,指標是交易訊號寫作靈感的來源,透過圖表的判斷,歸納出自己的交易訊號。