自寫乖離率的問題

  •   358 
  • 最後發表   Eddie Rich  2021 七月 22
Eddie Rich 發文於   2021/07/17

XQ大大您好,我想寫一個跟主力成本線的乖離率的XS計算,在大部分的個股都可以正常顯示,但在部分個股,卻出現要我檢查分母是否為零,但我怎麼檢查,都沒有發現分母為0的狀況,例如7/16的2034允強就可以正常顯示,但7/16的1218泰山就無法顯示,所以想請XQ大大幫忙檢查看看,謝謝。

input:period(40,"期數");

if barfreq = "Tick" or barfreq = "Min"
    then raiseruntimeerror("不支援此頻率");

value1=GetField("主力買張");
value2=(o+h+l+c)/4;

value3=value1*value2;//做多金額

if summation(value1,period)<>0 then
    value4=summation(value3,period)/summation(value1,period);


Var:BiasMain(0);
BiasMain = (close - value4) / value4 ;

plot1(BiasMain,"主力作多乖離"); 

排序方式: 標準 | 最新
Eddie Rich 發文於   2021/07/17

然後我剛剛試著把主力成本線的程式碼,轉成選股的腳本,一樣的程式碼(除了Ret部分不同),在同一根K棒下,但是在選股介面跟查價視窗所顯示的主力成本線的數值卻不同,這部份真的想不通.......

 

有勞XQ大大解答,感謝~

Eddie Rich 發文於   2021/07/17

附上程式碼

input:period(40,"期數");

if barfreq = "Tick" or barfreq = "Min"
    then raiseruntimeerror("不支援此頻率");

value1=GetField("主力買張");
value2=(o+h+l+c)/4;

value3=value1*value2;//做多金額

if summation(value1,period)<>0 then
    value4=summation(value3,period)/summation(value1,period);

plot1(value1,"主力買張");
plot2(value2,"四均價");
plot3(value3,"做多金額");
plot4(value4,"主力作多成本線");
 
input:period(40,"期數");

if barfreq = "Tick" or barfreq = "Min"
    then raiseruntimeerror("不支援此頻率");

value1=GetField("主力買張");
value2=(o+h+l+c)/4;

value3=value1*value2;//做多金額

if summation(value1,period)<>0 then
    value4=summation(value3,period)/summation(value1,period);

if Value4 >0 then ret=1;

OutputField1(value4,2,"主力成本",order :=-1);

Eddie Rich 發文於   2021/07/20

XQ大大您好,請問這題有解嗎...

謝謝

XQ小幫手 發文於   2021/07/20

Hello Eddie Rich,

 

分母為0的問題,小幫手猜測應該是15, 16行的計算導致。

建議您可以將第16行修改為:

if value4 <> 0 then BiasMain = (close - value4) / value4 else BiasMain = 0;

 

第二個的數值不同的問題是因為您使用的資料讀取筆數不足。

您的期數設為40期,但是小幫手猜測您選股策略只用了預設的10筆。

建議您將期調整成40或以上即可。

附圖供您參考。

附加文件

Eddie Rich 發文於   2021/07/20

感謝XQ大大,兩個問題都解決了~

 

比較讓我困惑的是,分母為0的問題,之前我自己嘗試除錯的時候,有確認過value4的值,明明不是0,但剛剛改成XQ大大的寫法後,竟然就解決了,感到非常驚訝哈哈......

 

 

再來就是期數部份的問題,第一次知道那邊要改......

所以說,那邊的數據更改的標準是甚麼呢? 可勞煩XQ大大稍微講解一下嗎? 謝謝

XQ小幫手 發文於   2021/07/22

Hello Eddie Rich,

 

小幫手會判斷您需要40筆或以上的資料主要是您的input有設40且運用在summation上。

這會導致您需要往前40筆的資訊才能正確運算出當下那一根的數值。

如果是預設的10筆會因為資料不足導致運算錯誤。

資料筆數的說明您可以參考此篇文章

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