指定時間區間內的最高價

  •   2.1K 
  • 最後發表   阿白  2020 十二月 29
阿白 發文於   2020/11/18

各位好,想請教一下,以下條件的程式碼該如何寫:

開始日期:20200115

結束日期:20200322

取得開始日期~結束日期中的最高價

請教教我該怎麼寫,拜託各位了!

排序方式: 標準 | 最新
XQ小幫手 發文於   2020/11/18

阿白 您好

您可以先用getbaroffset語法來抓取那時候的k棒位置

然後用迴圈的方式去比較當日收盤價的價格 把最高的記錄下來

以下附檔為範例 提供給您參考 謝謝

 

 

附加文件

阿白 發文於   2020/12/03

阿白 您好

您可以先用getbaroffset語法來抓取那時候的k棒位置

然後用迴圈的方式去比較當日收盤價的價格 把最高的記錄下來

以下附檔為範例 提供給您參考 謝謝

XQ小幫手您好,很感謝您撥冗回覆我!
不過我使用您的檔案做回測後,發現似乎還是有問題QQ
舉個例來說:

1515力山,跑完後出來的數值是102.5,而這個收盤價的日期是2019年8月14號,不是在落在2020年1月15號到2020年3月22號,亦不是檔案中預設的2020年11月15號到2020年3月22號

想知道應該怎麼做修正,拜託您了!

XQ小幫手 發文於   2020/12/04

阿白 您好

為了盡速解決您的問題

請您提供

選股回測報告(*BTReport)

我會比較好知道問題出在哪 感謝 

阿白 發文於   2020/12/07

好的,這裡附上檔案給您

麻煩您了!

附加文件

XQ小幫手 發文於   2020/12/09

阿白 您好

主要是因為他讀到資料讀取筆數的問題

不好意思我當時沒有留意到這點

請幫我在判斷式當中加一個條件

for i=value1 downto value3 
begin 
if close[i] > value4 and date>20200115 and date<20200322 then 
value4=close[i];
end;

因為您限定時間區間,所以我們讓程式判定當要在這段時間時

才去抓取數值,

這樣就不會抓到過往的資料了

阿白 發文於   2020/12/14

小幫手您好,依照您的指示修改了程式碼後,已經順利地跑出來了!十分感謝您!

不過有一點困惑的是,用台股上市櫃全部類股去篩,僅篩出37檔公司。

程式碼中我們並沒有寫到"篩股"的條件,僅是做運算及把指定的價格抓出來而已,為什麼出來的結果會這麼少呢?

XQ小幫手 發文於   2020/12/16

阿白 您好

是否能請您幫我確認一下

您所選的標的範圍是否是"全部上市櫃股票"呢?

如果依照您上面提供的回測報告來看 所選範圍應該是" 看盤重點" 而非所有股

阿白 發文於   2020/12/16

小幫手您好:

這點我剛剛確認了,確實是我自己的疏忽,已調整成全部上市櫃類股,感謝小幫手提醒!

但是依然不是全部的公司都被收納進來,僅有1728家顯示出來而已。

我的意思是:既然我寫的程式碼中並沒有"篩股"的汰除機制,只有運算而已,那照理來說所有的標的都該被選入,然而執行的結果並沒有將所有的標的都納入。

我想知道問題出在哪,以防我有需要的標的被篩掉而我不知道,請問問題出在哪呢?

XQ小幫手 發文於   2020/12/16

阿白 您好

目前已知在台的上市櫃類股為1722檔

小幫手剛剛試了一下是沒問題的 

確實寫 RET=1 是不會篩選沒錯

假設該股票該區間有資料的話都會顯示

抱歉是否能夠請您舉個幾間公司,是應該在股票池裡,

但沒有出現的呢?

這樣小幫手會比較好協助您解決疑惑 感謝

阿白 發文於   2020/12/16

小幫手您好:

剛剛又再次回去確認了,發現剔除掉非上市櫃普通股的標的後,真的全數收納進名單內,萬分感謝您的幫忙!

但小弟又遇到問題了QAQ

我將原本的迴圈從一個增加至兩個,而我碰到幾個問題:

1. 第一個取樣會出現這樣的錯誤:

1342這檔公司他找不到最高價,邏輯上來說是不可能會有這種事的,我也人工確認過,它在2020年的一整年都是有資料的。

2. 所有樣本的第二個最高價的時間都是錯的:

第二個指定區間最高價的時間,幾乎都固定在5月21日,而這十分不尋常,且這個時間也不在我第二個指定時間區間內。

請小幫手幫幫我QQ

 

程式碼我貼在下面一則回復裡

顯示更多回應 發表回覆
Close