예스스탁
예스스탁 답변
2021-01-28 11:37:12
안녕하세요
예스스탁입니다.
첨부하신 그림만으로는 정확히 내용 판단이 어렵습니다.
좀더 자세한 내용을 올려주시기 바랍니다.
즐거운 하루되세요
> bestkim 님이 쓴 글입니다.
> 제목 : 수식부탁드립니다
> 안녕하세요
아래수식을 이용해서 첨부그림의 내용으로 수식을 수정부탁드립니다
# 지 표 명 : 고저라인 지그재그 파동선
# 버 전 : 1.2
# 작 성 자 : 수식지왕
# 블 로 그 : http://yahoosir.blog.me
# 업데이트 : 2017-03-10
#==========================================#
Input:length(2),종가사용여부(0),파동선두께(5),수치표시수(1);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),Text2(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
{
최종고가 = 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
{
Text2 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text2, 2, 1);
Text_SetColor(Text2,RED);
Text_SetSize(Text2, 20);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
}
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]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text2,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = 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, 2, 0);
Text_SetColor(Text2,BLACK);
Text_SetSize(Text2, 20);
}
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]);
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text2,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
bestkim
2021-01-28 13:36:10
두개의 기준선 前Highest(HH,length), 前Lowest (LL,length)을 기준으로 종가가
前Highest(HH,length)보다 상승 혹은 前Lowest (LL,length)보다 하락하는 모양을 나타낸 그림이빈다 일종의 스토캐스틱과 유사한 모양입니다
결론적으로 마하자면 전HH,LL을 기준으로 종가의 상승,하락 이격정도를 알고싶은것입니다
그래서 다른 형태로도 표현되는것도 상관없습니다 감사합니다
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식부탁드립니다
>
안녕하세요
예스스탁입니다.
첨부하신 그림만으로는 정확히 내용 판단이 어렵습니다.
좀더 자세한 내용을 올려주시기 바랍니다.
즐거운 하루되세요
> bestkim 님이 쓴 글입니다.
> 제목 : 수식부탁드립니다
> 안녕하세요
아래수식을 이용해서 첨부그림의 내용으로 수식을 수정부탁드립니다
# 지 표 명 : 고저라인 지그재그 파동선
# 버 전 : 1.2
# 작 성 자 : 수식지왕
# 블 로 그 : http://yahoosir.blog.me
# 업데이트 : 2017-03-10
#==========================================#
Input:length(2),종가사용여부(0),파동선두께(5),수치표시수(1);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),Text2(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
{
최종고가 = 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
{
Text2 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text2, 2, 1);
Text_SetColor(Text2,RED);
Text_SetSize(Text2, 20);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
}
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]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text2,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = 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, 2, 0);
Text_SetColor(Text2,BLACK);
Text_SetSize(Text2, 20);
}
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]);
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text2,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}