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