2023-11-05|閱讀時間 ‧ 約 7 分鐘

MultiCharts初體驗-指標撰寫

在軟體工程中強調架構的延展性、維護性及重用性,將運算邏輯先寫成函式就是為了提高重用及維護,軟體界在這樣的發展下,開發出許多通用的套件,使得許多程式開發者可以利用套件來提升開發速度及穩定度,就如同現在的微波食品,想要煮一桌菜,不用自己從買食材開始、處理食材、料理食物、擺盤上桌⋯⋯等步驟,只需將買來的調理包弄熱,擺盤就可上桌了,在前篇寫的函式就可想像類似製作這類的調理包,日後只要拿來搭配使用,就可以寫出各式的指標或策略。

接下來就來將連續過高點或連續過低點的指標寫出來,讓MC的圖表視窗可以拿來使用,首先在PowerLanguage Editor中新增一個指標類型的空白文件,新增的方式與函式類似,只是在類型的視窗選擇「指標」。

新增指標

指標名稱就取名為「_ContinueBreakOut」。

為指標命名

在指標的部份,也可以設定輸入的參數,與函式不同點在於函式是指定參數名及參數型態,而在指標是指定參數名及參數值,為了讓指標的使用情境可以更多元,在輸入參數的部份設計成三個參數,說明如下:

  1. BarCount:
    指定連續創高點或連續創低點的K棒數,使用者在日後使用時,可以依據自己的習慣改變後,觀察行情。
  2. Direction:
    要標示的方向,1為標示創高、-1為標示創低、0為二者都標示,讀者可以回想上一篇的參數,在撰寫時,就先預留了Direction的參數,在同一個函式中,就可以指定要判斷高點還是低點。
  3. Offset:
    當連續創高時,可指定標示的位置是在該根K棒高點往上加多少點數,連續創低時,可指定標示的位置是在該根K棒低點往下減多少點數,這樣的設計可以避免標示圓點剛好標示在最高價或最低價而影響到K線的觀察。
Inputs:BarCount(3), Direction(0), Offset(3);

輸入參數

接下來在指標的程式中,也需要使用到幾個變數,其說明如下:

  1. NeedDraw:
    用來存放此根K棒是否需要標示,當有連續創高點或連續創低點時,就可將此值改變成True,讓指標將其標示在K線圖上。
  2. Color:
    用來存放標示圓點的顏色,在程式中判斷連續創高點或連續創低點時,將標示點用不同顏色來標示。
  3. PlotValue:
    在計算過程中,創高點則往上加Offset的點數,創低點則往下減Offset的點數,為了讓程式的可讀性提高,則利用此變數來統一存放要標示的位置。
  4. UpColor:
    指定創高點的標示顏色。
  5. DownColor:
    指定創低點的標示顏色。
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線圖

雖然已移至K線圖所在的區塊,但標示圖太小,不容易看,此時可以再透過設定的方式,增加其寬度,就可讓標示的點變大。

增加點狀圖寬度

至此,讀者有沒有覺得自己突然得到神丹,功力立馬大增數萬年,已經可以開發自己的指標並且標示在線圖上,指標是交易訊號寫作靈感的來源,透過圖表的判斷,歸納出自己的交易訊號。




分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.