Roy: One other thing: If you eliminate this line from the if statement:
j<0 and // eliminate first pass thru loop you can get the moves up in slope for the final day (the last trading day).
I took it out with slashes:
//j<0 and // eliminate first pass thru loop
With j in date(j), do you need it now? The scan appears to work fine without it, and the values match those in Metastock.
So your scan is now:
//Slope formula by Bob Jagow //Back-testing version by Roy Yorgensen output = "linregslope.lst";
issuetype common; Daystoload = 50; integer i,j, S, Sx, Sxx; float b,b1, Sxy, Sy; b1:=0; // only initialized first time for j = 0 to -10 step -1 do // reset all variables at stat of next loop S := 21; Sx := 0; Sxx := 0; Sxy := 0; Sy := 0; for i = j+(1 - S) to j do Sx := Sx + i; Sy := Sy + close(i); //kills println wo d2ld Sxx := Sxx + i*i; Sxy := Sxy + i*close(i); //kills println wo d2ld //Sxy := Sxy + i*close(0); next i; b := (S*Sxy - Sx*Sy)/(S*Sxx - Sx*Sx); if //j<=0 and // eliminate first pass thru loop b< b1 then println symbol,",", date(j),",",close(0):8:2,",",b:8:4; b1:=b; // save current for next test else b1:=b; // must alway set ot last day's val endif; next j; |