收盤價創歷史新高的選股程式碼?

  •   591 
  • 最後發表   Smallleek  2024 二月 06
Smallleek 發文於   2024/01/25

setbarfreq("D","AD","AW");  //日線與還原周線

input: _n(1, "第幾高價");

input: N2(720, "區間日數");

//

value1=GetField("公司掛牌日期");

value2=getbaroffset(value1);

value3=GetField("CLOSE","D") ;

if value3>nthHighest(_n,value3[1],value2)

 then ret=1 ;

選股的邏輯是挑出今日收盤價已經創下掛牌新高的股票
但是選出的股票,往往只是突破波段新高,
如果將Value3 改成 close,選股的清單又會不一樣
想知道為什麼會有這樣的結果
另外,想用 print(GetField("CLOSE","D") ,close) 去找出兩者間的差異
編譯後的結果,卻沒有顯示在執行空白欄位內,如何解決 謝謝!

XQ小幫手 發文於   2024/02/06

Hello, Smallleek.

 

首先nthHighest(...),SimpleHighest(...),Highest(...),FastHighest(...)函式受限於您傳入的參數,若您傳入的參數是變數形式,就要注意資料長度,

https://www.xq.com.tw/lesson/xspractice/%E8%B3%87%E6%96%99%E8%AE%80%E5%8F%96%E7%AF%84%E5%9C%8D%E8%88%87%E8%85%B3%E6%9C%AC%E5%9F%B7%E8%A1%8C%E7%9A%84%E9%97%9C%E4%BF%82/

所以,建議您設定一個有效範圍值例如3~5年(1年約250日),您如果設得太長,選股可能會跑太久timeout,

再來,在選股中,print(...)在回測時才會執行到,所以若是您只是想比對選股結果,可以使用outputfield(...),

 

另外,GetField("CLOSE","D")是日頻率的收盤價,Close是資料頻率的收盤價,也就是看您選股所執行的頻率,

發表回覆
Close