커뮤니티

문의 드립니다.~~~~

프로필 이미지
예스요
2022-02-15 16:20:37
971
글번호 156323
답변완료
공부하는데 많은 도움을 주셔 항상 감사합니다. 아래식이 이해가 안되는 부분이 많아 자세한 주석 부탁드립니다.~~~ Input:length(12); input : N(2),첫진입틱수(10),추가진입틱수(50); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""),TL_Val1(0),TL_Val2(0),color(0); var:T(0),B(0),Bx(0),S(0),Sx(0); Array:고점[10,2](0),저점[10,2](0); 처리구분 = ""; If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { If 저점[1,1] > L Then 처리구분 = "저점처리"; If 고점[1,1] < H Then 처리구분 = "고점처리"; } Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { T = 1; lastHiVal = H; If 고점[1,2] < 저점[1,2] Then { For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { 고점[1,1] = H; 고점[1,2] = Index; sBar = Index - 저점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then TL_Delete(TL2); } if 고점[1,1] > 고점[2,1] or 고점[2,1] == 0 Then{ color = RED; //buy("b"); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]); TL_SetColor(TL1,color); Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(고점[1,1],2)); Text_SetStyle(Text1, 2, 1); If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then { sBar = Index - 저점[2,2]; eBar = Index - 저점[1,2]; } } } If 처리구분 == "저점처리" Then { T = -1; lastLoVal = L; If 저점[1,2] < 고점[1,2] Then { For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then { 저점[1,1] = L; 저점[1,2] = Index; sBar = Index - 고점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then TL_Delete(TL3); } if 저점[1,1] < 저점[2,1] or 저점[2,1] == 0 Then{ color = blue; //sell("s"); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]); TL_SetColor(TL1,color); Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(저점[1,1],2)); Text_SetStyle(Text1, 2, 0); If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then { sBar = Index - 고점[2,2]; eBar = Index - 고점[1,2]; } } } TL_SetSize(TL1,3); #상승구간의 마지막저점 저장 if Color == RED Then { var1 = 저점[2,1]; } #하락구간의 마지막 고점 저장 if Color == BLUE Then { var2 = 고점[2,1]; }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-02-16 10:40:00

안녕하세요 예스스탁입니다. 지그재그 추세선을 그리는데 최근고점이 직전고점보다 크면 이후 추세선을 빨간색으로 그리고 최근저점이 직전저점보다 작으면 이후 추세선을 파란색으로 그리는 식입니다. Input:length(12); input : N(2),첫진입틱수(10),추가진입틱수(50); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""),TL_Val1(0),TL_Val2(0),color(0); var:T(0),B(0),Bx(0),S(0),Sx(0); Array:고점[10,2](0),저점[10,2](0); #처리구분은 매봉 초기화 처리구분 = ""; #신고가와 신저가가 동시 발생했을경우 If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { #저가가 최근저점보다 작으면 처리구분은 저점처리 If 저점[1,1] > L Then 처리구분 = "저점처리"; #고가가 최근고점보다 크면 처리구분은 고점처리 If 고점[1,1] < H Then 처리구분 = "고점처리"; } #신고가 발생하면 처리구분은 고점처리 Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; #신저가 발생하면 처리구분은 저점처리 Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; #처기구분이 고점처리일 경우 If 처리구분 == "고점처리" Then { #T는 1(최근 처리구분을 저장하는데 해당 수식에서는 사용하지 않음) T = 1; #lastHiVal은 고가저장 lastHiVal = H; #최근저점이 최근고점보다 나중에 발생 If 고점[1,2] < 저점[1,2] Then { #각 고점값과 봉번호값를 다음방으로 이동 For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } #최근저점이 최근고점보다 나중에 발생하거나 고가가 최근고점보다 크면 If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { #최근고점값을 현재봉 고가로 변경 고점[1,1] = H; #최근고점봉번호를 현재봉 봉번호로 변경 고점[1,2] = Index; #추세선시작점은 최근 저점봉으로 지정 sBar = Index - 저점[1,2]; #추세선 끝점은 현재봉으로 지정 eBar = 0; #최근 추세선의 시작지점이 sbar와 같으면 If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { #TL1(지그재그) 추세선을 삭제 TL_Delete(TL1); #텍스트를 삭제 Text_Delete(Text1); #최근고점은 직전고점보다 작고 직전고점은 전전고점보다 크고 최근저점이 직전저점보다 크면 #TL2추세선 삭제(해당식에 TL2추세선은 없어서 의미가 없음) If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then TL_Delete(TL2); } #최근고점이 직전고점보다 크면 #지그재그 추세선은 빨강색 if 고점[1,1] > 고점[2,1] or 고점[2,1] == 0 Then { color = RED; //buy("b"); } #직전 저점봉에서 현재고점발생봉까지 추세선을 그림 TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]); #색상은 빨갱 TL_SetColor(TL1,color); #최근고점값과 최근고점과 최근저점의 차이를 틱수로 표시 Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(고점[1,1],2)); Text_SetStyle(Text1, 2, 1); #최근고점은 직전고점보다 작고 직전고점은 전전고점보다 크고 최근저점이 직전저점보다 크면 #추세선의 시작지점을 직전저점으로 추세선의 끝지점을 최근저점으로 지정 If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then { sBar = Index - 저점[2,2]; eBar = Index - 저점[1,2]; } } } #처기구분이 저점처리일 경우 If 처리구분 == "저점처리" Then { #T는 1(최근 처리구분을 저장하는데 해당 수식에서는 사용하지 않음) T = -1; #lastHiVal은 wj가저장 lastLoVal = L; #최근고점이 최근저점보다 나중에 발생 If 저점[1,2] < 고점[1,2] Then { #각 저점값과 봉번호값를 다음방으로 이동 For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } #최근고점이 최근저점보다 나중에 발생하거나 저가가 최근저점보다 작으면 If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then { #최근저점값을 현재봉 저가로 변경 저점[1,1] = L; #최근저점 봉번호를 현재봉 봉번호로 변경 저점[1,2] = Index; #추세선시작점은 최근 고점봉으로 지정 sBar = Index - 고점[1,2]; #추세선 끝점은 현재봉으로 지정 eBar = 0; #최근 추세선의 시작지점이 sbar와 같으면 If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { #TL1(지그재그) 추세선을 삭제 TL_Delete(TL1); #텍스트 삭제 Text_Delete(Text1); #최근저점은 직전저점보다 크고 직전저점은 전전저점보다 작고 최근고점이 직전고점보다 작으면 #TL3추세선 삭제(해당식에 TL3추세선은 없어서 의미가 없음) If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then TL_Delete(TL3); } #최근저점이 직전저점보다 작으면 #지그재그 추세선은 파란색 if 저점[1,1] < 저점[2,1] or 저점[2,1] == 0 Then{ color = blue; //sell("s"); } #직전 고점봉에서 현재저점발생봉까지 추세선을 그림 TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]); #추세선색은 파랑 TL_SetColor(TL1,color); #최근저점값과 최근저점과 최근고점의 차이를 틱수로 표시 Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(저점[1,1],2)); Text_SetStyle(Text1, 2, 0); #최근저점은 직전저점보다 크고 직전저점은 전전저점보다 작고 최근고점이 직전고점보다 작으면 #추세선의 시작지점을 직전고점으로 추세선의 끝지점을 최근고점으로 지정 If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then { sBar = Index - 고점[2,2]; eBar = Index - 고점[1,2]; } } } #지그재그 추선선의 굵기 TL_SetSize(TL1,3); #상승구간의 마지막저점 저장 if Color == RED Then { var1 = 저점[2,1]; } #하락구간의 마지막 고점 저장 if Color == BLUE Then { var2 = 고점[2,1]; } 즐거운 하루되세요 > 예스요 님이 쓴 글입니다. > 제목 : 문의 드립니다.~~~~ > 공부하는데 많은 도움을 주셔 항상 감사합니다. 아래식이 이해가 안되는 부분이 많아 자세한 주석 부탁드립니다.~~~ Input:length(12); input : N(2),첫진입틱수(10),추가진입틱수(50); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""),TL_Val1(0),TL_Val2(0),color(0); var:T(0),B(0),Bx(0),S(0),Sx(0); Array:고점[10,2](0),저점[10,2](0); 처리구분 = ""; If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { If 저점[1,1] > L Then 처리구분 = "저점처리"; If 고점[1,1] < H Then 처리구분 = "고점처리"; } Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { T = 1; lastHiVal = H; If 고점[1,2] < 저점[1,2] Then { For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { 고점[1,1] = H; 고점[1,2] = Index; sBar = Index - 저점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then TL_Delete(TL2); } if 고점[1,1] > 고점[2,1] or 고점[2,1] == 0 Then{ color = RED; //buy("b"); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]); TL_SetColor(TL1,color); Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(고점[1,1],2)); Text_SetStyle(Text1, 2, 1); If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then { sBar = Index - 저점[2,2]; eBar = Index - 저점[1,2]; } } } If 처리구분 == "저점처리" Then { T = -1; lastLoVal = L; If 저점[1,2] < 고점[1,2] Then { For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then { 저점[1,1] = L; 저점[1,2] = Index; sBar = Index - 고점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then TL_Delete(TL3); } if 저점[1,1] < 저점[2,1] or 저점[2,1] == 0 Then{ color = blue; //sell("s"); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]); TL_SetColor(TL1,color); Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(저점[1,1],2)); Text_SetStyle(Text1, 2, 0); If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then { sBar = Index - 고점[2,2]; eBar = Index - 고점[1,2]; } } } TL_SetSize(TL1,3); #상승구간의 마지막저점 저장 if Color == RED Then { var1 = 저점[2,1]; } #하락구간의 마지막 고점 저장 if Color == BLUE Then { var2 = 고점[2,1]; }