커뮤니티

파라볼릭 박스

프로필 이미지
고성
2026-01-15 07:16:56
47
글번호 229818
답변완료

첨부 이미지

아래 차트의 선만 있을 때는  박스 오류가 안보이는데,  (근본적인 한계인지?)

윗 차트의 박스를 주가 상하단에 맞춰 왼쪽으로 옮기니, 상하가 일치하지 않습니다.

선물 400틱 차트입니다. 검토 부탁드립니다.

Input : af(0.02), maxAF(0.2);

var : T(0),TL(0),B(0),S(0),tx(0),txx(0),HH(0),HD(0),HT(0),LL(0),LD(0),LT(0),box(0);

var : B1(0),B2(0),S1(0),S2(0),H1(0),H2(0),L1(0),L2(0);

var : tx1(0),tx2(0),tx3(0),tx4(0),tx5(0),tx6(0);

var1 = CSar(af,maxAF);

plot1(var1, "CSAR",IFF(c>var1,Red,Green));

if CrossUp(C,var1) Then

{

B = var1;

T = 1;

B1 = B[1];

B2 = B1[1];

HD = sDate;

HT = sTime;

HH = H;

H1 = HH[1];

H2 = H1[1];

if LL > 0 Then

box = Box_New(LD,LT,LL,HD,HT,HH);

if abs(S-LL) < 1.25 Then

Text_Delete(tx);

tx = Text_New(sDate,sTime,HH,NumToStr(abs(HH-B),2));

Text_SetColor(tx,Red);

Text_SetSize(tx,22);

Text_SetStyle(tx,1,1);

Text_SetBold(tx,1);

Condition1 = False;

}

if CrossDown(C,var1) Then

{

S = var1;

T = -1;

S1 = S[1];

S2 = S1[1];

LD = sDate;

LT = sTime;

LL = L;

L1 = LL[1];

L2 = L1[1];

if HH > 0 Then

box = Box_New(HD,HT,HH,LD,LT,LL);

if abs(B-HH) < 1.25 Then

Text_Delete(tx);

tx = Text_New(sDate,sTime,LL,NumToStr(abs(LL-S),2));

Text_SetColor(tx,Blue);

Text_SetSize(tx,22);

Text_SetStyle(tx,1,0);

Text_SetBold(tx,1);

Condition1 = False;

}

Else

{

if T == 1 Then

{

if H >= HH Then

{

HD = sDate;

HT = sTime;

HH = H;

}

Text_SetString(tx,NumToStr(abs(HH-B),2));

Text_SetLocation(tx,sDate,sTime,HH);

Box_SetEnd(box,HD,HT,HH);

if HH < LL+1.5 Then

{

Box_SetColor(box,Magenta);

Box_SetFill(box,true,60);

}

Else if HH >= LL+1.5 and HH < LL+3.5 Then

{

Box_SetColor(box,Gray);

Box_SetFill(box,true,60);

}

Else

{

Box_SetColor(box,Orange);

Box_SetFill(box,true,40);

}

if abs(HH-LL) >= 2 Then

{

if Condition1 == False Then

{

Condition1 = true;

tx1 = Text_New(HD,HT,HH+abs(HH-LL)*0.618,"●");

tx2 = Text_New(HD,HT,HH+abs(HH-LL)*1.000,"●");

tx3 = Text_New(HD,HT,HH+abs(HH-LL)*1.618,"●");

Text_SetStyle(tx1,2,2);

Text_SetStyle(tx2,2,2);

Text_SetStyle(tx3,2,2);

Text_SetColor(tx1,Red);

Text_SetColor(tx2,Blue);

Text_SetColor(tx3,Red);

tx4 = Text_New(HD,HT,LL-abs(HH-LL)*0.618,"●");

tx5 = Text_New(HD,HT,LL-abs(HH-LL)*1.000,"●");

tx6 = Text_New(HD,HT,LL-abs(HH-LL)*1.618,"●");

Text_SetStyle(tx4,2,2);

Text_SetStyle(tx5,2,2);

Text_SetStyle(tx6,2,2);

Text_SetColor(tx4,Red);

Text_SetColor(tx5,Blue);

Text_SetColor(tx6,Red);

}

Else

{

Text_SetLocation(tx1,HD,HT,HH+abs(HH-LL)*0.618);

Text_SetLocation(tx2,HD,HT,HH+abs(HH-LL)*1.000);

Text_SetLocation(tx3,HD,HT,HH+abs(HH-LL)*1.618);

Text_SetLocation(tx4,HD,HT,LL-abs(HH-LL)*0.618);

Text_SetLocation(tx5,HD,HT,LL-abs(HH-LL)*1.000);

Text_SetLocation(tx6,HD,HT,LL-abs(HH-LL)*1.618);

}

}

}

if T == -1 Then

{

if L <= LL Then

{

LD = sDate;

LT = sTime;

LL = L;

}

Text_SetString(tx,NumToStr(abs(LL-S),2));

Text_SetLocation(tx,sDate,sTime,LL);

Box_SetEnd(box,LD,LT,LL);

if LL > HH-1.5 Then

{

Box_SetColor(box,Lime);

Box_SetFill(box,true,80);

}

Else if LL <= HH-1.5 and LL > HH-3.5 Then

{

Box_SetColor(box,Cyan);

Box_SetFill(box,true,70);

}

Else

{

Box_SetColor(box,Cyan);

Box_SetFill(box,true,50);

}

if abs(HH-LL) >= 2 Then

{

if Condition1 == False Then

{

Condition1 = true;

tx1 = Text_New(LD,LT,HH+abs(HH-LL)*0.618,"●");

tx2 = Text_New(LD,LT,HH+abs(HH-LL)*1.000,"●");

tx3 = Text_New(LD,LT,HH+abs(HH-LL)*1.618,"●");

Text_SetStyle(tx1,2,2);

Text_SetStyle(tx2,2,2);

Text_SetStyle(tx3,2,2);

Text_SetColor(tx1,Red);

Text_SetColor(tx2,Blue);

Text_SetColor(tx3,Red);

tx4 = Text_New(LD,LT,LL-abs(HH-LL)*0.618,"●");

tx5 = Text_New(LD,LT,LL-abs(HH-LL)*1.000,"●");

tx6 = Text_New(LD,LT,LL-abs(HH-LL)*1.618,"●");

Text_SetStyle(tx4,2,2);

Text_SetStyle(tx5,2,2);

Text_SetStyle(tx6,2,2);

Text_SetColor(tx4,Red);

Text_SetColor(tx5,Blue);

Text_SetColor(tx6,Red);

}

Else

{

Text_SetLocation(tx1,LD,LT,HH+abs(HH-LL)*0.618);

Text_SetLocation(tx2,LD,LT,HH+abs(HH-LL)*1.000);

Text_SetLocation(tx3,LD,LT,HH+abs(HH-LL)*1.618);

Text_SetLocation(tx4,LD,LT,LL-abs(HH-LL)*0.618);

Text_SetLocation(tx5,LD,LT,LL-abs(HH-LL)*1.000);

Text_SetLocation(tx6,LD,LT,LL-abs(HH-LL)*1.618);

}

}

}

}




지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-01-15 14:26:51

안녕하세요 예스스탁입니다. 현재 수식이 상승구간의 최고가, 하락구간의 최저가 기준입니다. 상승구간에서 최고가 이후의 최저가가 하락구간의 최저가보다 작거나, 하락구간에서 최저가 이후의 최고가가 상승구간의 최고가보다 높은 것은 고려하지 않습니다. 단지 해당 값까지 박스를 위아래 늘리는 부분은 아래와 같이 작성하시면 되지만 박스의 끝을 해당 값에 맞춰야 하면 상승/하락구간이 모호해서 처리해 드리기 어렵습니다. Input : af(0.02), maxAF(0.2); var : T(0),TL(0),B(0),S(0),tx(0),txx(0),HH(0),HD(0),HT(0),LL(0),LD(0),LT(0),box(0); var : B1(0),B2(0),S1(0),S2(0),H1(0),H2(0),L1(0),L2(0); var : tx1(0),tx2(0),tx3(0),tx4(0),tx5(0),tx6(0); var : hl(0),lh(0); var1 = CSar(af,maxAF); plot1(var1, "CSAR",IFF(c>var1,Red,Green)); if CrossUp(C,var1) Then { B = var1; T = 1; B1 = B[1]; B2 = B1[1]; HD = sDate; HT = sTime; HH = iff(lh == 0,H,max(H,lh)); hl = l; H1 = HH[1]; H2 = H1[1]; if LL > 0 Then box = Box_New(LD,LT,LL,HD,HT,HH); if abs(S-LL) < 1.25 Then Text_Delete(tx); tx = Text_New(sDate,sTime,HH,NumToStr(abs(HH-B),2)); Text_SetColor(tx,Red); Text_SetSize(tx,22); Text_SetStyle(tx,1,1); Text_SetBold(tx,1); Condition1 = False; } else if CrossDown(C,var1) Then { S = var1; T = -1; S1 = S[1]; S2 = S1[1]; LD = sDate; LT = sTime; LL = IFf(hl==0,L,min(HL,L)); lh = h; L1 = LL[1]; L2 = L1[1]; if HH > 0 Then box = Box_New(HD,HT,HH,LD,LT,LL); if abs(B-HH) < 1.25 Then Text_Delete(tx); tx = Text_New(sDate,sTime,LL,NumToStr(abs(LL-S),2)); Text_SetColor(tx,Blue); Text_SetSize(tx,22); Text_SetStyle(tx,1,0); Text_SetBold(tx,1); Condition1 = False; } Else { if T == 1 Then { if H >= HH Then { HD = sDate; HT = sTime; HH = H; hl = l; } if l < hl Then hl = l; Text_SetString(tx,NumToStr(abs(HH-B),2)); Text_SetLocation(tx,sDate,sTime,HH); Box_SetEnd(box,HD,HT,HH); if HH < LL+1.5 Then { Box_SetColor(box,Magenta); Box_SetFill(box,true,60); } Else if HH >= LL+1.5 and HH < LL+3.5 Then { Box_SetColor(box,Gray); Box_SetFill(box,true,60); } Else { Box_SetColor(box,Orange); Box_SetFill(box,true,40); } if abs(HH-LL) >= 2 Then { if Condition1 == False Then { Condition1 = true; tx1 = Text_New(HD,HT,HH+abs(HH-LL)*0.618,"●"); tx2 = Text_New(HD,HT,HH+abs(HH-LL)*1.000,"●"); tx3 = Text_New(HD,HT,HH+abs(HH-LL)*1.618,"●"); Text_SetStyle(tx1,2,2); Text_SetStyle(tx2,2,2); Text_SetStyle(tx3,2,2); Text_SetColor(tx1,Red); Text_SetColor(tx2,Blue); Text_SetColor(tx3,Red); tx4 = Text_New(HD,HT,LL-abs(HH-LL)*0.618,"●"); tx5 = Text_New(HD,HT,LL-abs(HH-LL)*1.000,"●"); tx6 = Text_New(HD,HT,LL-abs(HH-LL)*1.618,"●"); Text_SetStyle(tx4,2,2); Text_SetStyle(tx5,2,2); Text_SetStyle(tx6,2,2); Text_SetColor(tx4,Red); Text_SetColor(tx5,Blue); Text_SetColor(tx6,Red); } Else { Text_SetLocation(tx1,HD,HT,HH+abs(HH-LL)*0.618); Text_SetLocation(tx2,HD,HT,HH+abs(HH-LL)*1.000); Text_SetLocation(tx3,HD,HT,HH+abs(HH-LL)*1.618); Text_SetLocation(tx4,HD,HT,LL-abs(HH-LL)*0.618); Text_SetLocation(tx5,HD,HT,LL-abs(HH-LL)*1.000); Text_SetLocation(tx6,HD,HT,LL-abs(HH-LL)*1.618); } } } if T == -1 Then { if L <= LL Then { LD = sDate; LT = sTime; LL = L; lh = h; } if h>lh Then lh = h; Text_SetString(tx,NumToStr(abs(LL-S),2)); Text_SetLocation(tx,sDate,sTime,LL); Box_SetEnd(box,LD,LT,LL); if LL > HH-1.5 Then { Box_SetColor(box,Lime); Box_SetFill(box,true,80); } Else if LL <= HH-1.5 and LL > HH-3.5 Then { Box_SetColor(box,Cyan); Box_SetFill(box,true,70); } Else { Box_SetColor(box,Cyan); Box_SetFill(box,true,50); } if abs(HH-LL) >= 2 Then { if Condition1 == False Then { Condition1 = true; tx1 = Text_New(LD,LT,HH+abs(HH-LL)*0.618,"●"); tx2 = Text_New(LD,LT,HH+abs(HH-LL)*1.000,"●"); tx3 = Text_New(LD,LT,HH+abs(HH-LL)*1.618,"●"); Text_SetStyle(tx1,2,2); Text_SetStyle(tx2,2,2); Text_SetStyle(tx3,2,2); Text_SetColor(tx1,Red); Text_SetColor(tx2,Blue); Text_SetColor(tx3,Red); tx4 = Text_New(LD,LT,LL-abs(HH-LL)*0.618,"●"); tx5 = Text_New(LD,LT,LL-abs(HH-LL)*1.000,"●"); tx6 = Text_New(LD,LT,LL-abs(HH-LL)*1.618,"●"); Text_SetStyle(tx4,2,2); Text_SetStyle(tx5,2,2); Text_SetStyle(tx6,2,2); Text_SetColor(tx4,Red); Text_SetColor(tx5,Blue); Text_SetColor(tx6,Red); } Else { Text_SetLocation(tx1,LD,LT,HH+abs(HH-LL)*0.618); Text_SetLocation(tx2,LD,LT,HH+abs(HH-LL)*1.000); Text_SetLocation(tx3,LD,LT,HH+abs(HH-LL)*1.618); Text_SetLocation(tx4,LD,LT,LL-abs(HH-LL)*0.618); Text_SetLocation(tx5,LD,LT,LL-abs(HH-LL)*1.000); Text_SetLocation(tx6,LD,LT,LL-abs(HH-LL)*1.618); } } } } 즐거운 하루되세요