Chu kỳ sẽ định vị cốt truyện theo sự xuất hiện cụ thể của chu kỳ. Giá trị 0 (Mặc định) sẽ định vị ô ở đầu chu kỳ cuối cùng trong dữ liệu và sẽ hiển thị phép ngoại suy thành các ngày trong tương lai cho nhiều thanh như bạn đã xác định trong Tùy chọn AB

// RescalePrice = Yes will rescale the price data to the computed cycle ( usually not necessary )
CycleLength = Param(“Cycle Length”, 208, 2, 10000, 1);
OffsetBars = Param(“Offset Bars”, 17, 0, 10000, 1);
OffsetCycles = Param(“Shift Cycles”, 0, 0, 1000, 1);
Separators = Param(“Separators Every ? Bars”, 52, 0, 100, 1);
GraphXSpace = Param(“GraphXSpace”, 5, 0, 100, 1);
RescalePrice = ParamList(“Rescale Price ?”, “No|Yes”);
SpecialData = ParamList(“Year in Vol AND Month in OI ?”, “No|Yes”);
CPISym = “”;//”CNPI-“;//”CPI_1800”;
OffsetBars = OffsetBars + CycleLength;
OffsetCycles = OffsetCycles – 1;
Cum1 = Cum(1) – 1;
LVC1 = LastValue(Cum1);
if (OffsetCycles < 0)
OffsetCycles = int(LVC1 / CycleLength);
if (OffsetCycles < 0)
OffsetCycles = 0;
Index = IIf(BarIndex() == 0, L, IIf(L < Ref(L, -1), L, IIf(H > Ref(H, -1), H, C)));
if (SpecialData == “Yes”)
{
YYYY = V;
MM = OI;
}
else
{
YYYY = Year();
MM = Month();
}
YYYYMM = 100 * YYYY + MM;
if (CPISym != “”)
CPI = Foreign(CPISym, “C”);
else
CPI = Cum(0) + 1;
IndexCD = Index / CPI;
ii = IIf(Cum1 < OffsetBars + 1, 0, int((Cum1 – OffsetBars – 1) / CycleLength) * CycleLength + OffsetBars);
iii = BarsSince(ii != Ref(ii, -1)) + OffsetBars + 1;
Za = Cum(0);
Zg = Cum(0) + 1;
N = Cum(0);
for (i = OffsetBars + 1; i < BarCount; i++)
{
Y[i] = IndexCD[i] / IndexCD[ii[i]];
Za[iii[i]] = Za[iii[i]] + Y[i]; Zg[iii[i]] = Zg[iii[i]] * Y[i]; N[iii[i]] = N[iii[i]] + 1;
}
ZZa = IIf(Cum1 > OffsetBars AND
Cum1 <= CycleLength + OffsetBars, Za / N, -1e10); ZZg = IIf(Cum1 > OffsetBars AND
Cum1 <= CycleLength + OffsetBars, Zg ^ (1 / N), -1e10);
ZZa[OffsetBars] = 1;
ZZg[OffsetBars] = 1;
ZZZa = NOT IsEmpty(Ref(ZZa, -1)) AND (BarsSince(IsEmpty(Ref(ZZa, -1)))) % Separators – 1 == 0;
ZZZg = NOT IsEmpty(Ref(ZZg, -1)) AND (BarsSince(IsEmpty(Ref(ZZg, -1)))) % Separators – 1 == 0;
Price = IIf(IsEmpty(Ref(ZZa, CycleLength)), -1e10, Ref(IndexCD, CycleLength * OffsetCycles));
PMult = LastValue(Highest(IIf(IsEmpty(Ref(Price, -1)) AND NOT IsEmpty(Price), 1 / Price, 0)));
Price = IIf(Cum1 > LVC1 – CycleLength * OffsetCycles, -1e10, Price * PMult);
if (RescalePrice == “Yes”)
{
Factor = log10(LastValue(Highest(ZZa))) / log10(LastValue(Highest(Price)));
Price = Price ^ Factor;
}
MinPlot = LastValue(Min(Lowest(IIf(ZZa > 0, ZZa, 1)), Lowest(IIf(Price > 0, Price, 1))));
MaxPlot = LastValue(Max(Highest(ZZa), Highest(Price)));
Plot(MinPlot, “”, colorDefault, styleNoDraw);
Plot(MaxPlot, “”, colorDefault, styleNoDraw);
Plot(Ref(ZZg, CycleLength), “”, colorRed, styleThick, Null, Null, CycleLength * OffsetCycles);
Plot(Ref(ZZa, CycleLength), “”, colorBlue, styleThick, Null, Null, CycleLength * OffsetCycles);
Plot(Price, “”, colorBrightGreen, styleThick, Null, Null, CycleLength * OffsetCycles);
Plot(IIf(Ref(ZZZa, CycleLength), 2, 1), “”, colorLightBlue, styleHistogram | styleNoLabel | styleOwnScale, 1, 2, CycleLength * OffsetCycles);
if (Separators > 0)
for (i = 1; i <= int(CycleLength / Separators); i++)
{
PlotText(NumToStr(i, 1.0), CycleLength * OffsetCycles + OffsetBars + int((i – 0.5) * Separators) – CycleLength + 1, MinPlot, colorWhite);
}
Title = “Cycle Number = ” + EncodeColor(colorWhite) + NumToStr(OffsetCycles + 1, 1.0) + ” ” + EncodeColor(colorLightBlue) +
“Cycle Length = ” + EncodeColor(colorWhite) + NumToStr(CycleLength, 1.0) + ” ” + EncodeColor(colorLightBlue) +
“Price = ” + EncodeColor(colorBrightGreen) + NumToStr(Ref(Price, -CycleLength * OffsetCycles), 1.3) + ” ” + EncodeColor(colorLightBlue) +
“Geometric = ” + EncodeColor(colorRed) + NumToStr(Ref(ZZg, – (CycleLength * OffsetCycles) + CycleLength), 1.3) + ” ” + EncodeColor(colorLightBlue) +
“Arithmetic = ” + EncodeColor(colorBlue) + NumToStr(Ref(ZZa, – (CycleLength * OffsetCycles) + CycleLength), 1.3);
SetOption(“NoDefaultColumns”, True);
Filter = 1;
AddColumn(YYYY, “YYYY”, 1.0);
AddColumn(MM, “MM”, 1.0);
AddColumn(YYYYMM, “YYYY-MM”, 1.0);
AddColumn(Cum1, “Cum1”, 1.0);
AddColumn(Index, “Index”, 1.5);
AddColumn(CPI, “CPI”, 1.5);
AddColumn(IndexCD, “Index CD”, 1.5);
AddColumn(ii, “ii”, 1.0);
AddColumn(Y, “Y”, 1.5);
AddColumn(iii, “iii”, 1.0);
AddColumn(Za, “Za”, 1.5);
AddColumn(N, “N”, 1.0);
AddColumn(ZZa, “ZZa”, 1.5);
AddColumn(PMult, “PMult”, 1.5);
Leave a Reply
You must be logged in to post a comment.