커뮤니티

중심선 연장

프로필 이미지
요타
2026-05-15 06:50:07
81
글번호 232047
답변완료


ㅇ  좋은 주말 되십시요.

ㅇ  아래 로직에서  TL3 수평선을 기본으로 우측 50봉 까지 출력 되게 부탁 드림니다.50봉 넘으면 그대로 출력

     ㅎ ( 중심선 로직 구현은 공뷰해도 어렵네요)


##==================================================================================================

##==================================================================================================

Input : length(10),종가사용여부(0),굵기(1),텍스트크기(12);

input : starttime(070000),Endtime(0);

var : Tcond(False);

Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),

      TL(0),Text1(0),TL1(0),TL2(0),TL11(0),TL21(0);

Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime

var : TL3(0),TL4(0),TX3(0),TX4(0);

var : HHTL(0),LLTL(0);



if sDate == CurrentDate and

((sdate != sDate[1] and sTime >= Endtime) or

(sdate == sDate[1] and sTime >= Endtime and sTime[1] < Endtime)) Then

{

Tcond = False;

}


if sDate == CurrentDate and

((sdate != sDate[1] and sTime >= starttime) or

(sdate == sDate[1] and sTime >= starttime and sTime[1] < starttime)) Then

{

Tcond = true;

}




#==========================================#

HH = IFF(종가사용여부==1,C,H);

LL = IFF(종가사용여부==1,C,L);

If Index == 0 Then

{

      고[1,1] = HH;

      저[1,1] = LL;

}

Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;

Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;

처리구분 = "";

If Condition1 and Condition2 Then                // 기간고점과 기간저점 동시 발생

{

     If 최종꼭지점 == "저점" Then

     {

        If 저[1,1] > LL Then 처리구분 = "저점처리";

        Else                 처리구분 = "고점처리";

     }

     Else If 최종꼭지점 == "고점" Then

     {

        If 고[1,1] < HH Then 처리구분 = "고점처리";

        Else                 처리구분 = "저점처리";

     }

  }

Else If Condition1 Then 처리구분 = "고점처리";

Else If Condition2 Then 처리구분 = "저점처리";

#==========================================#

If 처리구분 == "고점처리" Then

{

      최종고가 = HH;                                 // 신규고점을 체크하기 위해 저장

      If 최종꼭지점 == "저점" Then

      {

            For j = 10 DownTo 2

        {

            For jj = 1 To 4

            {

                고[j,jj] = 고[j-1,jj];

            }

        }

            고[1,1] = HH;

            고[1,2] = Index;

            고[1,3] = sDate;

            고[1,4] = sTime;

            TL = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);

TL_SetColor(TL,Rgb(255,0,0));

TL_SetSize(TL,0);

if Tcond == true Then

TL_SetExtRight(HHTL,true);

    TL_SetColor(HHTL,Rgb(200,0,255));

TL_SetSize(HHTL,1);



            Text_SetStyle(Text1, 2, 1);

            Text_SetSize(text1,텍스트크기);

            TL3 = TL_New(저[1,3],저[1,4],(고[1,1]+저[1,1])/2,고[1,3],고[1,4],(고[1,1]+저[1,1])/2);

            TL_SetColor(TL3,Rgb(255,0,0));

TL_SetSize(TL3,5);

            Condition3 = False;

      }

      Else


  If 고[1,1] < HH Then                    // 1번 고점보다 높은 고가 출현

      {

            고[1,1] = HH;

            고[1,2] = Index;

            고[1,3] = sDate;

            고[1,4] = sTime;

            TL_SetEnd(TL,고[1,3],고[1,4],고[1,1]);

            TL_SetEnd(TL11,고[1,3],고[1,4],고[2,1]);

            TL_SetBegin(TL1,고[1,3],고[1,4],고[1,1]);

            // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임

            Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);

            Text_SetString(Text1,NumToStr(고[1,1],2));

            TL_SetBegin(TL3,저[1,3],저[1,4],(고[1,1]+저[1,1])/2);

            TL_SetEnd(TL3,고[1,3],고[1,4],(고[1,1]+저[1,1])/2);

TL_SetEnd(HHTL,고[1,3],고[1,4],고[1,1]);

            if Condition3 == False Then

            {

                  if 고[1,1] > 고[2,1] Then

                  {

                  }

            }

            Else

            {

                  Text_SetLocation(TX3,고[1,3],고[1,4],고[1,1]);

            }

      }

      최종꼭지점 = "고점";

}

#==========================================#

#==========================================#

#==========================================#


If 처리구분 == "저점처리" Then

{

      최종저가 = LL;

      If 최종꼭지점 == "고점" then

      {

            For j = 10 DownTo 2

            {

                  For jj = 1 To 4

                  {

                        저[j,jj] = 저[j-1,jj];

                  }

            }

            저[1,1] = LL;

            저[1,2] = Index;

            저[1,3] = sDate;

            저[1,4] = sTime;

              TL = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);

  TL_SetColor(TL,Rgb(0,0,255));

  TL_SetSize(TL,0);

if Tcond == true Then

TL_SetExtRight(LLTL,true);

   TL_SetColor(LLTL,RgB(0,0,255));

   TL_SetSize(LLTL,1);



            Text_SetStyle(Text1, 2, 0);

            Text_SetSize(text1,텍스트크기);

            TL4 = TL_New(고[1,3],고[1,4],(고[1,1]+저[1,1])/2,저[1,3],저[1,4],(고[1,1]+저[1,1])/2);            

            TL_SetColor(TL4,RgB(0,0,0));

TL_SetSize(TL4,5);


            


            Condition4 = False;                                                         

            if 저[1,1] < 저[2,1] Then

            {

            }

      }

    Else


If 저[1,1] > LL then

    {

            저[1,1] = LL;

            저[1,2] = Index;

            저[1,3] = sDate;

            저[1,4] = sTime;

            TL_SetEnd(TL,저[1,3],저[1,4],저[1,1]);

            TL_SetEnd(TL21,저[1,3],저[1,4],저[2,1]);

            TL_SetBegin(TL2,저[1,3],저[1,4],저[1,1]);

TL_SetEnd(LLTL,저[1,3],저[1,4],저[1,1]);

            Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);

            //Text_SetString(Text1,NumToStr(저[1,1],2));

            TL_SetBegin(TL4,고[1,3],고[1,4],(고[1,1]+저[1,1])/2);

            TL_SetEnd(TL4,저[1,3],저[1,4],(고[1,1]+저[1,1])/2);

      }

      최종꼭지점 = "저점";

}



   


항상 많은 도음 고맙 습니다.

좋은 주말 되십시요^^



























지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-05-15 14:44:33

안녕하세요 예스스탁입니다. 기존 수평선 끝지점에서 우측으로 50봉까지 추가로 연장되게 작성해 드립니다. ##================================================================================================== ##================================================================================================== Input : length(10),종가사용여부(0),굵기(1),텍스트크기(12); input : starttime(070000),Endtime(0); var : Tcond(False); Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL(0),Text1(0),TL1(0),TL2(0),TL11(0),TL21(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime var : TX3(0),TX4(0); var : HHTL(0),LLTL(0); Array : tl3[100](0),v3[100](0),i3[100](0); Array : tl4[100](0),v4[100](0),i4[100](0); if sDate == CurrentDate and ((sdate != sDate[1] and sTime >= Endtime) or (sdate == sDate[1] and sTime >= Endtime and sTime[1] < Endtime)) Then { Tcond = False; } if sDate == CurrentDate and ((sdate != sDate[1] and sTime >= starttime) or (sdate == sDate[1] and sTime >= starttime and sTime[1] < starttime)) Then { Tcond = true; } #==========================================# HH = IFF(종가사용여부==1,C,H); LL = IFF(종가사용여부==1,C,L); If Index == 0 Then { 고[1,1] = HH; 저[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then// 기간고점과 기간저점 동시 발생 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { 최종고가 = HH;// 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(TL,Rgb(255,0,0)); TL_SetSize(TL,0); if Tcond == true Then TL_SetExtRight(HHTL,true); TL_SetColor(HHTL,Rgb(200,0,255)); TL_SetSize(HHTL,1); Text_SetStyle(Text1, 2, 1); Text_SetSize(text1,텍스트크기); For j = 99 DownTo 1 { tl3[j] = tl3[j-1]; i3[j] = i3[j-1]; v3[j] = v3[j-1]; } TL3[0] = TL_New(저[1,3],저[1,4],(고[1,1]+저[1,1])/2,고[1,3],고[1,4],(고[1,1]+저[1,1])/2); TL_SetColor(TL3[0],Rgb(255,0,0)); TL_SetSize(TL3[0],5); i3[0] = Index; v3[0] = (고[1,1]+저[1,1])/2; Condition3 = False; } Else If 고[1,1] < HH Then// 1번 고점보다 높은 고가 출현 { 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL,고[1,3],고[1,4],고[1,1]); TL_SetEnd(TL11,고[1,3],고[1,4],고[2,1]); TL_SetBegin(TL1,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); Text_SetString(Text1,NumToStr(고[1,1],2)); TL_SetBegin(TL3[0],저[1,3],저[1,4],(고[1,1]+저[1,1])/2); TL_SetEnd(TL3[0],고[1,3],고[1,4],(고[1,1]+저[1,1])/2); i3[0] = Index; v3[0] = (고[1,1]+저[1,1])/2; TL_SetEnd(HHTL,고[1,3],고[1,4],고[1,1]); if Condition3 == False Then { if 고[1,1] > 고[2,1] Then { } } Else { Text_SetLocation(TX3,고[1,3],고[1,4],고[1,1]); } } 최종꼭지점 = "고점"; } #==========================================# #==========================================# #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(TL,Rgb(0,0,255)); TL_SetSize(TL,0); if Tcond == true Then TL_SetExtRight(LLTL,true); TL_SetColor(LLTL,RgB(0,0,255)); TL_SetSize(LLTL,1); Text_SetStyle(Text1, 2, 0); Text_SetSize(text1,텍스트크기); For j = 99 DownTo 1 { tl4[j] = tl4[j-1]; i4[j] = i4[j-1]; v4[j] = v4[j-1]; } TL4[0] = TL_New(고[1,3],고[1,4],(고[1,1]+저[1,1])/2,저[1,3],저[1,4],(고[1,1]+저[1,1])/2); TL_SetColor(TL4[0],RgB(0,0,0)); TL_SetSize(TL4[0],5); i4[0] = Index; v4[0] = (고[1,1]+저[1,1])/2; Condition4 = False; if 저[1,1] < 저[2,1] Then { } } Else If 저[1,1] > LL then { 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL_SetEnd(TL,저[1,3],저[1,4],저[1,1]); TL_SetEnd(TL21,저[1,3],저[1,4],저[2,1]); TL_SetBegin(TL2,저[1,3],저[1,4],저[1,1]); TL_SetEnd(LLTL,저[1,3],저[1,4],저[1,1]); Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); //Text_SetString(Text1,NumToStr(저[1,1],2)); TL_SetBegin(TL4[0],고[1,3],고[1,4],(고[1,1]+저[1,1])/2); TL_SetEnd(TL4[0],저[1,3],저[1,4],(고[1,1]+저[1,1])/2); i4[0] = Index; v4[0] = (고[1,1]+저[1,1])/2; } 최종꼭지점 = "저점"; } For j = 0 to 99 { if i3[j] > 0 then { if Index <= i3[j]+50 Then TL_SetEnd(TL3[j],sDate,sTime,v3[j]); Else i3[j] = 0; } if i4[j] > 0 then { if Index <= i4[j]+50 Then TL_SetEnd(TL4[j],sDate,sTime,v4[j]); Else i4[j] = 0; } } 즐거운 하루되세요