커뮤니티
참조데이터 사용시 문제점
참조데이터를 사용하고 있는데 메인차트에 피보나치 선을 그리는 지표를 작성하고 있습니다
단독으로 사용할때는 정상적으로 당일날짜에만 나오는데 참조데이터를 사용하는경우에는 과거에 모두 피보나치 라인을 그리고 있어서 답을 찿고 있습니다
Input :
StructLookback(20),
ShowFibo(1),
Show60M10MA(1), // Data2 60분봉 10이평선 표시 여부
Show200M60MA(1); // Data5 200분봉 60이평선 표시 여부
Var :
structInit(0, data1), structDirection(0, data1),
structHigh(0, data1), structLow(0, data1), structRange(0, data1),
structHighStartDate(0, data1), structHighStartTime(0, data1),
structLowStartDate(0, data1), structLowStartTime(0, data1),
isStructLowBroken(False, data1), isStructHighBroken(False, data1),
Fibo786(0, data1), Fibo705(0, data1), Fibo618(0, data1), Fibo500(0, data1), Fibo382(0, data1), Fibo0(0, data1), Fibo1(0, data1),
fTL786(0, data1), fTX786(0, data1), fTL705(0, data1), fTX705(0, data1), fTL618(0, data1), fTX618(0, data1),
fTL500(0, data1), fTX500(0, data1), fTL382(0, data1), fTX382(0, data1), fTL0(0, data1), fTX0(0, data1), fTL1(0, data1), fTX1(0, data1),
fStart_Date(0, data1), fStart_Time(0, data1),
// Data2 (60M 10MA) & Data5 (200M 60MA) 참조데이터 변수
d2_ma10(0, data2), ma60_TL(0, data1),
d5_ma60(0, data5), ma200_TL(0, data1);
// 참조데이터 수식 연산
d2_ma10 = data2(ma(C, 10));
d5_ma60 = data5(ma(C, 60));
// ====================================================================
// 1. 구조체 파동 상태머신 (High/Low 실시간 추적)
// ====================================================================
If structInit == 0 Then
Begin
structHigh = H; structLow = L;
structHighStartDate = sDate; structHighStartTime = sTime;
structLowStartDate = sDate; structLowStartTime = sTime;
structInit = 1;
End;
isStructLowBroken = CrossDown(C, structLow) or (structDirection == 2 and C < structLow);
isStructHighBroken = CrossUp(C, structHigh) or (structDirection == 1 and C > structHigh);
If isStructLowBroken Then
Begin
structDirection = 1;
structHigh = Highest(H, StructLookback); structHighStartDate = sDate; structHighStartTime = sTime;
structLow = L; structLowStartDate = sDate; structLowStartTime = sTime;
End
Else If isStructHighBroken Then
Begin
structDirection = 2;
structHigh = H; structHighStartDate = sDate; structHighStartTime = sTime;
structLow = Lowest(L, StructLookback); structLowStartDate = sDate; structLowStartTime = sTime;
End
Else
Begin
If H > structHigh and (structDirection == 0 or structDirection == 2) Then
Begin
structHigh = H; structHighStartDate = sDate; structHighStartTime = sTime;
End;
If L < structLow and (structDirection == 0 or structDirection == 1) Then
Begin
structLow = L; structLowStartDate = sDate; structLowStartTime = sTime;
End;
End;
structRange = structHigh - structLow;
// ====================================================================
// 2. 방향성 피보나치 7개선 + 우측 수치 라벨 렌더링
// ====================================================================
If ShowFibo == 1 and structHigh > structLow and structLow > 0 Then
Begin
if structDirection == 1 then
{
fStart_Date = structHighStartDate; fStart_Time = structHighStartTime;
}
else
{
fStart_Date = structLowStartDate; fStart_Time = structLowStartTime;
}
if structDirection == 1 then
{
Fibo786 = structHigh - (structRange * 0.214);
Fibo705 = structHigh - (structRange * 0.295);
Fibo618 = structHigh - (structRange * 0.382);
Fibo500 = structHigh - (structRange * 0.500);
Fibo382 = structHigh - (structRange * 0.618);
Fibo0 = structHigh;
Fibo1 = structLow;
}
else
{
Fibo786 = structLow + (structRange * 0.786);
Fibo705 = structLow + (structRange * 0.705);
Fibo618 = structLow + (structRange * 0.618);
Fibo500 = structLow + (structRange * 0.500);
Fibo382 = structLow + (structRange * 0.382);
Fibo0 = structLow;
Fibo1 = structHigh;
}
TL_Delete(fTL786); Text_Delete(fTX786);
fTL786 = TL_New(fStart_Date, fStart_Time, Fibo786, sDate, sTime, Fibo786);
TL_SetColor(fTL786, Cyan); TL_SetStyle(fTL786, 3); TL_SetExtRight(fTL786, true);
fTX786 = Text_New(sDate, sTime, Fibo786, " 0.786(" + NumToStr(Fibo786, 2) + ")");
Text_SetColor(fTX786, Cyan); Text_SetStyle(fTX786, 0, 1);
TL_Delete(fTL705); Text_Delete(fTX705);
fTL705 = TL_New(fStart_Date, fStart_Time, Fibo705, sDate, sTime, Fibo705);
TL_SetColor(fTL705, RED); TL_SetStyle(fTL705, 3); TL_SetExtRight(fTL705, true);
fTX705 = Text_New(sDate, sTime, Fibo705, " 0.705(" + NumToStr(Fibo705, 2) + ")");
Text_SetColor(fTX705, RED); Text_SetStyle(fTX705, 0, 1);
TL_Delete(fTL618); Text_Delete(fTX618);
fTL618 = TL_New(fStart_Date, fStart_Time, Fibo618, sDate, sTime, Fibo618);
TL_SetColor(fTL618, Cyan); TL_SetStyle(fTL618, 3); TL_SetExtRight(fTL618, true);
fTX618 = Text_New(sDate, sTime, Fibo618, " 0.618(" + NumToStr(Fibo618, 2) + ")");
Text_SetColor(fTX618, Cyan); Text_SetStyle(fTX618, 0, 1);
TL_Delete(fTL500); Text_Delete(fTX500);
fTL500 = TL_New(fStart_Date, fStart_Time, Fibo500, sDate, sTime, Fibo500);
TL_SetColor(fTL500, GREEN); TL_SetStyle(fTL500, 3); TL_SetExtRight(fTL500, true);
fTX500 = Text_New(sDate, sTime, Fibo500, " 0.5(" + NumToStr(Fibo500, 2) + ")");
Text_SetColor(fTX500, GREEN); Text_SetStyle(fTX500, 0, 1);
TL_Delete(fTL382); Text_Delete(fTX382);
fTL382 = TL_New(fStart_Date, fStart_Time, Fibo382, sDate, sTime, Fibo382);
TL_SetColor(fTL382, GREEN); TL_SetStyle(fTL382, 3); TL_SetExtRight(fTL382, true);
fTX382 = Text_New(sDate, sTime, Fibo382, " 0.382(" + NumToStr(Fibo382, 2) + ")");
Text_SetColor(fTX382, GREEN); Text_SetStyle(fTX382, 0, 1);
TL_Delete(fTL0); Text_Delete(fTX0);
fTL0 = TL_New(fStart_Date, fStart_Time, Fibo0, sDate, sTime, Fibo0);
TL_SetColor(fTL0, WHITE); TL_SetStyle(fTL0, 3); TL_SetExtRight(fTL0, true);
fTX0 = Text_New(sDate, sTime, Fibo0, " 1.0(" + NumToStr(Fibo0, 2) + ")");
Text_SetColor(fTX0, WHITE); Text_SetStyle(fTX0, 0, 1);
TL_Delete(fTL1); Text_Delete(fTX1);
fTL1 = TL_New(fStart_Date, fStart_Time, Fibo1, sDate, sTime, Fibo1);
TL_SetColor(fTL1, WHITE); TL_SetStyle(fTL1, 3); TL_SetExtRight(fTL1, true);
fTX1 = Text_New(sDate, sTime, Fibo1, " 0.0(" + NumToStr(Fibo1, 2) + ")");
Text_SetColor(fTX1, WHITE); Text_SetStyle(fTX1, 0, 1);
End;
// ====================================================================
// 3. Data2(60M 10MA) 황금색 & Data5(200M 60MA) 보라색 이평선 렌더링
// ====================================================================
If Show60M10MA == 1 Then
Begin
If d2_ma10 > 0 and d2_ma10[1] > 0 Then
Begin
ma60_TL = TL_New(sDate[1], sTime[1], d2_ma10[1], sDate, sTime, d2_ma10);
TL_SetColor(ma60_TL, RGB(255, 215, 0)); TL_SetSize(ma60_TL, 2);
End;
End;
If Show200M60MA == 1 Then
Begin
If d5_ma60 > 0 and d5_ma60[1] > 0 Then
Begin
ma200_TL = TL_New(sDate[1], sTime[1], d5_ma60[1], sDate, sTime, d5_ma60);
TL_SetColor(ma200_TL, RGB(186, 85, 211)); TL_SetSize(ma200_TL, 2);
End;
End;
답변 3
예스스탁 예스스탁 답변
2026-08-07 12:48:24
피리
2026-08-07 13:22:07
예스스탁 예스스탁 답변
2026-08-07 13:23:57