Hi all
need your help in Point & Figure for exploration please
i get the idea from
SetBarsRequired(100000, 100000);
// === USER SETTINGS ===
boxSize = 1; // Can be set from 0.01 to 200000+
reversal = 3;
boxRevAmt = boxSize * reversal;
// === ARRAYS ===
ColNum = Null;
BoxDir = Null;
BoxLevel = Null;
FlipLog = Null;
BoxCount = Null;
curCol = 0;
curDir = 0;
curTop = C[0];
curBot = C[0];
ColNum[0] = 0;
BoxDir[0] = 0;
BoxLevel[0] = C[0];
BoxCount[0] = 1;
FlipLog[0] = 0;
for (i = 1; i < BarCount; i++)
{
H_ = H[i];
L_ = L[i];
flipToO = (curDir == 1) AND (L_ <= curTop - boxRevAmt);
flipToX = (curDir == -1) AND (H_ >= curBot + boxRevAmt);
if (curDir == 0) // First direction detection
{
if (H_ >= C[i - 1] + boxRevAmt)
{
curDir = 1;
curTop = H_;
curBot = curTop - boxSize;
}
else if (L_ <= C[i - 1] - boxRevAmt)
{
curDir = -1;
curBot = L_;
curTop = curBot + boxSize;
}
}
if (flipToO)
{
curDir = -1;
curCol++;
curBot = L_;
curTop = curBot + boxSize;
ColNum[i] = curCol;
BoxDir[i] = curDir;
BoxLevel[i] = curTop - boxSize;
BoxCount[i] = 1;
FlipLog[i] = -1;
}
else if (flipToX)
{
curDir = 1;
curCol++;
curTop = H_;
curBot = curTop - boxSize;
ColNum[i] = curCol;
BoxDir[i] = curDir;
BoxLevel[i] = curBot + boxSize;
BoxCount[i] = 1;
FlipLog[i] = 1;
}
else
{
newBoxes = 0;
if (curDir == 1 AND H_ >= curTop + boxSize)
{
newBoxes = Floor((H_ - curTop) / boxSize);
curTop += newBoxes * boxSize;
}
else if (curDir == -1 AND L_ <= curBot - boxSize)
{
newBoxes = Floor((curBot - L_) / boxSize);
curBot -= newBoxes * boxSize;
}
ColNum[i] = curCol;
BoxDir[i] = curDir;
BoxLevel[i] = IIf(curDir == 1, curTop - boxSize, curBot + boxSize);
BoxCount[i] = IIf(newBoxes > 0, newBoxes, BoxCount[i - 1]);
FlipLog[i] = 0;
}
// Forward-fill if null
if (IsNull(BoxDir[i])) BoxDir[i] = BoxDir[i - 1];
if (IsNull(ColNum[i])) ColNum[i] = ColNum[i - 1];
if (IsNull(BoxLevel[i])) BoxLevel[i] = BoxLevel[i - 1];
if (IsNull(BoxCount[i])) BoxCount[i] = BoxCount[i - 1];
if (IsNull(FlipLog[i])) FlipLog[i] = 0;
}
// === EXPLORATION ===
Filter = 1;
AddColumn(DateTime(), "Date", formatDateTime);
AddColumn(H, "High", 1.2);
AddColumn(L, "Low", 1.2);
AddColumn(C, "Close", 1.2);
AddColumn(ColNum, "Column#", 1);
AddColumn(BoxCount, "Box#", 1);
AddColumn(BoxLevel, "BoxLevel", 1.2);
// Fix: Convert box direction to number/text
AddColumn(BoxDir, "BoxDir (Num)", 1);
AddTextColumn(WriteIf(BoxDir == 1, "X", WriteIf(BoxDir == -1, "O", "NA")), "P&F Dir");
// Fix: Flip signal per bar
AddColumn(FlipLog, "Flip Code", 1);
AddTextColumn(WriteIf(FlipLog == 1, "Flip to X", WriteIf(FlipLog == -1, "Flip to O", "")), "Flip Signal");
// === DEBUG Columns ===
AddColumn(boxRevAmt, "Box Reversal Amt", 1.2);
AddColumn(curTop, "curTop", 1.2);
AddColumn(curBot, "curBot", 1.2);
some of the colomun not show the correct value and some empty colmun .
any help to fix the code please .
thank you