could look more like that :

//===== Ehlers Autocorrelation Periodogram =====

function run()
{
vars Price = series(price());

var LowCutoff = 10;
var HighCutoff = 48;
vars RoofPrice = series(Roof(Price, LowCutoff, HighCutoff));
vars RoofPriceAGC = series(AGC(RoofPrice, 1));

var corr[48];
int lag;
int AvgLength = 0;
int M;
for (lag = 0; lag <= HighCutoff; lag++)
{
if (AvgLength == 0)
M = lag;
else M = AvgLength;

corr[lag] = Correlation(RoofPriceAGC, RoofPriceAGC+lag, M);
}
var cosinePart[HighCutoff+1];
var sinePart[HighCutoff+1];
var sqSum[HighCutoff+1];
int period;
int N;
for (period = LowCutoff; period <= HighCutoff; period++)
{
for (N = 3; N <= HighCutoff; N++)
{
cosinePart[period] = cosinePart[period] + corr[N]*cos(2*N*PI/period);
sinePart[period] = sinePart[period] + corr[N]*sin(2*N*PI/period);
}
sqSum[period] = cosinePart[period]*cosinePart[period] + sinePart[period]*sinePart[period];
}
var R[2][HighCutoff+1];
for (period = LowCutoff; period <= HighCutoff; period++)
{
R[1][period] = R[0][period];
R[0][period] = 0.2*sqSum[period]*sqSum[period] + 0.8*R[1][period];
}
vars maxPwr = series(0);
maxPwr[0] = 0.995*maxPwr[1];
for (period = LowCutoff; period <= HighCutoff; period++)
{
if (R[0][period] > maxPwr[0])
maxPwr[0] = (R[0][period]);
}
var pwr[HighCutoff+1];
for (period = LowCutoff; period <= HighCutoff; period++)
{
pwr[period] = R[0][period] / maxPwr[0];
}
var Spx = 0;
var Sp = 0;
var DomPer; //Dominant cycle period
for (period = LowCutoff; period <= HighCutoff; period++)
{
if (pwr[period] >= 0.5)
{
Spx = Spx + period*pwr[period];
Sp = Sp + pwr[period];
}
}
if (Sp != 0)
DomPer = Spx/Sp;

plot("DominantCyclePeriod", DomPer, NEW, BLUE);


}