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

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

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

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

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

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

立即訂閱電子報,掌握最新資訊!

    電子郵件

    有興趣的主題
    量化交易金融知識台灣股市國內期貨海外期貨虛擬貨幣

    有興趣的量化交易軟體/平台
    不清楚MultiChartsTradingViewPythonXQMT4MT5

    還有什麼詢問的?

    MultiCharts優惠整理!軟體費用特價與折扣代碼
    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 成交量放大 ) 用 () 綁釘在一起,使之成為同一組的條件。

    需要免費MultiCharts助教支援?

      填寫表單,符合資格者即可獲得
      🔸新手教學懶人包
      🔸不定時線上線下講座
      🔸免費量身訂做個人的程式
      🔸MultiCharts優惠

      稱呼

      LINE id

      電子郵件

      還有什麼想詢問的?

      Mc 101209091709
      Mc 101209091709

      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://quantpass.org/mc_onlineclass-2/

      MultiCharts優惠整理!報價源與軟體折扣


      量化通粉絲社群,一起討論程式交易!

      加入LINE社群量化交易討論群」無壓力討論與分享!

      加入臉書社團「程式交易 Taiwan」即時獲取實用的資源!

      東尼 Tony
      東尼 Tony

      十年餘法人級投資經驗,曾任加密貨幣量化基金經理人與投資策略長、AI智能基金經理人、證券期貨商自營部操盤手,管理資金規模最高超過七億元。
      熟悉各類金融商品操作與加密貨幣領域,在量化交易、指標設計、策略模組打造、投資組合配置,有著深厚的經驗。
      為”智慧型基金投資系統”之專利創作人,多次受邀至各大學與企業擔任講師。

      文章: 57

      2 則留言

      1. 想請問如果期指收盤時間(05:00)後將電腦關機或是休眠後關閉MC,於當天開盤8:45重新啟動MC,是否就無法抓取05:00前的均線資料?那要如何才能抓到開盤前的資料呢?

      發佈留言

      發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *