커뮤니티

5개의 전저점 중 최소값을 찾고, 최소값 위치 봉의 다른 지표값 리턴

프로필 이미지
끼야98
2022-01-24 14:50:05
793
글번호 155738
답변완료
안녕하세요! 담당자님 매번 정말 감사합니다. 1. 검색을 통해 아래와 같이 5개의 전저점 중 최소값을 찾아, 최소값이 몇번째 전저점인지를 출력해 주는 지표를 찾았습니다. 그런데, 문제가 있었습니다. var1 = c ; 와 같이 종가로 하면 정상적으로 작동하는데, 특정지표값을 넣으니 안되었습니다. 원인을 찾아보니 특정지표값의 범위가 -20 ~ +20까지. 즉 음수가 있어서 그런걸로 찾았습니다. (지표값을 모두 양수화(모든값+50)했더니 정상작동하였음) 음수가 있는 지표값등도 별도로 양수화 하지 않는 로직이 있을까요? 2. 그리고,, 만약 x번째 전저점이 최소값이라면, x번째 전저점 위치의 특정 지표값(볼린저밴드 상단 밴드, 중심선, 하단밴드 )을 불러 로직을 짜려면 어떻게 해야 할까요? 아래는 찾은 수식입니다. ------------------------------------------------------------------------ var : cnt1(0),LL(0),cnt2(0),nth(0); Array : value[5](0); var1 = c ; if swinglow(1,var1,1,1,3) != -1 Then{ value[1] = swinglow(1,var1,1,1,3); for cnt1 = 2 to 5{ value[cnt1] = value[cnt1-1][1]; } } if value[5] > 0 Then{ LL = value[1]; nth = 1; for cnt2 = 2 to 5{ if value[cnt2] < LL Then{ LL = value[cnt2]; nth = cnt2; } } } plot1(nth,"nth",YELLOW);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-01-24 15:03:15

안녕하세요 예스스탁입니다. 1 swinglow(1,var1,1,1,3) != -1 주가데이타를 염두에 둔 수식이라 음수를 가지는 경우는 위 내용때문에 조건이 충족되지 않습니다. swinglowbar함수를 이용하시면 됩니다. swinglowbar(1,var1,1,1,3) != -1 input : short(12),long(26); var : cnt1(0),LL(0),cnt2(0),nth(0); Array : value[5](0); var1 = macd(short,long); if SwingLowBar(1,var1,1,1,3) != -1 Then { value[1] = swinglow(1,var1,1,1,3); for cnt1 = 2 to 5{ value[cnt1] = value[cnt1-1][1]; } } if value[5] > 0 Then { LL = value[1]; nth = 1; for cnt2 = 2 to 5 { if value[cnt2] < LL Then { LL = value[cnt2]; nth = cnt2; } } } plot1(nth,"nth",YELLOW); 2 swinglow발생하면 필요한 지표값(볼밴상단,볼밴하단)을 같이 저장해서 이용하시면 됩니다. input : short(12),long(26); input : left(1),right(1); var : cnt1(0),LL(0),cnt2(0),nth(0),bbup(0),BBdn(0); Array : value[5](0),V1[5](0),V2[5](0); var1 = macd(short,long); bbup = BollBandUp(20,2); bbdn = BollBandDown(20,2); if SwingLowBar(1,var1,left,right,left+right+1) != -1 Then { value[1] = var1[right]; v1[1] = bbup[right]; v2[1] = bbdn[right]; for cnt1 = 2 to 5 { value[cnt1] = value[cnt1-1][1]; v1[cnt1] = v1[cnt1-1][1]; v2[cnt1] = v2[cnt1-1][1]; } } if value[5] > 0 Then { LL = value[1]; nth = 1; for cnt2 = 2 to 5 { if value[cnt2] < LL Then { LL = value[cnt2]; nth = cnt2; } } } Plot1(v1[nth]); Plot1(v2[nth]); 즐거운 하루되세요 > 끼야98 님이 쓴 글입니다. > 제목 : 5개의 전저점 중 최소값을 찾고, 최소값 위치 봉의 다른 지표값 리턴 > 안녕하세요! 담당자님 매번 정말 감사합니다. 1. 검색을 통해 아래와 같이 5개의 전저점 중 최소값을 찾아, 최소값이 몇번째 전저점인지를 출력해 주는 지표를 찾았습니다. 그런데, 문제가 있었습니다. var1 = c ; 와 같이 종가로 하면 정상적으로 작동하는데, 특정지표값을 넣으니 안되었습니다. 원인을 찾아보니 특정지표값의 범위가 -20 ~ +20까지. 즉 음수가 있어서 그런걸로 찾았습니다. (지표값을 모두 양수화(모든값+50)했더니 정상작동하였음) 음수가 있는 지표값등도 별도로 양수화 하지 않는 로직이 있을까요? 2. 그리고,, 만약 x번째 전저점이 최소값이라면, x번째 전저점 위치의 특정 지표값(볼린저밴드 상단 밴드, 중심선, 하단밴드 )을 불러 로직을 짜려면 어떻게 해야 할까요? 아래는 찾은 수식입니다. ------------------------------------------------------------------------ var : cnt1(0),LL(0),cnt2(0),nth(0); Array : value[5](0); var1 = c ; if swinglow(1,var1,1,1,3) != -1 Then{ value[1] = swinglow(1,var1,1,1,3); for cnt1 = 2 to 5{ value[cnt1] = value[cnt1-1][1]; } } if value[5] > 0 Then{ LL = value[1]; nth = 1; for cnt2 = 2 to 5{ if value[cnt2] < LL Then{ LL = value[cnt2]; nth = cnt2; } } } plot1(nth,"nth",YELLOW);