請教setbackbar與settotalbar該如何設置

  •   756 
  • 最後發表   fangchih  2024 七月 02
fangchih 發文於   2024/06/22

請教各位大神:

想要設計一個選股RSI(c,5)突破highest(RSI(c,5),55)

要先計算出來前面55筆RSI(c,5)是正確的值

後面才運算是否有突破highest(RSI(c,5),55)有沒有突破

請教setbackbar與settotalbar該如何設置?

運算可以最優化.謝謝

setbackbar(54);
settotalbar(55);//是讓腳本先運算多少筆數
value1=RSI(C,5);
value2=highest(value1,55);
if value1 cross Over value2[1] then ret=1;
outputfield(1,value1 cross Over value2[1],"周RSI(55高)");
outputfield(2,value1,"RSI(Close,5)");

排序方式: 標準 | 最新
pure4321 發文於   2024/06/23

假設為日頻率

settotalBar(5); // 指標期數

setbarBack(55,"D"); // 引用筆數

假設為周頻率

settotalBar(5); // 指標期數

setbarBack(55,"W"); // 引用筆數

 

XQ教學在此

https://www.xq.com.tw/lesson/xspractice/%E8%A8%AD%E7%BD%AE%E6%8C%87%E5%AE%9A%E9%A0%BB%E7%8E%87%E5%BC%95%E7%94%A8%E7%AD%86%E6%95%B8%E7%9A%84%E6%87%89%E7%94%A8/

fangchih 發文於   2024/06/23

你好:

我這樣設定

outputfield(2,value1,"RSI(Close,5)");

計算出來的值是跟指標不同...

 

虎科大許教授 發文於   2024/06/23

settotalbar(300);

fangchih 發文於   2024/06/25

感謝許教授~~可以使用了~~

再請教一個問題~~

之前看過你回文~~settotalbar假如設超過kbar...如果長度不夠不會列入計算~~

假如抓RSI(C,5)月線的歷史新高~~

這樣寫選股有的對有的不對~~是否可以請教是什麼原因~~

settotalbar(440);//大盤的月線K棒編號到430..所以設440...想抓所有股票的最大範圍...
if currentBar=12 then value45=RSI(Close,5);//RSI新高紀錄位子
if currentBar>12 and RSI(Close,5)>value45[1] then value45=RSI(Close,5);//RSI新高更新
if c>0 then ret=1;
outputfield(1,currentBar>12 and RSI(Close,5)>value45[1],"月RSI突破");
outputfield(2,value45,"月RSI新高值");
outputfield(3,RSI(Close,5),"RSI(Close,5)");

虎科大許教授 發文於   2024/06/25

計算技術指標,需要足夠的資料計算,指標數值才會正確。資料筆數不夠,XQ只能傳回錯誤的指標數值。以KD指標為例,剛開始K與D都設為50,然後經由公式計算,每一根K棒會得到新的KD。若資料筆數夠多,計算的KD才會與技術分析圖表裡面的KD數值一樣。

  • 按讚來自於
  • Pingzz0719
fangchih 發文於   2024/06/26

我懂意思了..謝謝...修改完都可以找出來了....非常感謝....範圍設大一點果然跑起來都是正確的....

不是大戶 發文於   2024/06/27

上方範圍設大一點果然跑起來都是正確,但是如果要求優化,認同pure4321的答案即可。

XS小編 發文於   2024/07/02

Hello fangchih,

 

有些技術指標在運算時會需要前期運算值,這會導致此種類型的函數需要較長的資料讀取筆數才能夠計算出正確的數值。

您可以參考內建選股腳本的範例,裡面有常見的指標和適合的長度設定。

舉例來說,RSI的話會是 settotalbar(maxlist(Length,6) * 9),也就是9。

需注意的是資料讀取筆數的Bar也會有currentbar的編號,故 if currentBar=12 then ... 這時計算的RSI值一樣會是錯誤的 (不夠長)。

 

感謝 pure4321、虎科大許教授 的回覆。

發表回覆
Close