請問抓取區間60日 然後跟今日收盤價差異不超過10%的 第一最大成交量及第二最大成交量的收盤價之語法
XQ語法 60日區間
- 269
- 最後發表 微笑多一點 2023 六月 13
Hello 微笑多一點,
網站上有教學區,裡面有XS語法的基礎和應用可以閱覽。
您可以使用 highestbar 來取得最大量的相對位置。
舉例來說:
value1 = highestbar(volume, 60); //60根Bar內最大量的相對位置
value2 = close[value1]; //對應位置的收盤價
value11 = NthHighestBar(1,volume,60); //計算近60期最高的最高量的相對位置
value12 = close[value11]; //近60期最高成交量的收盤價
value13 = NthHighestBar(2,volume,60); //計算近60期次的次量的相對位置
value14= close[value13]; //近60期次成交量的收盤價
value21 = IFF(Close*1.1 >value12,value12,IFF(Close*1.1 >value14,value14,0));
請問我這樣可以嗎?
Hello 微笑多一點,
由於您上面描述的是差異不超過10%,所以應該是該價格介於今日收盤價的上下10%以內。
條件應該為 close * 1.1 > value12 adn close * 0.9 < value12。
建議您可以修改為
value21 = IFF(Close*1.1 >value12 and close * 0.9 < value12, value12, IFF(Close * 1.1 > value14 and close * 0.9 < value14,value14,0));
另外,這樣寫只會回傳一個數字 (value12 或 value14),就算兩個條件都符合也只會回傳 value12。
謝謝小幫手教學~
想請問如最後結果0 但我想以自訂文字取代
語法該如編譯
Hello 微笑多一點,
變數只能夠保存相同類型的資料,細節參考 Var 的說明。
value21 是數值變數,故無法保存字串。
但是您可以另外另變數,當 value21 為0時字串變數紀錄特別字串。
舉例來說:
value21 = IFF(Close*1.1 >value12 and close * 0.9 < value12, value12, IFF(Close * 1.1 > value14 and close * 0.9 < value14,value14,0));
var: _text("");
if value21 = 0 then _text = "條件不成立" else _text = "";
這樣當 value21 為0時 _text 會是 條件不成立 字串,其他狀況下則是空白字串。
5 評論