首頁 > Multicharts 常用內建保留字-PowerLangu...

Multicharts 常用內建保留字-PowerLanguage語法教學(二)

上一篇文(第一次學 Multicharts 程式碼就上手),我們介紹了 MultiCharts 的程式語法 PowerLanguage 的基本要素。Multicharts 是一套專門拿來做程式交易的軟體,所以在Multicharts 內建的程式語法編譯器(PowerLanguage Editor)中,已經把程式交易當中常常會使用到的情境,預設為程式的內建保留字。

例如:進出場價、進場時間、部位 、 未平倉損益 、 最大曾經虧損等等。而我們在撰寫程式碼的時候的也會自動跑出提示,讓我們可以更節省時間的去寫一段程式碼。

Multicharts 的 PowerLanguage Editor 於編寫程式時會自動跑出提示(打Cl,系統自動帶出相同開頭的字)

PowerLanguage 的英文字母大小寫並無區別,本篇文章會介紹幾種常用的內建保留字,內建字的預設顏色都是藍色。我們也可以透過編譯器的代碼表中查找程式碼相關的使用方式。

Multicharts常用內建字 – 代碼表查詢內建字與內建函數

Multicharts PowerLanguage 常用內建保留字

1. 布林邏輯判斷內建字:And、Or、Not

and ornot 為布林邏輯判斷的內建字, and 是所有條件都需要符合才會成立,or 則是其中的一個條件符合就會成立,not 則是要該條件不符合才會成立。

內建字 說明
And 且,所有條件須皆成立。if 上漲 and 成交量放大 then 買進。要兩個條件都符合才會買進。
Or 或,只要有一個條件成立。if 上漲 or 成交量放大 then 買進。只要一個條件符合就會買進。
Not 非,該條件不符合才會成立。if not 上漲 then 買進。只要條件不符合就會買進。

另外還有比較進階的使用方式,就是用 () 串聯。

if (上漲 and 成交量放大) or 收盤價 > 均線 then 買進。

以上的例子當中,只要 (上漲 and 成交量放大 ) 或是 收盤價>均線 ,當中兩組有一組條件成立就會觸發買進訊號。而其中我們將 (上漲 and 成交量放大 ) 用 () 綁釘在一起,使之成為同一組的條件。

2. K棒價格相關內建字:Open、High、Low 、Close

程式交易的的策略,大多數是基於 K 棒來作為條件判斷或是指標計算。在 MultiCharts 當中,K棒價格的開高低收就是很直觀的OpenHighLowClose

除此之外 value[N] 是前 N 根 K棒的值,例如:C[1] 代表的是前一根 K棒的收盤價、C[2] 代表的是前兩根K棒的收盤價、 H[2] 就是前兩根 K棒的收盤價。

內建字 說明
Open  開盤價,縮寫為 O
High  最高價,縮寫為 H
Low  最低價,縮寫為 L
Close  收盤價,縮寫為 C
value[N]  向前數 N根 K棒,當時的 value 值

3.時間相關內建字:Year、Month、Date、Time

時間,在我們寫策略的時候也是常常使用到的條件判斷。時間可細分為年、月、日、時。在討論時間相關內建字之前,我們必須先了解在 MultiCharts PowerLanguage 的架構中,日期與時間的顯示方式。

在 MultiCharts 的日期格式為 YYYMMDD。舉個例子,2021/1/1 會顯示成1210101。

1210101當中,前三位數字121為年份, PowerLanguage 的語法中,年份預設為西元1900年起算之年數,所以所使用的年份要在減去1900。所以 2021年1月1號,就會顯示成「1210101」(2021-1900=121)。

而月份與日期就相對直觀很多了,須把未滿兩位數的數字用 0 補滿。

而 MultiCharts 的時間格式為 HHMM,採24小時制,比如說下午兩點零一分,為「1401」。早上八點四十五分 ,為「0845」。

  • 呼叫內建字 Date:回傳該K棒的日期,格式為上方提到的 YYYMMDD
  • 呼叫內建字 Time:回傳該K棒的時間,格式為上方提到的 HHMM
  • 呼叫內建字 Year(D):回傳該日期D的年份,格式為上方提到的 YYY( 西元1900年起算之年數,2021年會顯示成「121」,2021-1900=121 )。
  • 呼叫內建字 Month(D):回傳該日期D的月份,格式為M。三月會回傳3,十月會回傳10。
內建字 說明
Date 日期,縮寫為 D,格式為YYYMMDD。 2021年1月1號,顯示為「1210101」(2021-1900=121)。
Time 時間,縮寫為 T,格式為HHMM。 24小時制,下午兩點零一分,顯示為「1401」。
Year(D) 年份,格式為YYY( 西元1900年起算之年數,2021年會顯示成「121」,2021-1900=121 )。
Month(D) 月份,格式為M。三月會回傳3,十月會回傳10。

4. 進出場相關內建字:EntryPriceExitPrice

這一系列的內建字是我認為非常人性且實用的字,而也不會有任何閱讀障礙,英文單字難度相當小學生等級。

很多邏輯的需求都能夠透過以下程式碼達成。
例如:出場後三天出場,if D-ExitDate(0)>=3 then sell next bar market

內建字 說明
進場內建字



BarsSinceEntry  進場後經過幾根K棒。
EntryPrice  進場價
EntryName  進場名稱
EntryDate  進場日期
EntryTime  進場時間


出場內建字


BarsSinceExit  出場後經過幾根K棒
ExitPrice  出場價
ExitName  出場名稱
ExitDate  出場日期
ExitTime  出場時間

4. 部位相關內建字:MarketPositionCurrentContracts

MarketPosition CurrentContracts 為部位相關的內建字,可以顯示部位方向與持倉數量。

MarketPosition 是顯示部位方向,多單為正1,空單為負1,空手為0,比如多單 1口是「1」,空單 100口是「-1」。只考慮方向不考慮持倉的數量。

CurrentContracts 是顯示自己持有的口數,不管是多單 3口或是空單 3口都是回傳「3」,空口回傳「0」。

而實務上我們為了要同時顯示部位的方向和數量。會將以上兩個函數相乘 ( MarketPosition * CurrentContracts ) ,就可以5口空單回傳「-5」、空手回傳 「0」、 多單2口回傳 「2」。

內建字 說明
 MarketPosition  部位方向,只顯示1(多單)、-1(空單)、0(空手)
 CurrentContracts  在倉口數,只顯示持有單位數量

 MarketPosition *
 CurrentContracts

 同時顯示部分及口數

5. 損益相關內建字MaxPositionProfitMaxPositionLoss

如果要顯示這次交易的最大獲利要使用 MaxPositionProfit ,最大虧損使用 MaxPositionLoss

內建字 說明
 MaxPositionProfit  本次交易最大曾經獲利金額
 MaxPositionLoss  本次交易最大曾經虧損金額
 BigPointValue  每一大點的點值金額

6. 停損停利出場相關內建字SetStopLossSetExitOnClose

內建字 說明
 SetStopLoss  設定停損金額
 SetExitOnClose  尾盤平倉部位
 SetBreakEven  損益兩平出場
 SetProfitTarget  設定停利金額

7. 繪製指標與文字相關內建字:plottext_new

內建字 說明
 plot  繪製指標或 K線
 text_new  標示特定的文字,格式為 “文字” ,文字為淺綠色 。

本篇取自「MultiCharts 程式交易|從零到一快速上手」試閱內容,
更多課程內容:https://www.quantpass.org/mc_onlineclass-2/


量化通粉絲社群,定期分享實用資源
✅加入LINE匿名群組量化通QuantPass」無壓力討論與分享!
✅追蹤量化通的粉絲專頁量化通QuantPass」即時獲取實用的資源!

程式交易課程推薦
📣 MultiCharts程式交易全系列線上課程,手把手開始用程式交易打造自己的被動收入!

發表迴響

相關文章