예스스탁
예스스탁 답변
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);