1分k的8分鐘均線與17分鐘均線死亡交叉請問

  •   194 
  • 最後發表   阿哲DR5  2 週前
阿哲DR5 發文於   2025/07/25

許老師和大家好!

我有一個做空的進場策略:在開盤後1分k的8分鐘均線死亡交叉17分鐘均線的時候我要進場做空,可是遇到一個問題是開盤17分鐘內發生的話我不知道如何使用XScript印出來。

截圖圖片

以這張圖為例,由於 9:14 的時候就已經觸發了,所以是在17分鐘以內。由於看盤軟體的線是延續昨天的,所以很清楚,想請問如何用XS取得值,謝謝大家!

value1 = getField("close", "1");
value2 = average(value1, 8);
value3 = average(value1, 17);

if value2 cross under value3 then print(date, time, value2, value3);

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

想請問如何用XS取得值

Ans:取什麼數值?

阿哲DR5 發文於   2025/07/28

老師好

我想要的是上面圈起來的 SMA8 和 SMA17 的值,而且只要當天的第 1 筆就好。

我遇到的問題是要是 17 分鐘內遇到死亡交叉的話,由於是延續昨天的數字,因此看盤軟體可以顯示,但是我程式碼不知道如何寫出來,謝謝!

虎科大許教授 發文於   2025/07/28

由於你並沒有限制均線數值的計算從特定時間開始,因此17分鐘內計算的均線數值自動將昨天收盤前的各個1分鐘收盤價一起加入計算。

阿哲DR5 發文於   2025/07/28

謝謝老師的回答 那想請問老師要如何「限制均線數值的計算從特定時間開始 」呢?

虎科大許教授 發文於   2025/07/28

if barfreq<>"Min" or barinterval<>1 then raiseRunTimeError("限用1分鐘頻率");

if time>=091700 then

   begin

      value1=average(getField("收盤價"),8);

      value2=average(getField("收盤價"),17);

      if value1 cross under value2 then ret=1;

   end;

阿哲DR5 發文於   2025/07/28

老師我想要的是可以去抓取昨天的1分k,然後去算 ma17,也就是我想要抓到9:14分的這一筆資料。再請老師幫幫忙了,謝謝!

虎科大許教授 發文於   2025/07/28

if time=091400 then print(average(GetField("收盤價","1"),17));

阿哲DR5 發文於   2025/07/28

謝謝老師的回覆,不過老師因為我是要把這個策略拿去選擇標的,所以時間不能夠寫死,因為我不會知道未來每一天早上甚麼時候會觸發這個死亡交叉的進場訊號。我是想要每天早上第一筆觸發的時候進場,然後應用到上市櫃的所有個股,再請老師幫幫忙了,謝謝!

虎科大許教授 發文於   2025/07/28

已經被你弄糊塗了。請詳細說明你的需求,到底想要什麼。

阿哲DR5 發文於   2025/07/28

就是每天開盤的第一次ma8死亡交叉ma17的這一個進場訊號,以上圖為例我會抓不到9:14分的這一個進場訊號,會抓到下一個。因為9:14分的時候ma17還沒有完整的17分鐘,因此會用到昨天的1分k資料。想請問老師我要如何用XS取得每一個上市櫃個股每天的第一個進場訊號,不能是寫死time,而是要用每天第一次ma8死亡交叉ma17,因為有這一個進場訊號才有相對應的時間。

顯示更多回應 發表回覆
Close