資料長度問題

  •   24 
  • 最後發表   mina2310  3 週前
mina2310 發文於   2026/02/11

你好  我寫了以下的指標  但他說  : 請增加setbackbar或settotalbar長度 或減少腳本計算的資料長度

 可是我嘗試了setTotalBar(3000); 或setTotalBar(300) ; 他都顯示一樣的     請問我該怎麼修改呢?

感謝

 

 

 

Input: currentRATE(4, "無風險利率");

Input: riskRATE(10, "風險貼水");  // 沒有競爭的公司設5, 很多競爭的公司10-15

 

////eps 

if year(getFieldDate("月營收", "M"))-year(getFieldDate("每股稅後淨利(元)", "Q"))=0 then

value3=month(getFieldDate("月營收", "M"))-month(getFieldDate("每股稅後淨利(元)", "Q"))+1   //3-12=-9

else

value3=month(getFieldDate("月營收", "M"))+12-month(getFieldDate("每股稅後淨利(元)", "Q"))+1;

 

 

value88=getField("每股稅後淨利(元)", "Q");

var:i(0);

value30=0;

 

for i= 0 to 42

begin

value30=floor(i/3);    //0 0 //1 0  //2  0   //3  1 

array:mclosearr[42](0);    /////月收盤價

mclosearr[i]=CloseM(i+value3);   ///現在10月 最新財報出爐8/15 出的是456月的財報

 

array:myarr[14](0);                      //季/eps

myarr[value30]=getField("每股稅後淨利(元)", "Q")[value30]+getField("每股稅後淨利(元)", "Q")[value30+1]+getField("每股稅後淨利(元)", "Q")[value30+2]+getField("每股稅後淨利(元)", "Q")[value30+3];

 

Array:PEarr[42](0); 

pearr[i]=mclosearr[i]/myarr[value30];   //0  1

end;

 

 

value10=highestarray(PEarr,42);      //瘋狂本益比

valuE20=lowestArray(peARR,42);   //特價本益比

value30=(value10-value20)/5;

value40=value20+value30;     //便宜本益比

value50=value20+value30*2;    //合理下緣本益比

value60=value20+value30*3;   //合理上緣本益比

value70=value20+value30*4;     //昂貴本益比

value80=average(getField("本益比", "D"),60);      ////rolling本益比

 

 

 

///////////////////預估Eps///////////////////////////////////

 

VALUE100=GETField("累計營收年增率", "M");// 最新累計營收年增率

VALUE101=CURRENTDate;

VALUE102=GETField("累計營收", "M");

value77=month(getFieldDate("月營收", "M"));//10 9

value110=value77;  //8

 

 

VALUE105=GETField("累計營收", "M")[VALUE110];   //去年全年營收 億元

value44=month(getFieldDate("累計營收", "M"));   //9

value47=12-value44;   //3

value120=GETField("累計營收", "M")+value47*(1+value100/100)*value105/12;   //今年營收預估值

                                   //3 //累計營收年增率//去年營收

 

 

//VALUE120=VALUE105*(1+VALUE100/100);   //今年營收預估值

VALUE121=GETFIeld("稅後淨利率", "Q");

VALUE128=GETFIeld("稅後淨利率", "Q")+gETFIeld("稅後淨利率", "Q")[1]+gETFIeld("稅後淨利率", "Q")[2]+gETFIeld("稅後淨利率", "Q")[3];

value129=value128/4;

VALUE122=VALUE120*VALUE129/100;    //今年估淨利  億元

VALUE133=GETField("發行張數(張)", "D");

 

value134=VALUE122*100000000/(VALUE133*1000)*0.9;  //保守估今年eps

VALUE135= VALUE122*100000000/(VALUE133*1000);   //估今年EPS

 

value136=rates(currentRATE,riskRATE);

value137=1-value136;

 

VALUE200=value20*VALUE135*(1-value136);    //特價

VALUE201=value40*VALUE135*(1-value136);    //便宜

VALUE202=value50*VALUE135*(1-value136);    //合理下緣

VALUE203=value60*VALUE135*(1-value136);   //合理上緣

VALUE204=value70*VALUE135*(1-value136);     //昂貴

VALUE205=VALUE10*VALUE135*(1-value136);      //瘋狂

value207=value80*VALUE135*(1-value136);

 

if close<value200 then value155=1111

else if close<value201 and close>value200 then value155=222

else if close<value202 and close>value201 then value155=33

else

value155=0;

 

value66=value10-value20;

plot1(value155,"順序");

plot2(GetSymbolInfo("有可轉債"),"可轉債");

plot3(value200,"特價");

plot4(value201,"便宜價");

plot5(value202,"合理下緣");

plot6(value203,"合理上緣");

plot7(value204,"昂貴");

plot8(value205,"瘋狂");

plot9(value207,"rolling價");

plot10(getField("本益比", "D"),"本益比");

plot11(value100,"累積成長率");

plot12(value88,"單季eps");

plot13(value134,"保守估今年eps");

plot15(value66,"PE高低差");

 

 

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2026/02/11

你沒有提供自訂函數rates,無法幫你測試。你可以自行編譯該指標腳本,然後看看哪一行程式碼出錯,且出錯的訊息是什麼。

mina2310 發文於   2026/02/11

rates自訂函數如下

 

input:newrates(numericSimple); 

input:risk(numericSimple); 

 

value1=0; //無風險利率  

value2=newrates; //變動後無風險利率  也就是當前利率

value3=risk;  //風險貼水  沒有競爭的公司設5, 很多競爭的公司10-15

//兩種狀態下的折現率

value4=value1+value3;

value5=value2+value3;

 

value6=10;  //每年獲利

 

//20年獲利折現5.25%

var:i(0),j(0);

for i= 1 to 20

Value100= value100 + value6/Power(1+value4/100, i);

 

for j= 1 to 20

value200=value200+ value6/Power(1+value5/100, j);

 

rates= (value100-value200)/value100;

 

腳本是可以編譯的 但在圖上顯示的時候 他就顯示 請增加setbackbar或settotalbar長度 或減少腳本計算的資料長度

 

謝謝教授 麻煩了

 

虎科大許教授 發文於   2026/02/12

(1)由於myarr[value30]可能為0,因此mclosearr[i]/myarr[value30]會有除以0的錯誤。

(2)最大問題出在 myarr[value30]。陣列的第一個元素索引值為1,你迴圈從0開始跑,當value30等於0時,就會出現你提及的錯誤。

 

mina2310 發文於   2026/02/13

感謝   

我把索引值改為1,然後把 value30=floor(i/3);  改成 value30=floor(i/3.1)

這樣線圖就可以跑出來了 感謝

發表回覆
Close