커뮤니티

추세선 값 질문

프로필 이미지
시트
2021-12-28 13:55:35
920
글번호 154919
답변완료

첨부 이미지

현재 차트에 추세선을 그리는 수식을 사용하고 있는데 추세선과 종가의 차이를 보고싶어서 추가로 차트 밑에 지표를 만들어서 보려고하니 예상과 다른 결과가 나오는데요 추세선은 일직선으로 잘 나오는데 TL_GetValue 함수를 사용해서 지표를 그려보면 일직선으로 그려지는 차트상의 추세선과는 달리 그 값은 들쑥날쑥하고 차트상의 추세선 값과 지표에서 그려지는 값도 다르게 나오는데 새로운 추세선이 그려지는 시점도 아닌데 왜 이렇게 다른 값이 나오는건지 어떻게하면 정확한 값을 그려지게 만들 수 있는지 궁금합니다. 밑에는 사용한 수식입니다: input : 비교고저점기준(5); var : cnt(0); array : BTL[10](0), STL[5](0); Array : HH[20](0),HD[20](0),HT[20](0); Array : LL[20](0),LD[20](0),LT[20](0); var : TLHighValue(0), TLLowValue(0); if SwingHigh(1,H,비교고저점기준,비교고저점기준,비교고저점기준*2+1) != -1 Then{ HH[0] = H[비교고저점기준]; HD[0] = sdate[비교고저점기준]; HT[0] = sTime[비교고저점기준]; Condition1 = false; for cnt = 1 to 19{ HH[cnt] = HH[cnt-1][1]; HD[cnt] = HD[cnt-1][1]; HT[cnt] = HT[cnt-1][1]; if Condition1 == false and HH[cnt] > HH[0] and HH[cnt] > 0 Then{ Condition1 = true; BTL[3] = BTL[2]; BTL[2] = BTL[1]; BTL[1] = BTL[0]; TL_Delete(BTL[3]); BTL[0] = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]); TL_SetExtRight(BTL[0],true); TL_SetColor(BTL[0],BLUE); TL_SetSize(BTL[0], 4); TL_SetSize(BTL[1], 2); TL_SetSize(BTL[2], 0); //TLHighValue = TL_GetValue(BTL[0], sDate, sTime); //TL_Delete(BTL[0]); } } } TLHighValue = TL_GetValue(BTL[0], sDate, sTime); Plot1(TLHighValue, "추세선 BLUE", BLUe, DEF, 3); if SwingLow(1,L,비교고저점기준,비교고저점기준,비교고저점기준*2+1) != -1 Then{ LL[0] = L[비교고저점기준]; LD[0] = sdate[비교고저점기준]; LT[0] = sTime[비교고저점기준]; Condition2 = false; for cnt = 1 to 19{ LL[cnt] = LL[cnt-1][1]; LD[cnt] = LD[cnt-1][1]; LT[cnt] = LT[cnt-1][1]; if Condition2 == false and LL[cnt] < LL[0] and LL[cnt] > 0 Then{ Condition2 = true; STL[3] = STL[2]; STL[2] = STL[1]; STL[1] = STL[0]; TL_Delete(STL[3]); STL[0] = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]); TL_SetExtRight(STL[0],true); TL_SetColor(STL[0],RED); TL_SetSize(STL[0], 4); TL_SetSize(STL[1], 2); TL_SetSize(STL[2], 0); //TLLowValue = TL_GetValue(STL[0], sDate, sTime); //TL_Delete(STL[0]); } } } TLLowValue = TL_GetValue(STL[0], sDate, sTime); Plot2(TLLowValue, "추세선 RED", RED, DEF, 3); plot3(close, "종가", BLACk, DEF, 2);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-12-28 16:34:59

안녕하세요 예스스탁입니다. 1 해당 수식은 새로운 고/저점이 발생하면 이전 고/저점중 현재 고/저점보다 높은 고점과 낮은 저점을 찾아 해당 과거 고점이나 저점부터 현재 고/저점을 연결합니다. 현재 고/저점의 위치도 현재봉이 아닌 5개봉전의 고가와 저가입니다. 추세선은 과거을 지정해 연결선을 그릴수 있지만 plot은 과거봉부터 그려오게 할수 없어 추세선과 같이 표현이 되지 않습니다. BTL[0]이나 STL[0]은 가장 최근 그린 고/저점 추세선이고 plot1은 매봉기준 BTL[0]이나 STL[0]추세선의 값을 그릴 뿐입니다. 아래식을 별도 지표로 작성해서 적용해 보시면 SwingHigh와 SwingLow 조건이 만족한 봉을 확인하실 수 있습니다. 해당 수직선을 기준으로 BTL[0]이나 STL[0]이 새로 변경되고 해당 수직선이 발생하면 추세선은 과거 고/저점부터 현재를 연결해 새로 추세선을 그려주는 것일 뿐이고 plot은 현재봉 기준 BTL[0]이나 STL[0] 추세선의 값을 그려주게 됩니다. input : 비교고저점기준(5); var : TL1(0),TL2(0); if SwingHigh(1,H,비교고저점기준,비교고저점기준,비교고저점기준*2+1) != -1 Then { TL1 = TL_New(sDate,sTime,0,sDate,sTime,999999); TL_SetColor(TL1,RED); } if SwingLow(1,L,비교고저점기준,비교고저점기준,비교고저점기준*2+1) != -1 Then { TL1 = TL_New(sDate,sTime,0,sDate,sTime,999999); TL_SetColor(TL1,BLUE); } 2 랭귀지의 출력함수 중에 추세선함수, 텍스트함수, 박스출력함수, 타원출력함수들만 현재봉 기준 과거봉부터 지정해 그려오게 할수 있고 그외 다른 출력함수(plot,plotpaintbar,신호함수..등등)은 모두 과거봉에 표시가 불가능합니다. 새해 복 많이 받으세요 > 시트 님이 쓴 글입니다. > 제목 : 추세선 값 질문 > 현재 차트에 추세선을 그리는 수식을 사용하고 있는데 추세선과 종가의 차이를 보고싶어서 추가로 차트 밑에 지표를 만들어서 보려고하니 예상과 다른 결과가 나오는데요 추세선은 일직선으로 잘 나오는데 TL_GetValue 함수를 사용해서 지표를 그려보면 일직선으로 그려지는 차트상의 추세선과는 달리 그 값은 들쑥날쑥하고 차트상의 추세선 값과 지표에서 그려지는 값도 다르게 나오는데 새로운 추세선이 그려지는 시점도 아닌데 왜 이렇게 다른 값이 나오는건지 어떻게하면 정확한 값을 그려지게 만들 수 있는지 궁금합니다. 밑에는 사용한 수식입니다: input : 비교고저점기준(5); var : cnt(0); array : BTL[10](0), STL[5](0); Array : HH[20](0),HD[20](0),HT[20](0); Array : LL[20](0),LD[20](0),LT[20](0); var : TLHighValue(0), TLLowValue(0); if SwingHigh(1,H,비교고저점기준,비교고저점기준,비교고저점기준*2+1) != -1 Then{ HH[0] = H[비교고저점기준]; HD[0] = sdate[비교고저점기준]; HT[0] = sTime[비교고저점기준]; Condition1 = false; for cnt = 1 to 19{ HH[cnt] = HH[cnt-1][1]; HD[cnt] = HD[cnt-1][1]; HT[cnt] = HT[cnt-1][1]; if Condition1 == false and HH[cnt] > HH[0] and HH[cnt] > 0 Then{ Condition1 = true; BTL[3] = BTL[2]; BTL[2] = BTL[1]; BTL[1] = BTL[0]; TL_Delete(BTL[3]); BTL[0] = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]); TL_SetExtRight(BTL[0],true); TL_SetColor(BTL[0],BLUE); TL_SetSize(BTL[0], 4); TL_SetSize(BTL[1], 2); TL_SetSize(BTL[2], 0); //TLHighValue = TL_GetValue(BTL[0], sDate, sTime); //TL_Delete(BTL[0]); } } } TLHighValue = TL_GetValue(BTL[0], sDate, sTime); Plot1(TLHighValue, "추세선 BLUE", BLUe, DEF, 3); if SwingLow(1,L,비교고저점기준,비교고저점기준,비교고저점기준*2+1) != -1 Then{ LL[0] = L[비교고저점기준]; LD[0] = sdate[비교고저점기준]; LT[0] = sTime[비교고저점기준]; Condition2 = false; for cnt = 1 to 19{ LL[cnt] = LL[cnt-1][1]; LD[cnt] = LD[cnt-1][1]; LT[cnt] = LT[cnt-1][1]; if Condition2 == false and LL[cnt] < LL[0] and LL[cnt] > 0 Then{ Condition2 = true; STL[3] = STL[2]; STL[2] = STL[1]; STL[1] = STL[0]; TL_Delete(STL[3]); STL[0] = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]); TL_SetExtRight(STL[0],true); TL_SetColor(STL[0],RED); TL_SetSize(STL[0], 4); TL_SetSize(STL[1], 2); TL_SetSize(STL[2], 0); //TLLowValue = TL_GetValue(STL[0], sDate, sTime); //TL_Delete(STL[0]); } } } TLLowValue = TL_GetValue(STL[0], sDate, sTime); Plot2(TLLowValue, "추세선 RED", RED, DEF, 3); plot3(close, "종가", BLACk, DEF, 2);