예스스탁
예스스탁 답변
2022-01-28 13:42:37
안녕하세요
예스스탁입니다.
문의하신 내용은 가능한 방법이 없습니다.
지그재그를 표시하려면 올려주신 수식과 같이 추세선 함수를 이용해서
표시를 해야하는데 해당 함수가 완성봉(다음봉시가수신)에서만 동작하게 되어 있습니다.
차트의 마지막봉의 값을 포함해서 그릴방법이 없습니다.
도움을 드리지 못해 죄송합니다.
즐거운 명절 되시길 바랍니다.
> bestkim 님이 쓴 글입니다.
> 제목 : 지그재그 수식부탁드립니다
> 아래 지그재그수식을 첨부파일처럼 고저점과 현지수와 연결되어 나타나도록 수식 수정이 가능다면 부탁드리겠습니다
(사진설명: 저점 발생후 원표시처럼 현지수와 고점이 계속적으로 연결되어 나타나다가 지수하락시 고점형성 후 저점과 지수연결되는 모양)
아니면 아래수식과 관계없는 별도의 수식이 있다면 또한 부탁드립니다
Input : length(2),종가사용여부(0),파동선두께(1),수치표시수(1),수치표시세모(1);
Variables: j(0),jj(0),HH(0),LL(0)
,최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),TL1(0),Text1(0),Text2(0),tl2(0),T(0),var1(0),var2(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
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
{
T = 1;
최종고가 = 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;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 수치표시수 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],"고점");
Text_SetStyle(Text1, 0, 2);
Text_SetColor(Text1,RED);
Text_SetSize(Text1, 12);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
If 수치표시수 == 1 Then
{
Text2 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text2, 0, 1);
Text_SetColor(Text2,BLUE);
Text_SetSize(Text2, 12);
}
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
TL_SetEnd(TL2,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시수 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,"고점");
}
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text2,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = 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;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 수치표시수 == 1 Then
{
Text2 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text2, 0, 0);
Text_SetColor(Text2,BLACK);
Text_SetSize(Text2, 12);
}
If 수치표시수 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],"저점");
Text_SetStyle(Text1, 0, 2);
Text_SetColor(Text1,BLUE);
Text_SetSize(Text1, 12);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
TL_SetEnd(TL2,저[1,3],저[1,4],저[1,1]);
If 수치표시수 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,"저점");
}
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text2,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}