如何寫前20天最高價

  •   335 
  • 最後發表   andyc0510  2023 一月 12
andyc0510 發文於   2023/01/06

如題,請問可以寫成highest(high[1],20)嗎?

同樣的,前20天均量可以寫成average(volume[1],20)嗎?

謝謝

排序方式: 標準 | 最新
iker 發文於   2023/01/09

前 20 天最高價:  SimpleHighest(highD(1), 20)
前 20 天均量:  Average(GetField("Volume","D")[1], 20)

試試看是不是你要的

XQ小幫手 發文於   2023/01/11

Hello andyc0510,

 

如果您是使用日頻率的話,highest(high[1],20) 就會是前20天的最高價沒錯。

若是其他頻率,您可以使用 highest(getfield("High", "D")[1], 20)。

前20天均量也是相同,視您使用的頻率決定是 getfield("volume", "D") 或 volume 即可。

 

需注意 SimpleHighest(highD(1), 20) 取得的資訊會是錯誤的,您可以參考內建的 simplehighest 和 highd 函數就可以知道原因。

簡單來說,simplehighest 是用 [n] 的方式去比較過去n期的值,但 highd(1)[n] 並不會是 n 天前的日高價。

只有在日頻率的狀況下 SimpleHighest(highD(1), 20) 才會和 highest(getfield("High", "D")[1], 20) 相同。

iker 發文於   2023/01/11

Hi 小幫手

 

1. 假設我在 60分 頻率執行 SimpleHighest(highD(1), 20) 是不是例如腳本在 1/11 14:00 觸發,SimpleHighest(highD(1), 20) 取到的會是 1/10 18:00 當下的前一天 1/9 的日最高價?

 

2. 會用 SimpleHighest 的原因是參考您在 自動交易中 在分K頻率 如何抓取前三天 最低點? 文章裡提到的

另外,highest 與 lowest 等相關函數因使用節省效能的寫法,所以在跨頻率運算時有時會出錯,若發生時可以使用 simplehighest 和 simplelowest 作替代。

當時提到跨頻率可能會發生錯誤,建議用 SimpleHighest 替代,但看這次說明反而這樣取資訊是錯誤的,請問是什麼原因呢?

剛看 XSHelp 裡關於 SimpleHighest 的說明,那裏跳轉到 Highest 的連結失效了。而實際跑去看現在的 Highest 說明,寫的是

以最新一筆資料為基準點,輸入要計算的期數,然後計算過去期數的極大值。

每次呼叫SimpleHighest時,腳本都會依照指定期別,往前抓取期別內的每一筆資料來計算。

聽起來現在的 SimpleHighest 不適合跨頻率取值(或是說取到的值是我開頭说的那種值,並非以日頻率往前計算),如果 Highest 語法本身因為節省效能的寫法造成跨頻率計算可能出錯,那使用者要用什麼函式才能確保跨頻率取值是正確的呢?

還是能具體說明 Highest 的寫法在哪些情況會無法準確取值,或是乾脆在使用者用錯的時候直接拋出錯誤讓腳本 complie 不過並提示問題點,這樣使用者比較知道哪些場景不適用。

XQ小幫手 發文於   2023/01/12

Hello iker,

 

有問題的是 highD 而不是simplehighest。

如果您有打開 simplehighest 的函數來看的話,可以得知其運算是用 數列[n] 的方式去比較n期的數量。

SimpleHighest(highD(1), 20) 這樣的狀況下,就會是比較20期的 highd(1)[n],而這代表的會是近20根Bar的 highd(1)。

如果近20根Bar都是同一天的話,那麼實際上比較到的數值就只會是前一天的高價。

而使用 getfield("High", "D") 的話因為 getfield("High", "D")[n] 會取到前n天的資料而不是前n期的資料,所以不會出錯。

您可以實際將 highd(1)[n] 在指標上畫出或print出來就可以理解。

 

簡單來說:

highd(1)[1]  <= 上一根Bar 的 highd(1)

getfield("High", "D")[1]  <= 前一日的 high

所以這種狀況下要使用 getfield("High", "D") 才會是正確的。

iker 發文於   2023/01/12

感謝說明

發表回覆
Close