一分鐘精華摘要
MultiCharts(簡稱 MC)使用的「PowerLanguage」是一種高度貼近英文自然語言的量化腳本語法。初學者踏入 MultiCharts 策略開發時,首先需釐清「指標(Indicator,僅負責繪圖呈現)」與「訊號(Signal,負責產生進出場買賣單)」的核心差異。掌握變數宣告、K 線引數(
Open,High,Low,Close)以及Buy與SellShort的委託邏輯,就能快速建立標準化的技術分析策略。
在期貨與外匯的量化交易領域中,MultiCharts 一直是市佔率極高且生態成熟的專業平台。相較於需要處理大量底層環境設定的通用語言(如 Python 或 C++),MultiCharts 內建了完整的圖表回測引擎、即時撮合模組與績效報告系統。
其專屬的腳本語言「PowerLanguage(相容於 TradeStation 的 EasyLanguage)」,讓沒有深厚資訊工程背景的交易者,也能以極具直觀性的英文語句寫出交易邏輯。
究竟 PowerLanguage 的基礎語法架構是什麼?「指標」和「訊號」有什麼不同?如何寫出第一支均線突破策略並套入圖表進行回測?今天這篇實戰教學將帶你一步步拆解上手。
💡 相關文章推薦:
- 想全面了解程式交易完整生命週期?請參考:【程式交易入門全攻略】什麼是量化交易?工具選擇、策略回測、API 下單與新手實戰指南
- 主流交易軟體該選哪一個?請參考:程式交易軟體怎麼選?Python vs MultiCharts vs XQ 全方位評比:門檻、成本與適用對象
一、 指標(Indicator)vs 訊號(Signal):核心差異解析
在 MultiCharts 的架構中,腳本主要分為兩大類別,兩者的執行目的完全不同:
| 類別 | 主要功能與目的 | 能否執行買賣委託? | 常見範例 |
|---|---|---|---|
| 指標(Indicator) | 在圖表上繪製線條、點狀或數值,輔助視覺判斷盤勢。 | 否(純視覺輔助,不觸發交易) | 移動平均線(MA)、KD 指標、布林通道 |
| 訊號(Signal) | 根據邏輯判斷送出進出場指令,計算帳面損益與回測報表。 | 是(可於圖表模擬撮合或串接 API 實盤下單) | 均線黃金交叉買進、突破高點追價、固定點數停損 |
📌 核心觀念:策略開發時,我們通常先透過「指標」將想法可視化在圖表上,確認數值無誤後,再將判斷條件轉寫為「訊號」以進行回測與下單。
二、 PowerLanguage 基礎語法與三大核心元素
PowerLanguage 語法結構清晰,其核心基礎包含以下三個面向:
1. 內建 K 線常數與歷史引數
PowerLanguage 以單根 K 棒(Bar)為運算單位,內建了代表當根 K 棒開高低收的保留字:
Open或O:開盤價High或H:最高價Low或L:最低價Close或C:收盤價Volume或V:成交量
若要引用前幾根 K 棒的數值,只需使用中括號 [N]:
Close[1]:前 1 根 K 棒的收盤價High[2]:前 2 根 K 棒的最高價
2. 參數(Inputs)與變數(Variables)宣告
Inputs:用於宣告策略中需要常態微調或進行最佳化測試的參數。Variables:(或Vars:)用於儲存在運算過程中動態計算的數值。
Inputs:
FastLength(10), // 宣告快線週期為 10
SlowLength(30); // 宣告慢線週期為 30
Variables:
FastMA(0), // 宣告快線變數,初始值為 0
SlowMA(0); // 宣告慢線變數,初始值為 0
3. 指標繪圖指令(Plot)
在指標腳本中,計算完成後使用 Plot 指令即可將線條輸出至圖表:
FastMA = Average(Close, FastLength);
SlowMA = Average(Close, SlowLength);
Plot1(FastMA, "快線");
Plot2(SlowMA, "慢線");
💡 相關文章推薦:
- 回測看似賺大錢實盤卻慘賠?請參考:策略回測看似賺大錢,實盤卻慘賠?量化回測常見的 4 大盲點:過度擬合、前視偏差與滑價陷阱
- 評估策略優劣不能只看報酬率:請參考:量化策略怎麼看好壞?核心績效指標解讀:MDD 最大回撤、夏普值(Sharpe Ratio)與風報比
三、 實戰範例:撰寫第一支「均線突破交易訊號」
在訊號(Signal)腳本中,進出場使用 Buy、Sell、SellShort 與 BuyToCover 四個核心指令:
Buy:多頭買進開倉Sell:多單賣出平倉SellShort:空頭賣出開倉BuyToCover:空單買回平倉
以下展示一個標準的雙均線交叉策略訊號腳本:
[LegacyColorValue = true];
Inputs:
FastLen(10), // 短天期均線天數
SlowLen(30), // 長天期均線天數
StopLossPts(30); // 固定點數停損點數
Variables:
FastMA(0),
SlowMA(0);
// 計算均線數值
FastMA = Average(Close, FastLen);
SlowMA = Average(Close, SlowLen);
// 1. 多單進場邏輯:黃金交叉且目前無多單
If FastMA Crosses Over SlowMA Then
Buy ("MA_Buy") next bar at market;
// 2. 空單進場邏輯:死亡交叉且目前無空單
If FastMA Crosses Under SlowMA Then
SellShort ("MA_Short") next bar at market;
// 3. 固定點數停損機制(風控防護)
SetStopLoss(StopLossPts * BigPointValue);
💡 關鍵語法拆解
Crosses Over / Under:PowerLanguage 內建的黃金交叉與死亡交叉語法,能自動比對當前與前一根 K 棒的穿越狀態。next bar at market:代表「當條件在當根 K 棒收盤確認成立後,在下一根 K 棒開盤以市價送出委託」。SetStopLoss:內建的部位防護指令,以金額或跳動點乘上合約大點價值(BigPointValue)進行硬性停損。
四、 MultiCharts 新手策略開發的三大避坑重點
- 避免在圖表上套用過度複雜的參數: 新手常透過「參數最佳化」功能將勝率調到 90% 以上,這往往是「過度擬合(Overfitting)」的陷阱。參數越少、邏輯越簡潔的策略,未來的泛化適應力通常越強。
- 務必設定滑價與交易手續費: 在 MultiCharts 圖表設定中(策略屬性),必須確實填入每筆交易的「手續費」與「滑價點數(Slippage)」,否則未扣除摩擦成本的回測曲線完全失真。
- 區分「次根 K 棒市價」與「當根 K 棒觸價」:
at market是次根開盤執行,而Stop(停損委託)與Limit(限價委託)可以在次根 K 棒盤中碰觸特定價格時立即觸發,撰寫時需確認邏輯是否符合真實下單預期。
💡 相關文章推薦:
- 如何用 Python 抓取歷史盤後數據進行驗證?請參考:量化交易資料哪裡找?Python 抓取期交所盤後數據、歷史 K 線與大額交易人籌碼
- 雲端主機架構與防暴衝實盤風控:請參考:程式交易實盤架構怎麼搭?雲端 VPS 主機挑選、網路延遲優化與防止暴衝的斷線風控
結論
MultiCharts 與 PowerLanguage 將繁複的底層串接與圖表繪製包裝成簡潔易讀的模組,是進入期貨量化回測與自動化交易的高效捷徑。掌握指標與訊號的分工、熟悉常用 K 棒引數與進出場指令,並在策略中始終維持停損風控機制,你就能自信地構建出客觀、有統計期望值支撐的交易策略。