gammas:log(sum(HH-LL,n)/(hhv(h,n)-llv(l,n)))/log(n);
按公式原理,計算上面這一行
在 hhv(h,n)-llv(l,n) 結果為零時,會導致 "除以零" 的意外狀況
這個意外狀況,是有可能導致軟體異常崩潰的!
正常應該要避開 "除以零" 的情形發生!!!
當遇到此情況,gammas 值直接給零
以下是調整修正後的程式:
原碼: n:=6; //請自行調整參數
OO:=(O+ref(c,1))/2;
hh:=Max(H,ref(c,1));
ll:=Min(L,ref(c,1));
CC:=(OO+HH+LL+C)/4;
HL:=hhv(h,n)-llv(l,n);
gammas:if(HL=0,0,log(sum(HH-LL,n)/HL)/log(n));
ZA:=C*0;
L0:=ZA; L1:=ZA; L2:=ZA; L3:=ZA;
for i=n+1 to datacount do begin
L0[i]:=(1-gammas[i])*CC[i]+gammas[i]*L0[i-1];
L1[i]:=-gammas[i]*L0[i] + L0[i-1] + gammas[i]*L1[i-1];
L2[i]:=-gammas[i]*L1[i] + L1[i-1] + gammas[i]*L2[i-1];
L3[i]:=-gammas[i]*L2[i] + L2[i-1] + gammas[i]*L3[i-1];
end;
CU1:=(L0-L1)*(L0>=L1);
CD1:=(L1-L0)*(L0<L1);
CU2:=CU1+(L1-L2)*(L1>=L2);
CD2:=CD1+(L2-L1)*(L1<L2);
CU3:=CU2+(L2-L3)*(L2>=L3);
CD3:=CD2+(L3-L2)*(L2<L3);
LagRSI:CU3/(CU3+CD3);
|