- 登入
- 註冊
Multicharts是一套可以全自動進行交易的程式交易軟體,它所使用的程式語言是一種很淺顯易懂的程式語法—PowerLanguage,對於初次接觸程式的人來說非常的好上手。
Multicharts在執行程式交易之前,需要先在 PLE 編譯器上撰寫好程式碼,也就是把原先人為的交易想法轉化成電腦可以執行的程式語言。這樣程式才會依照預先輸入好的指令,在交易時段全自動進行交易,執行進場、出場、停損停利等動作。
就像每一種語言,都由不同的基本詞彙構成。而在 Multicharts的 PowerLanguage 當中,基本的程式碼分為以下幾種要素(在編譯器中為了讓使用者方便識別,預設會用不同的顏色呈現):
程式碼 | 說明 |
標點符號 | 程式碼中通常會包含標點符號,絕大多數程式碼都是使用半形符號。舉個例子來說,在 PowerLanguage 要結束一行程式碼要使用分號「 ; 」,預設為黑色。 |
數學公式 | 基本的 + – x ÷,還有< > =,預設為黑色。 |
文字串 | 只要使用雙引號「“文字”」夾住的都是文字,預設為淺綠色。 |
介係詞 | 預設為紅色,很少使用可忽略。 |
宣告用的 變數 |
內部變數(variable)/外部變數(input):預設為藍色。 |
其他內建 保留字 |
組成策略的基礎要素,在 PowerLanguage 中已經建立好常用的,內建字是無法被更改的,功能五花八門,日後我們會有文章介紹。內建字包含以下幾種: ( 1 )交易相關字(Buy、Sell、Stop、Limit 等)預設藍色。 ( 2 ) K 棒相關字(Open、High、Low、Close等)預設藍色。 ( 3 )日期時間相關字(Year、Month、Date等)預設藍色。 ( 4 )其他保留字(plot、entryprice等)預設藍色。 ( 5 )內建函數(Average、BollingerBand等)預設深紫色。 ( 6 )預設數值、布林變數(Value1~99、Condition1~99)預設深紅色。 |
以之前 PLE 教學文章的均線舉例如下圖:
當我們在撰寫程式碼的時候,需要先定義一些基本的資料,來讓電腦知道這個字串之後在程式裡面代表的意思,執行這個動作就叫作「宣告」,而拿來作宣告的程式碼就是內部變數variable、 外部變數 input,可用來宣告的變數類型包含「數值」、「文字串」、「布林值」 。
一個交易策略可以用暴力法去撰寫,但會造成程式碼冗長,可讀性也會很低。如果善用變數,把常常需要計算的的數值儲存到我們設定好的變數當中,程式碼可以變得簡潔又容易維護修改。
例如:計算均線的程式碼為 Average(Close,5),在每次需要使用到均線的值都需要寫這麼長的程式碼,但我們可以定義一個變數叫做 MA,讓 MA= Average(Close,5) ,日後需要用到均線只需要使用 MA 這個字,整段程式碼會變得易讀輕便很多。
PowerLanguage的變數為 variable,等同 var、vars 或 variables,程式碼預設淺紫色。
一樣以上面的例子說明,在 var 之後給定變數名稱,並以小括號「()」宣告要代入的初始預設值。如果同時要宣告多的變數,就以逗號「 , 」區分開,最後用分號「 ; 」結尾。後續只要提到 x1 和 x2 就會自動帶入宣告的 3。
要特別注意的是,var 只能在PLE編譯器內修改,不能作為參數最佳化。
外部變數為 input ,同 inputs,也可以直接稱為參數。程式碼預設桃紅色。
input 和 var 撰寫的方式一樣,用「()」宣告要代入的初始值 。唯一不同的地方是 input 可以在 MC 主程式直接修改參數,不須進到MC的PLE編譯器內調整。
若我們要做參數最佳化,則需要將參數宣告成input,否則是var的話則無法跑參數最佳化。
本篇文章的實作使用的程式碼建議先參考以下文章設定好喔!
Input 可以直接從圖表上修改,也能夠跑參數最佳化。調整的方式只要在 MC 圖表中,右鍵點選設定訊號,在跳出視窗中,可以看到中間有當初設定的參數。接著在點選右邊的「設定」,就可以在「參數」視窗修改數值!
同樣在圖表中右鍵,跳出視窗中選擇「最佳化」,再點選第一個的「定期最佳化」-「下一步」。
在最佳化設定中,我們這邊將最終值調整成 10,之後再點「最佳64組合方式」就會獲得參數「最佳化報告」。可以從 2D 和 3D 圖示中分析最佳的參數。
變數的類型包含數值、文字串和布林值,以下一一說明。
數值包含正數、負數、小數、分數等等,上方的均線程式碼宣告的變數類型就是數值,預設深藍色。
PowerLanguage也有已經內建好的變數 value1~value99,預設為深紅色,不用宣告就可直接使用。
文字串必須要用 “文字” 夾住,預設為淺綠色。因為文字無法進行數學運算,大多使用在訊息傳達。
布林值為 True 與 False,預設深藍色。 ,它是一個是非題,不是 True 就是 False。
和數值一樣也有內建的變數condition1~condition99,一樣不用宣告可以直接使用。像是判斷收盤價是否有大於均線,就是一個布林值的運用。