「AH 與今日開盤價差距 ≤ 2%」且「股價突破 AH」 發出警示

  •   46 
  • 最後發表   DOMISTAR02  2025 八月 12
DOMISTAR02 發文於   2025/08/06

https://forum.xq.com.tw/thread/cdp-%e8%ad%a6%e7%a4%ba/?order=all#comment-2ab7c41c-3643-4b55-8509-b1bc007aa7cb
有看到這一篇之後延伸出來的新的想法

我想要AH離開盤價是2%內 股價穿越AH 才會跳通知 

// ------------------

// 參數設定

input:

    TolerancePct(2, "AH 與開盤價差距 (%)");  // 差距門檻 2%

 

// 變數宣告

vars:

    PreHigh    (0),

    PreLow     (0),

    PreClose   (0),

    CDP        (0),

    AH         (0),

    Tolerance  (0),

    diff        (0),

    Signal     (0);

 

// 1. 取昨天日 K 的 High/Low/Close

PreHigh  = GetField("High",  "D")[1];

PreLow   = GetField("Low",   "D")[1];

PreClose = GetField("Close", "D")[1];

 

// 2. 計算 CDP 與 AH

CDP = (PreHigh + PreLow + 2 * PreClose) / 4;

AH  = CDP + (PreHigh - PreLow);

 

// 3. 差距門檻(轉小數)

Tolerance = TolerancePct / 100;

 

// 4. 計算 AH 與今開盤的「絕對差距」

if AH >= Open then

    diff = AH - Open

else

    diff = Open - AH;

 

// 5. 條件判斷並觸發警示

Signal = 0;

if (diff <= Open * Tolerance) and (C > AH) and (C[1] <= AH) then

    Signal = 1;

 

// 6. 回傳警示

ret = Signal;

 



8/6 新盛力 AH119.25 離開盤價大概是 2%
我再做回測的時候 用日頻率沒有發動 用5分K跑得數字也很奇怪
請問哪裡有問題?

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

不需要使用變數Signal。

// 5. 條件判斷並觸發警示

if (diff <= Open * Tolerance) and (C > AH) and (C[1] <= AH) then ret=1;

XS小編 發文於   2025/08/12

Hello DOMISTAR02,

 

小編補充,您可以使用print函數將相關數值印出檢查。

另外,diff 的計算中使用到 open,若是在5分鐘頻率上的話會變成5分鐘K的開盤價,建議可以改為 GetField("Open", "D")。

條件中 (C > AH) and (C[1] <= AH) 若是在日頻率的話,比的會是前一日的收盤價和當日的收盤價。

發表回覆
Close