커뮤니티

추세선 관련해서 질문드립니다

프로필 이미지
yamu
2024-08-02 13:41:33
840
글번호 182184
답변완료
매번 답변 주셔서 감사드립니다 추세선 관련 질문 3 가지가 있는데요, 1) 추세선을 작성하고 shift 이동이 가능한가요? 예를들면 5봉만큼 오른쪽으로 이동하는 식으로요 2) 추세선 만들기 공부를 하고 있는데 아래식이 어떤 조건을 나타내는건지 간단히 해석을 해주셨으면 감사하겠습니다 "현재봉 고가가 1봉전 고가 이하이고 h(1)이 h(2)보다 클때" 는 알겠는데 else 부터 추가 조건이 있나해서 여쭤봅니다.if문에서 t에 1을 대입하고 else에서는 t=0, t=2 로 나뉘는데 어떤 의미인지 궁금합니다. 그리고 else 부터는 if 조건의 역(?)조건을 의미라는건가요?? var : T(0),cnt(0),TL(0),HTL1(0),HTL2(0),LTL1(0),LTL2(0); var : hd(0),ht(0),hh(0),ld(0),lt(0),ll(0); Array : SHD[5](0),SHT[5](0),SHV[5](0); Array : SLD[5](0),SLT[5](0),SLV[5](0); var : SHL(0),SLH(0),S(0); if h <= h[1] && h[1] > h[2] then { hd = sDate[1]; ht = sTime[1]; hh = H[1]; SHL = L[1]; T = 1; } Else { if T == 1 and h > hh then T = 0; if T == 1 and L < SHL Then { T = 2; SHD[0] = hd; SHT[0] = ht; SHV[0] = hh; if SLV[0] > 0 Then { S = 1; if S[1] != 1 Then { TL = TL_New(SLD[0],SLT[0],SLV[0],SHD[0],SHT[0],SHV[0]); TL_SetColor(TL,Red); } Else TL_SetEnd(TL,SHD[0],SHT[0],SHV[0]); } } } // 저점은 반대 if T >= 0 and l >= l[1] && l[1] < l[2] then { ld = sDate[1]; lT = sTime[1]; ll = L[1]; SLH = H[1]; T = -1; } Else { if T == -1 and l < ll then T = 0; if T == -1 and h > SLH Then { T = -2; SLD[0] = ld; SLT[0] = lt; SLV[0] = ll; if SHV[0] > 0 Then { S = -1; if S[1] != -1 Then { TL = TL_New(SHD[0],SHT[0],SHV[0],SLD[0],SLT[0],SLV[0]); TL_SetColor(TL,Blue); } Else TL_SetEnd(TL,SLD[0],SLT[0],SLV[0]); } } } 3)추세선 작성 수식을 부탁드리겠습니다 1. n봉동안 2. h-l 의 길이가 4% 이상이고 전일 종가 대비 시가갭이 -3% 이상인 봉이 한개이상 있을때 3.그 기간동안 고점과 저점의 차이가 13% 이상 나면 nth 봉의 고점과 최근봉의 저점을 추세선으로 표시하고 "소요되는 봉의 갯수" (countif 를 쓰는건가요??~~) 를 구하고 싶습니다. (만약 5개 봉이 포착이 된다면 5번째 봉의 고점과 0번째 봉의 저점을 연결하는 추세선을 구하고 싶습니다) 감사합니다
지표
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2024-08-02 17:25:34

안녕하세요 예스스탁입니다. 1 추세선은 별도로 별도로 shift함수가 있는 것은 아닙니다. 추세선을 출력하고 TL_SetBegin, TL_SetEnd함수로 시작점과 끝점을 이동할 수 있습니다. 해당 함수를 사용해 이동하셔야 합니다. 2 else는 if조건을 부정하는 부분입니다. 지정한 조건이 만족하면 A, 만족하지 않으면 B와 같이 만족하지 않을 때를 의미합니다. 올리신 수식은 고점과 저점을 판별하는 내용인데 고점은 고가가 상승 후 하락 (h <= h[1] && h[1] > h[2] ) 저점은 저가가 하락 후 상승 (l >= l[1] && l[1] < l[2] 하는 봉이 발생하면 임시고점/ 임시저점으로 합니다. 위 임시고점이나 임시저점이 발생하고 다음봉 부터 임시고점 기준봉의 저가보다 낮은 저가가 발생하면 고점을 확정하고 임시저점 기준봉의 고가보다 높은 고가가 발생하면 저점을 확정하는 내용입니다. 임시고점이 발생하고 임시고점보다 높은 고가 발생하면 고점체크는 무효화되고 임시저점이 발생하고 임시저점보다 낮은 저가 발생하면 저점체크는 무효화됩니다. 수식에서 t값은 임시고저점과 확정될때 흐름을 체크하기 위한 변수입니다. 임시고점발생하면 1이고 임시고점 기준봉보다 낮은 저가 발생하면 확정된 의미로 2로 변경 임시고점발생 후 높은 고가 발생하면 0으로 처리해 무표화합니다. 임시저점발생하면 -1이고 임시저점 기준봉보다 높은 고가 발생하면 확정된 의미로 -2로 변경 임시저점발생 후 낮은 저가 발생하면 0으로 처리해 무표화합니다. 3 input : n(100); var : cnt(0),hh(0),hb(0),ll(0),lb(0),TL(0),TX(0); #최근 n봉안에 봉길이는 4%이상이고 하락시가갭 3%인 봉이 있을 때 if CountIf(H >= L*1.04 and O <= C[1]*0.97,n) >= 1 Then { #최근봉만 표시되게 하기위해 직전에서 출력된 추세선과 텍스트는 삭제 TL_Delete(TL); Text_Delete(TX); #n개봉 최고가와 최고가위치(몇봉전인지) 계산 #n개봉 최저가와 최저가위치(몇봉전인지) 계산 hh = 0; hb = 0; ll = 0; lb = 0; For cnt = 0 to n-1 { if hh == 0 or (hh > 0 and h[cnt] > hh) Then { hh = h[cnt]; hb = cnt; } if ll == 0 or (ll > 0 and l[cnt] < ll) Then { ll = l[cnt]; lb = cnt; } } #추세선 출력 TL = TL_New(sDate[hb],sTime[hb],hh,sDate[lb],sTime[lb],ll); #최고가가 더 가까우면 빨강 아니면 파랑 if lb > hb Then TL_SetColor(TL,Red); Else TL_SetColor(TL,Blue); #텍스트 출력 TX = Text_New(TL_GetEndDate(TL),TL_GetEndTime(TL),TL_GetEndVal(TL),NumToStr(abs(hb-lb),0)); } 즐거운 하루되세요 > yamu 님이 쓴 글입니다. > 제목 : 추세선 관련해서 질문드립니다 > 매번 답변 주셔서 감사드립니다 추세선 관련 질문 3 가지가 있는데요, 1) 추세선을 작성하고 shift 이동이 가능한가요? 예를들면 5봉만큼 오른쪽으로 이동하는 식으로요 2) 추세선 만들기 공부를 하고 있는데 아래식이 어떤 조건을 나타내는건지 간단히 해석을 해주셨으면 감사하겠습니다 "현재봉 고가가 1봉전 고가 이하이고 h(1)이 h(2)보다 클때" 는 알겠는데 else 부터 추가 조건이 있나해서 여쭤봅니다.if문에서 t에 1을 대입하고 else에서는 t=0, t=2 로 나뉘는데 어떤 의미인지 궁금합니다. 그리고 else 부터는 if 조건의 역(?)조건을 의미라는건가요?? var : T(0),cnt(0),TL(0),HTL1(0),HTL2(0),LTL1(0),LTL2(0); var : hd(0),ht(0),hh(0),ld(0),lt(0),ll(0); Array : SHD[5](0),SHT[5](0),SHV[5](0); Array : SLD[5](0),SLT[5](0),SLV[5](0); var : SHL(0),SLH(0),S(0); if h <= h[1] && h[1] > h[2] then { hd = sDate[1]; ht = sTime[1]; hh = H[1]; SHL = L[1]; T = 1; } Else { if T == 1 and h > hh then T = 0; if T == 1 and L < SHL Then { T = 2; SHD[0] = hd; SHT[0] = ht; SHV[0] = hh; if SLV[0] > 0 Then { S = 1; if S[1] != 1 Then { TL = TL_New(SLD[0],SLT[0],SLV[0],SHD[0],SHT[0],SHV[0]); TL_SetColor(TL,Red); } Else TL_SetEnd(TL,SHD[0],SHT[0],SHV[0]); } } } // 저점은 반대 if T >= 0 and l >= l[1] && l[1] < l[2] then { ld = sDate[1]; lT = sTime[1]; ll = L[1]; SLH = H[1]; T = -1; } Else { if T == -1 and l < ll then T = 0; if T == -1 and h > SLH Then { T = -2; SLD[0] = ld; SLT[0] = lt; SLV[0] = ll; if SHV[0] > 0 Then { S = -1; if S[1] != -1 Then { TL = TL_New(SHD[0],SHT[0],SHV[0],SLD[0],SLT[0],SLV[0]); TL_SetColor(TL,Blue); } Else TL_SetEnd(TL,SLD[0],SLT[0],SLV[0]); } } } 3)추세선 작성 수식을 부탁드리겠습니다 1. n봉동안 2. h-l 의 길이가 4% 이상이고 전일 종가 대비 시가갭이 -3% 이상인 봉이 한개이상 있을때 3.그 기간동안 고점과 저점의 차이가 13% 이상 나면 nth 봉의 고점과 최근봉의 저점을 추세선으로 표시하고 "소요되는 봉의 갯수" (countif 를 쓰는건가요??~~) 를 구하고 싶습니다. (만약 5개 봉이 포착이 된다면 5번째 봉의 고점과 0번째 봉의 저점을 연결하는 추세선을 구하고 싶습니다) 감사합니다
프로필 이미지

yamu

2024-08-02 17:40:38

답변 감사드립니다 한 주 고생하셨고 주말 즐겁게 보내시길 바랍니다~ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 추세선 관련해서 질문드립니다 > 안녕하세요 예스스탁입니다. 1 추세선은 별도로 별도로 shift함수가 있는 것은 아닙니다. 추세선을 출력하고 TL_SetBegin, TL_SetEnd함수로 시작점과 끝점을 이동할 수 있습니다. 해당 함수를 사용해 이동하셔야 합니다. 2 else는 if조건을 부정하는 부분입니다. 지정한 조건이 만족하면 A, 만족하지 않으면 B와 같이 만족하지 않을 때를 의미합니다. 올리신 수식은 고점과 저점을 판별하는 내용인데 고점은 고가가 상승 후 하락 (h <= h[1] && h[1] > h[2] ) 저점은 저가가 하락 후 상승 (l >= l[1] && l[1] < l[2] 하는 봉이 발생하면 임시고점/ 임시저점으로 합니다. 위 임시고점이나 임시저점이 발생하고 다음봉 부터 임시고점 기준봉의 저가보다 낮은 저가가 발생하면 고점을 확정하고 임시저점 기준봉의 고가보다 높은 고가가 발생하면 저점을 확정하는 내용입니다. 임시고점이 발생하고 임시고점보다 높은 고가 발생하면 고점체크는 무효화되고 임시저점이 발생하고 임시저점보다 낮은 저가 발생하면 저점체크는 무효화됩니다. 수식에서 t값은 임시고저점과 확정될때 흐름을 체크하기 위한 변수입니다. 임시고점발생하면 1이고 임시고점 기준봉보다 낮은 저가 발생하면 확정된 의미로 2로 변경 임시고점발생 후 높은 고가 발생하면 0으로 처리해 무표화합니다. 임시저점발생하면 -1이고 임시저점 기준봉보다 높은 고가 발생하면 확정된 의미로 -2로 변경 임시저점발생 후 낮은 저가 발생하면 0으로 처리해 무표화합니다. 3 input : n(100); var : cnt(0),hh(0),hb(0),ll(0),lb(0),TL(0),TX(0); #최근 n봉안에 봉길이는 4%이상이고 하락시가갭 3%인 봉이 있을 때 if CountIf(H >= L*1.04 and O <= C[1]*0.97,n) >= 1 Then { #최근봉만 표시되게 하기위해 직전에서 출력된 추세선과 텍스트는 삭제 TL_Delete(TL); Text_Delete(TX); #n개봉 최고가와 최고가위치(몇봉전인지) 계산 #n개봉 최저가와 최저가위치(몇봉전인지) 계산 hh = 0; hb = 0; ll = 0; lb = 0; For cnt = 0 to n-1 { if hh == 0 or (hh > 0 and h[cnt] > hh) Then { hh = h[cnt]; hb = cnt; } if ll == 0 or (ll > 0 and l[cnt] < ll) Then { ll = l[cnt]; lb = cnt; } } #추세선 출력 TL = TL_New(sDate[hb],sTime[hb],hh,sDate[lb],sTime[lb],ll); #최고가가 더 가까우면 빨강 아니면 파랑 if lb > hb Then TL_SetColor(TL,Red); Else TL_SetColor(TL,Blue); #텍스트 출력 TX = Text_New(TL_GetEndDate(TL),TL_GetEndTime(TL),TL_GetEndVal(TL),NumToStr(abs(hb-lb),0)); } 즐거운 하루되세요 > yamu 님이 쓴 글입니다. > 제목 : 추세선 관련해서 질문드립니다 > 매번 답변 주셔서 감사드립니다 추세선 관련 질문 3 가지가 있는데요, 1) 추세선을 작성하고 shift 이동이 가능한가요? 예를들면 5봉만큼 오른쪽으로 이동하는 식으로요 2) 추세선 만들기 공부를 하고 있는데 아래식이 어떤 조건을 나타내는건지 간단히 해석을 해주셨으면 감사하겠습니다 "현재봉 고가가 1봉전 고가 이하이고 h(1)이 h(2)보다 클때" 는 알겠는데 else 부터 추가 조건이 있나해서 여쭤봅니다.if문에서 t에 1을 대입하고 else에서는 t=0, t=2 로 나뉘는데 어떤 의미인지 궁금합니다. 그리고 else 부터는 if 조건의 역(?)조건을 의미라는건가요?? var : T(0),cnt(0),TL(0),HTL1(0),HTL2(0),LTL1(0),LTL2(0); var : hd(0),ht(0),hh(0),ld(0),lt(0),ll(0); Array : SHD[5](0),SHT[5](0),SHV[5](0); Array : SLD[5](0),SLT[5](0),SLV[5](0); var : SHL(0),SLH(0),S(0); if h <= h[1] && h[1] > h[2] then { hd = sDate[1]; ht = sTime[1]; hh = H[1]; SHL = L[1]; T = 1; } Else { if T == 1 and h > hh then T = 0; if T == 1 and L < SHL Then { T = 2; SHD[0] = hd; SHT[0] = ht; SHV[0] = hh; if SLV[0] > 0 Then { S = 1; if S[1] != 1 Then { TL = TL_New(SLD[0],SLT[0],SLV[0],SHD[0],SHT[0],SHV[0]); TL_SetColor(TL,Red); } Else TL_SetEnd(TL,SHD[0],SHT[0],SHV[0]); } } } // 저점은 반대 if T >= 0 and l >= l[1] && l[1] < l[2] then { ld = sDate[1]; lT = sTime[1]; ll = L[1]; SLH = H[1]; T = -1; } Else { if T == -1 and l < ll then T = 0; if T == -1 and h > SLH Then { T = -2; SLD[0] = ld; SLT[0] = lt; SLV[0] = ll; if SHV[0] > 0 Then { S = -1; if S[1] != -1 Then { TL = TL_New(SHD[0],SHT[0],SHV[0],SLD[0],SLT[0],SLV[0]); TL_SetColor(TL,Blue); } Else TL_SetEnd(TL,SLD[0],SLT[0],SLV[0]); } } } 3)추세선 작성 수식을 부탁드리겠습니다 1. n봉동안 2. h-l 의 길이가 4% 이상이고 전일 종가 대비 시가갭이 -3% 이상인 봉이 한개이상 있을때 3.그 기간동안 고점과 저점의 차이가 13% 이상 나면 nth 봉의 고점과 최근봉의 저점을 추세선으로 표시하고 "소요되는 봉의 갯수" (countif 를 쓰는건가요??~~) 를 구하고 싶습니다. (만약 5개 봉이 포착이 된다면 5번째 봉의 고점과 0번째 봉의 저점을 연결하는 추세선을 구하고 싶습니다) 감사합니다