MultiCharts 如何執行策略#

PowerLanguage 與腳本#

策略是一行一行事先寫好的指令,這些指令使用 PowerLanguage 程式語言撰寫。 你必須使用 PowerLanguage Editor 來撰寫 PowerLanguage 指令。 撰寫完成的 PowerLanguage 指令稱為腳本(Script),腳本必須經過 編譯 才能執行 (在 PowerLanguage Editor 中按 F3 執行編譯)。 編譯會確認指令的語法是否正確,並將指令翻譯成 MultiCharts 可執行的格式。 編譯成功後,就可以在 MultiCharts 中選擇並執行寫好的腳本。

腳本類型#

PowerLanguage Editor 中,有三種類型的腳本: 函數指標訊號。 打開 PowerLanguage Editor -> 檔案 -> 開新檔案,選擇要撰寫的腳本類型。

腳本類型用途可執行指令
函數(Function)封裝可重複使用的邏輯,詳見 函數-
指標(Indicator)在圖表上繪製線條(Ex: Plot),如繪製5日均線繪圖指令
訊號(Signal)執行下單交易(Ex: Buy、Sell、SellShort、BuyToCover)買賣指令

指標腳本訊號腳本 的主要差別:

  • 指標腳本: 可以執行繪圖指令,不能 執行買賣指令。你可以只執行指標腳本,觀察圖表上線條的變化,再手動下單買賣。
  • 訊號腳本: 可以執行買賣指令,不能 執行繪圖指令。

腳本的執行機制#

以主觀交易為例: 如果使用 2條均線黃金交叉就買進 的策略,你會一直盯著不斷接收行情的圖表,看著K棒一根一根產生,然後「不斷」檢查2條均線是否發生黃金交叉,來判斷是否買進。也許你沒有意識到,但隨著行情不斷接收,你就是在不斷地重複執行策略的邏輯。

MultiCharts 執行策略也是相同的概念: 隨著行情不斷接收,MultiCharts 會不斷地重新執行腳本。 但「不斷」並不是每一次執行結束後立刻重新執行,MultiCharts 定義了重新執行的規則,來決定何時重新執行腳本。

指標腳本訊號腳本 的重新執行規則不同,以下分別說明。

指標的執行規則#

  1. 歷史K棒階段 (Bar by Bar): 對於過去已經完成的K棒,腳本會在每一根K棒結束時依序執行。
  2. 即時行情階段 (Tick by Tick): 當所有已完成的K棒都執行完畢後,進入即時行情階段。在當前K棒完成前,每收到一筆成交(tick)就重新執行一次腳本。

訊號的執行規則#

  1. 歷史K棒階段 (Bar by Bar): 對於過去已經完成的K棒,腳本會在每一根K棒結束時依序執行。(與指標相同)
  2. 即時行情階段 (Bar on Close): 當所有已完成的K棒都執行完畢後,進入即時行情階段。在當前K棒完成前,不會 重新執行腳本,需等到當前K棒完成後才重新執行。

IOG (Intra-bar Order Generation)#

訊號腳本可以透過開啟 IOG 屬性,改變即時行情階段的行為,使其與指標相同: 在當前K棒完成前,每收到一筆成交(tick)就重新執行一次腳本。

注意: 即使開啟 IOG,歷史K棒階段仍然是 Bar by Bar 執行,不會變成 Tick by Tick。

指標 vs 訊號 執行規則比較#

執行階段指標訊號訊號(IOG開啟)
歷史K棒Bar by BarBar by BarBar by Bar
即時行情(當前K棒未完成)Tick by Tick不執行Tick by Tick
即時行情(當前K棒完成)執行執行執行

已經完成的K棒 (Completed Bars)#

在上述的執行規則中,「已經完成的K棒」是關鍵概念。以時間為單位的圖表(Ex: 分K圖)為例,K棒在滿足以下任一條件時,會被判定為已經完成:

  1. 收到的下一筆成交時間,超過了K棒定義的時間間隔
  2. 超過一定時間都沒有收到下一筆成交

第2個條件中的超時時間,指標訊號 有所不同:

腳本類型超時時間
指標3 秒
訊號300 秒

Reference#

https://www.multicharts.com/trading-software/index.php/How_Scripts_Work

© 2026 CodeReindeer. All rights reserved.