請問如何寫出特定期間內不破低或不過高的選股腳本

  •   1.1K 
  • 最後發表   12345  2021 十二月 23
12345 發文於   2021/12/13

想請問XQ小幫手如何寫出特定期間內不破低或不過高的選股腳本

例如:股價都沒有跌破12/1以來的低點 或股價沒有漲超過12/1以來的高點

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/12/15

Hello 12345,

 

小幫手不太懂您的意思,請問 股價都沒有跌破12/1以來的低點 是指從 12/1 到今日的股價都沒有跌破 從 12/1 到今日的低點嗎?

可是這樣的話 12/1 到今日只會有一個低點,而價格不可能跌破 (因為最低的價格就是那一點)。

需要麻煩您講得更清楚一點。

如果是要找出比如過去幾根Bar都符合某種條件的話,可以參考 TrueAll 函數。

要取得特定日期的相對位置的話,可以參考 GetBarOffset 函數。

12345 發文於   2021/12/15

 

 

Hello XQ小幫手,

像這樣,中鋼的股價到目前為止都沒有跌破12/1的低點(32.5),我想選出像這種,特定日期之後(ex:12/1)股價就沒有跌破那天低點的股票,謝謝。

XQ小幫手 發文於   2021/12/17

Hello 12345,

 

您可以使用 GetBarOffset 來取得指定日期的相對位置,搭配 TrueAll 來判斷是否收盤價都大於該相對位置的收盤價。

附上選股中心匯出檔 (不低於12/01的收盤價) 供您參考。

需注意資料讀取筆數要夠大(比指定日期更前面)才能夠取得正確的相對位置。

附加文件

12345 發文於   2021/12/17

Hello XQ小幫手,

 

感謝XQ小幫手的協助,照您給的檔案下去執行選股,發現亞德客-KY(1590)被選出來,不過亞德客-KY的股價在隔天(12/2)低點(833)便跌破12/1的低點(845),請問應該要如何修正呢,謝謝。

 

input: _date(20211201, "指定日期");
value1 = getbarOffset(_date);

if trueall(low >= low[value1], value1) then ret = 1;

XQ小幫手 發文於   2021/12/21

Hello 12345,

 

由於 TrueAll 是往前比較,所以 low[value1] 往前的話會取用到錯誤的值,小幫手漏了這一點。

您可以作以下兩種修改應該就不會有問題:

1.另外設定一個變數紀錄該天的最低值。

input: _date(20211201, "指定日期");

value1 = getbarOffset(_date);

value2 = low[value1];

 

if trueall(low >= value2, value1) then ret = 1;

 

2.改使用for迴圈。

input: _date(20211201, "指定日期");

value1 = getbarOffset(_date);

 

value3 = 0;

for value2 = 0 to value1 begin

    if low[value2] < low[value1] then value3 = 1;

    end;

if value3 = 0 then ret = 1;

12345 發文於   2021/12/23

Hello XQ小幫手,

 

非常感謝XQ小幫手的協助,謝謝!

發表回覆
Close