當沖程式碼問題

  •   422 
  • 最後發表   Ethan Cheng  2025 三月 16
Ethan Cheng 發文於   2025/03/16

請益各位先進, 我是程式新手, 最近依靠爬文寫了一個盤中選股程式, 在編譯上出現錯誤訊息, 因為都是東湊西抓的, 所以分開編譯沒問題, 但是擺在一起就無法編譯完成, 爬文好幾天還是不得其門而入, 除了繼續爬文外也請各位前輩給予指導, 感激不盡。

條件設定如下:

  • 1. 執行頻率=5分K 
  • 2. 當下成交量 > 500
  • 3. 漲幅 > 1% < 4%
  • 4. 收盤價 > EMA10 > EMA20 (5分K)
  • 5. 股價 > 50元 < 200元
  • 6. 當根K棒成交量 >= 前2根K棒平均量1倍 & 外盤成交
  • 7. 當日收紅K且要是外盤成交

 

1 // =========== 盤中選股 ==============

2  // ========= 指定執行頻率 =============

3if barfreq<>"Min"or barinterval<>5 then RaiseRuntimeError("請設定頻率為5分K"); 

4

5  // ============== 設定長短均線 ==================

6input:Leng1(10),Leng2(20);

7

8variable: ema1(0), ema2(0); 

9

10SetInputName(1,"周線"); 

11SetInputName(2,"月線"); 

12

13settotalbar(maxlist(Leng1, Leng2) + 480); 

14

15ema1 = ema(close, Leng1); 

16ema2 = ema(close, Leng2); 

17

18// ==================== 設定執行條件 ====================

19input:Vol(500,"當天累積成交量"); 

21if close[0] > GetField("開盤價", "D") * 1.01 and close[0] < GetField("開盤價", "D") * 1.04;

22and GetField("成交量","D") > Vol; 

23and close[0] > 50 < 200;  // 當下股價 > 50元 <  200元

24and close[0]  > "周線" and "周線">"月線"; 

25and close[0] > open[0];  // 當根收紅K

26and volume[0] > average(volume[1],2)*2;  // 當根K棒成交量 > 前2根K棒平均量2倍

27and GetQuote("BidAskFlag")=1 ;  // 當根K棒外盤成交

28then ret=1;

29end;

編譯後會出現以下訊息, 煩請各位先進幫忙看看是哪邊需要改進, 謝謝。

行號字元錯誤描述

21 85 編譯器看到了一個無法辨認的字 "ifclose[0]>GetField("開盤價","D")*1.02andclose[0]

                <GetField("開盤價","D")*1.06;",請檢查這個字有沒有寫錯。

2179在 "*" 之前可能少了';'。

21 13 "在 "">"" 之前可能少了';'。

2156在 "<" 之前可能少了';'。

22 1 "錯誤的表達式,""and"" 可能是多餘的。

214"未知的關鍵字 ""close"",請檢查是否有宣告此變數或是拼字是否有誤。

2147未知的關鍵字 "close",請檢查是否有宣告此變數或是拼字是否有誤。

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/03/16

21行的if有頭沒尾。應該把1.04後面的分號刪除。

22行最後面的分號也要刪除。

23行及24行邏輯運算式錯誤。收盤價怎麼能與字串比較大小呢?

建議你先學習XS基本要素,這些都是我初階班課程的內容。

Ethan Cheng 發文於   2025/03/16

好的, 謝謝許教授

發表回覆
Close