雙週期KD選股腳本

  •   528 
  • 最後發表   東尼  2020 十月 22
東尼 發文於   2020/10/19

敬啟者  您好:

我用5分頻率寫一個雙周期KD腳本 

條件 1:  5分的 K crossover D      2:  60分  K > D 

執行結論:  1. 條件 1的結果都正確

                 2. 條件2的結果有些會有問題 

                     例如早上執行時出現共13檔股票   其中9914 8440 2607 3686 1513 1417 6檔股票60分的K值並沒有大於D值

                      7檔股票60分的K值是大於D值 2867 3056 2390 2331 1907 1608 1604 

請問您如何修正?

謝謝~~~ 

input: Length(9), RSVt(3), Kt(3), FastLength(12), SlowLength(26), MACDLength(9);

variable: rsv(0), k(0), _d(0), difValue(0), macdValue(0), oscValue(0);   

.

.(省略)

value1 = xfmin_Stochastic("60",Length,RSVt,Kt,value2,value3,value4); //60分kd

value5 = value9[1];

Ret =  k cross over _d //

        and k<=75

and value3 >= value4 // 60分k>=d

and value4 >= value5 // 60分k>=k1

        and volume >= 50

and oscvalue >= 0

;

附加文件

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

東尼 您好

單純看您所截錄的程式碼

想請您是否能些檢視一下"資料讀取筆數" ?

主要的原因點在於kd指標是一個連續性的指標

如果時間拉得不夠長的話會發生數值誤差的問題

相關的介紹可以參考這篇 

http://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/

所以建議您把資料讀取筆數拉大試看看

如還是有問題的話,需要請您提供完整的腳本匯出檔,我會比較好判斷問題在哪

感謝

 

東尼 發文於   2020/10/19

敬啟者  您好:

附上我的腳本  與執行結果供您參考

19日晚上10點多執行腳本後  共跑出20檔股票

其中有3檔的60kd發現並沒有金叉- 6233 2413 1229

仍不解問題點在那?

由於我對讀取資料筆數的使用尚不熟悉  

是該在腳本中敘述還是用設定的?

煩請您指導~~

感謝!

 PS. 附上3個檔案

 

 

附加文件

XQ小幫手 發文於   2020/10/20

東尼 您好

我並未在下方看到您有上傳到的檔案喔!~

請您幫我確認一下是否上傳 感謝

以圖片來看為何會反白

主要是因為您可能在語法中有寫到 settotalbar  就會發生這樣的問題(因為你已經在之中規定讀取筆數了)

 

東尼 發文於   2020/10/20

敬啟者 您好

再重傳一次 

關於 settotalbar 部分敘述或資料筆數設定

不太熟悉 再請您指導一下

感謝~  

 

附加文件

東尼 發文於   2020/10/22

敬啟者 您好:

請問這個部分 您有發現問題嗎?

 

XQ小幫手 發文於   2020/10/22

東尼 您好

關於資料讀取筆數的介紹,請參考以下連結

http://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/

 

小幫手檢視您的腳本後,有看到您有用到kd macd  

資料讀取筆數的意思大概就是您要有足夠的數據,

才能算出正確的值

而您用到的技術分析指標,都是連續性的(也就是今值會沿用前值的數據來計算)

所以讀取範圍需要拉長數值才會準確

 

您可以嘗試把這段註解掉

SetTotalBar(maxlist(Length,6) * 10);

然後就可以在雷達中手動調整筆數了

東尼 發文於   2020/10/22

謝謝您 我試試看喔~~

  • 按讚來自於
  • b24524658
發表回覆
Close