Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XScript編輯器中的系統腳本集

腳本結構說明

提供Script編輯器系統腳本的原始碼。程式碼分成以下幾個目錄:

  • 自動交易腳本:放置的是「交易腳本類型的系統腳本」
  • 函數腳本:放置的是「函數腳本類型的系統腳本」
  • 指標腳本:放置的是「指標腳本類型的系統腳本」
  • 選股腳本:放置的是「選股腳本類型的系統腳本」
  • 警示腳本:放置的是「警示腳本類型的系統腳本」

如何檢視程式碼

建議安裝VSCode

把repo複製到本機端之後, 使用VSCode, 開啟目錄即可檢視程式碼。

另外也建議安裝xs程式碼的外掛,VSCode就可以依照XS語法自動調整顯示的顏色。

XQ XScript 開發指南與常見錯誤排除 (Troubleshooting)

本文件彙整 XQ XScript 開發過程中常見的編譯錯誤、語法限制以及最佳實踐。旨在幫助開發者快速排除 Unknown Keyword、Reserved Word 及各類邏輯錯誤。

目錄

  1. 變數宣告與命名規則
  2. 參數輸入 (Input) 限制
  3. 系統保留字與內建變數
  4. 資料讀取與頻率 (GetField)
  5. 繪圖與座標軸設定
  6. 腳本類型與指令限制
  7. 其他語法地雷

1. 變數宣告與命名規則

❌ 常見錯誤

錯誤訊息: 變數 "Value1" 為系統保留文字

原因: 試圖宣告系統已經內建的變數。

說明: XQ 內建 Value1 ~ Value99 以及 Condition1 ~ Condition99,不需要也不能使用 Vars: 重新宣告。

✅ 正確寫法

// 錯誤:不要這樣寫
// Vars: Value1(0); 

// 正確:直接使用即可
Value1 = Close > Open;
Vars: MyCustomVar(0); // 自訂變數才需要宣告

❌ 命名衝突

錯誤訊息: 變數 "Oscillator" 為系統保留文字 或 目前版本不支援...

原因: 使用了指標函數名稱(如 Oscillator, MACD, RSI, K, D)作為變數名。

解法: 在名稱後加上後綴,例如 My_Osc、Diff_Val。

2. 參數輸入 (Input) 限制

❌ 參數過多

錯誤訊息: Input Name,Name 的內容只能 1 項

原因: Input 語法嚴格限制括號內只能有 2 個 參數:(預設值, "顯示名稱")。不支援第三個參數(說明文字)。

✅ 正確寫法

// 錯誤
Input: Length(20, "均線期數", "這是說明文字"); 

// 正確
Input: Length(20, "均線期數"); 

3. 系統保留字與內建變數

請勿使用以下單字作為變數名稱(部分為大小寫不敏感):

類別保留字 (不可宣告)

價格相關:

  • Open, High, Low, Close, Volume, Amount

時間相關:

  • Date, Time, Week, Month, Year

交易相關:

  • Position, Filled, FilledAvgPrice, Market

通用變數:

  • Value1Value99, Condition1Condition99

關鍵字:

  • Input, Vars, Begin, End, If, Then, Else, Plot

4. 資料讀取與頻率 (GetField)

❌ 跨頻率讀取

錯誤情境: 在「分鐘」頻率的腳本中,想讀取「股本」、「大戶持股」等日資料。

錯誤行為: 編譯可能通過,但回測執行時報錯,或數值為 0。

解法: 務必在 GetField 中指定頻率為 "D" (日) 或其他對應頻率。

✅ 正確寫法

// 在 1分鐘 K線腳本中讀取股本
Value1 = GetField("最新股本", "D"); // 務必加 "D"

// 讀取昨日數據 (跨頻率)
Value2 = GetField("High", "D")[1]; // 昨天的日高點

❌ 跨頻率函數 (xf_)

錯誤訊息: 未知的關鍵字 "xf_Highest"

原因: 使用了非官方內建的自訂函數庫(如 XScript Preset 專案),但電腦中未安裝該函數腳本。

解法: 改用內建語法組合:Highest(GetField("High","D"), 20)

5. 繪圖與座標軸設定

💡 視覺優化技巧

撐開 Y 軸: 若柱狀圖數值太小(如 0.5)與股價(如 100)共用座標,會看不見柱子。

  • 解法 1: 設定雙座標軸(主圖用軸1,副圖用軸2)。
  • 解法 2: 若需在同一個視窗,可用 PlotN(Close, "隱形線") 撐開範圍,並將顏色設為背景色。

隱藏線條: 代碼中無法直接設定「隱藏」,必須在介面的「繪圖設定」中調整。

  • checkbox:=0:預設取消勾選(不顯示也不計算座標)。
  • checkbox:=1:預設勾選。

6. 腳本類型與指令限制

不同類型的腳本支援的指令不同,混用會導致編譯失敗。

指令 選股腳本 (Selection) 警示腳本 (Sensor) 交易腳本 (AutoTrade) 指標腳本 (Indicator)
Ret = 1;
SetPosition
Plot1(...) ✅ (僅顯示) ✅ (僅顯示) ✅ (僅顯示)
Filled

常見錯誤: 在「警示腳本」中寫 SetPosition(無法下單),或在「交易腳本」中寫 Ret=1

7. 其他語法地雷

連鎖錯誤 (Cascading Errors): 通常 第一個 編譯錯誤才是主因。例如 Input 寫錯,會導致後面所有使用該參數的變數都變成 未宣告的變數。請先修復第一行紅字。

型態不符: If Condition1 Then... (Condition1 必須是 True/False)。避免 If Close = 100 Then... (浮點數比較危險),建議用 If Close >= 100 Then...

分號結尾: 每一行指令結束務必加 ;If ... Then Begin ... End; 的 End 後面也要加分號。

About

XQ 的 XScript 編輯器的 Preset

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages