커뮤니티

고점 저점 표시...

프로필 이미지
루시
2009-04-21 11:39:08
1202
글번호 21819
답변완료
예전에 수식지왕님께서 올려 주신 지표인데, 3.1에 적용하니까 'i'가 선언되어 있지 않다고 오류가 생기네요. 수정 좀 부탁드립니다.^^ /* Swing 파동선.yin */ input:n(5),미완성사용(true); var:j(0),k(0),고점표시(0),저점표시(0); array:고[20](0),저[20](0),고bar[20](0),저bar[20](0), 고idx[20](0),저idx[20](0); #=========================================================# # 초기처리 (initialize routine) #=========================================================# # index()와 마찬가지로 1봉이 바뀔 때마다 1씩 증가 #---------------------------------------------------------# for j = 1 to 19 { 저bar[j] = 저bar[j] + 1; 고bar[j] = 고bar[j] + 1; 고idx[j] = i - 고bar[j]; 저idx[j] = i - 저bar[j]; } 고점표시=(o[n]+c[n])/2; 저점표시=(o[n]+c[n])/2; #=========================================================# # 주처리 (Main Routine) 파동선 계산 #=========================================================# # 전고점(peak) 계산 #---------------------------------------------------------# //Highest(H,2)[3] <= H[2] && H[2] > Highest(H,2) if Highest(H,n)[n+1] <= H[n] and H[n] > Highest(H,n) then { if 미완성사용 == true then { for j = 18 downto 1 { //배열값을 순차적으로 바꿔준다 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } 고[1] = h[n]; 고bar[1] = n; 고idx[1] = i - 고bar[1]; 고점표시 = 고[1]*1.005; if 저bar[1] > 고bar[2] then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } k = n + 1; for j = n + 2 to 고bar[2]-1 { if l[k] > l[j] then k = j; } 저[1] = l[k]; 저bar[1] = k; 저idx[1] = i - 저bar[1]; } } if 미완성사용 == false then { if 고bar[1] > 저bar[1] then { //고-저-고 순서로 나올 때 for j = 18 downto 1 { //배열값을 순차적으로 바꿔준다 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } 고[1] = h[n]; 고bar[1] = n; 고idx[1] = i - 고bar[1]; 고점표시 = 고[1]*1.005; } //저-고-고 순서로 발생했을때 else if 고[1] <= h[n] then { //이전고점보다 높으면 고[1] = h[n]; //고점[1]만 바꿔준다. 저-고 순서 유지 고bar[1] = n; 고idx[1] = i -고bar[1]; 고점표시 = 고[1]*1.005; } } } #---------------------------------------------------------# # 전저점(trough) 계산 #---------------------------------------------------------# //Lowest(L,2)[3] >= L[2] && L[2] < Lowest(L,2) if Lowest(L,n)[n+1] >= L[n] and L[n] < Lowest(L,n) then { if 미완성사용 == true then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } 저[1] = l[n]; 저bar[1] = n; 저idx[1] = i - 저bar[1]; 저점표시 = 저[1]*0.995; if 고bar[1] > 저bar[2] then { for j = 18 downto 1 { 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } k = n + 1; for j = n + 2 to 저bar[2]-1 { if h[k] < h[j] then k = j; } 고[1] = h[k]; 고bar[1] = k; 고idx[1] = i - 고bar[1]; } } if 미완성사용 == false then { if 저bar[1] > 고bar[1] then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } 저[1] = l[n]; 저bar[1] = n; 저idx[1] = i - 저bar[1]; 저점표시 = 저[1]*0.995; } else if 저[1] >= l[n] then { 저[1] = l[n]; 저bar[1] = n; 저idx[1] = i - 저bar[1]; 저점표시 = 저[1]*0.995; } } } #---------------------------------------------------------# # 변곡점의 점 표시 #---------------------------------------------------------# if 고점표시 > h[n] then plot1(고점표시,"전고점",RED); //점그래프 if 저점표시 < l[n] then plot2(저점표시,"전저점",BLUE); //점그래프 #---------------------------------------------------------# # 파동선 표시 #---------------------------------------------------------# if 고bar[1]==n and 고[1] > 0 then plot3(고[1]); //선그래프 if 저bar[1]==n and 저[1] > 0 then plot3(저[1]); //선그래프 if 저bar[1]==n and 저[1] > 0 then plot4(저[1]); //선그래프 if 고bar[1]==n and 고[1] > 0 then plot4(고[1]); //선그래프
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2009-04-21 14:13:42

안녕하세요 예스스탁입니다. input:n(5),미완성사용(true); var:j(0),k(0),고점표시(0),저점표시(0); array:고[20](0),저[20](0),고bar[20](0),저bar[20](0), 고idx[20](0),저idx[20](0); #=========================================================# # 초기처리 (initialize routine) #=========================================================# # index()와 마찬가지로 1봉이 바뀔 때마다 1씩 증가 #---------------------------------------------------------# for j = 1 to 19 { 저bar[j] = 저bar[j] + 1; 고bar[j] = 고bar[j] + 1; 고idx[j] = index - 고bar[j]; 저idx[j] = index - 저bar[j]; } 고점표시=(o[n]+c[n])/2; 저점표시=(o[n]+c[n])/2; #=========================================================# # 주처리 (Main Routine) 파동선 계산 #=========================================================# # 전고점(peak) 계산 #---------------------------------------------------------# //Highest(H,2)[3] <= H[2] && H[2] > Highest(H,2) if Highest(H,n)[n+1] <= H[n] and H[n] > Highest(H,n) then { if 미완성사용 == true then { for j = 18 downto 1 { //배열값을 순차적으로 바꿔준다 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } 고[1] = h[n]; 고bar[1] = n; 고idx[1] = index - 고bar[1]; 고점표시 = 고[1]*1.005; if 저bar[1] > 고bar[2] then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } k = n + 1; for j = n + 2 to 고bar[2]-1 { if l[k] > l[j] then k = j; } 저[1] = l[k]; 저bar[1] = k; 저idx[1] = index - 저bar[1]; } } if 미완성사용 == false then { if 고bar[1] > 저bar[1] then { //고-저-고 순서로 나올 때 for j = 18 downto 1 { //배열값을 순차적으로 바꿔준다 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } 고[1] = h[n]; 고bar[1] = n; 고idx[1] = index - 고bar[1]; 고점표시 = 고[1]*1.005; } //저-고-고 순서로 발생했을때 else if 고[1] <= h[n] then { //이전고점보다 높으면 고[1] = h[n]; //고점[1]만 바꿔준다. 저-고 순서 유지 고bar[1] = n; 고idx[1] = index -고bar[1]; 고점표시 = 고[1]*1.005; } } } #---------------------------------------------------------# # 전저점(trough) 계산 #---------------------------------------------------------# //Lowest(L,2)[3] >= L[2] && L[2] < Lowest(L,2) if Lowest(L,n)[n+1] >= L[n] and L[n] < Lowest(L,n) then { if 미완성사용 == true then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } 저[1] = l[n]; 저bar[1] = n; 저idx[1] = index - 저bar[1]; 저점표시 = 저[1]*0.995; if 고bar[1] > 저bar[2] then { for j = 18 downto 1 { 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } k = n + 1; for j = n + 2 to 저bar[2]-1 { if h[k] < h[j] then k = j; } 고[1] = h[k]; 고bar[1] = k; 고idx[1] = index - 고bar[1]; } } if 미완성사용 == false then { if 저bar[1] > 고bar[1] then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } 저[1] = l[n]; 저bar[1] = n; 저idx[1] = index - 저bar[1]; 저점표시 = 저[1]*0.995; } else if 저[1] >= l[n] then { 저[1] = l[n]; 저bar[1] = n; 저idx[1] = index - 저bar[1]; 저점표시 = 저[1]*0.995; } } } #---------------------------------------------------------# # 변곡점의 점 표시 #---------------------------------------------------------# if 고점표시 > h[n] then plot1(고점표시,"전고점",RED); //점그래프 if 저점표시 < l[n] then plot2(저점표시,"전저점",BLUE); //점그래프 #---------------------------------------------------------# # 파동선 표시 #---------------------------------------------------------# if 고bar[1]==n and 고[1] > 0 then plot3(고[1]); //선그래프 if 저bar[1]==n and 저[1] > 0 then plot3(저[1]); //선그래프 if 저bar[1]==n and 저[1] > 0 then plot4(저[1]); //선그래프 if 고bar[1]==n and 고[1] > 0 then plot4(고[1]); //선그래프 즐거운 하루되세요 > 루시 님이 쓴 글입니다. > 제목 : 고점 저점 표시... > 예전에 수식지왕님께서 올려 주신 지표인데, 3.1에 적용하니까 'i'가 선언되어 있지 않다고 오류가 생기네요. 수정 좀 부탁드립니다.^^ /* Swing 파동선.yin */ input:n(5),미완성사용(true); var:j(0),k(0),고점표시(0),저점표시(0); array:고[20](0),저[20](0),고bar[20](0),저bar[20](0), 고idx[20](0),저idx[20](0); #=========================================================# # 초기처리 (initialize routine) #=========================================================# # index()와 마찬가지로 1봉이 바뀔 때마다 1씩 증가 #---------------------------------------------------------# for j = 1 to 19 { 저bar[j] = 저bar[j] + 1; 고bar[j] = 고bar[j] + 1; 고idx[j] = i - 고bar[j]; 저idx[j] = i - 저bar[j]; } 고점표시=(o[n]+c[n])/2; 저점표시=(o[n]+c[n])/2; #=========================================================# # 주처리 (Main Routine) 파동선 계산 #=========================================================# # 전고점(peak) 계산 #---------------------------------------------------------# //Highest(H,2)[3] <= H[2] && H[2] > Highest(H,2) if Highest(H,n)[n+1] <= H[n] and H[n] > Highest(H,n) then { if 미완성사용 == true then { for j = 18 downto 1 { //배열값을 순차적으로 바꿔준다 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } 고[1] = h[n]; 고bar[1] = n; 고idx[1] = i - 고bar[1]; 고점표시 = 고[1]*1.005; if 저bar[1] > 고bar[2] then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } k = n + 1; for j = n + 2 to 고bar[2]-1 { if l[k] > l[j] then k = j; } 저[1] = l[k]; 저bar[1] = k; 저idx[1] = i - 저bar[1]; } } if 미완성사용 == false then { if 고bar[1] > 저bar[1] then { //고-저-고 순서로 나올 때 for j = 18 downto 1 { //배열값을 순차적으로 바꿔준다 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } 고[1] = h[n]; 고bar[1] = n; 고idx[1] = i - 고bar[1]; 고점표시 = 고[1]*1.005; } //저-고-고 순서로 발생했을때 else if 고[1] <= h[n] then { //이전고점보다 높으면 고[1] = h[n]; //고점[1]만 바꿔준다. 저-고 순서 유지 고bar[1] = n; 고idx[1] = i -고bar[1]; 고점표시 = 고[1]*1.005; } } } #---------------------------------------------------------# # 전저점(trough) 계산 #---------------------------------------------------------# //Lowest(L,2)[3] >= L[2] && L[2] < Lowest(L,2) if Lowest(L,n)[n+1] >= L[n] and L[n] < Lowest(L,n) then { if 미완성사용 == true then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } 저[1] = l[n]; 저bar[1] = n; 저idx[1] = i - 저bar[1]; 저점표시 = 저[1]*0.995; if 고bar[1] > 저bar[2] then { for j = 18 downto 1 { 고[j+1] = 고[j]; 고bar[j+1] = 고bar[j]; 고idx[j+1] = 고idx[j]; } k = n + 1; for j = n + 2 to 저bar[2]-1 { if h[k] < h[j] then k = j; } 고[1] = h[k]; 고bar[1] = k; 고idx[1] = i - 고bar[1]; } } if 미완성사용 == false then { if 저bar[1] > 고bar[1] then { for j = 18 downto 1 { 저[j+1] = 저[j]; 저bar[j+1] = 저bar[j]; 저idx[j+1] = 저idx[j]; } 저[1] = l[n]; 저bar[1] = n; 저idx[1] = i - 저bar[1]; 저점표시 = 저[1]*0.995; } else if 저[1] >= l[n] then { 저[1] = l[n]; 저bar[1] = n; 저idx[1] = i - 저bar[1]; 저점표시 = 저[1]*0.995; } } } #---------------------------------------------------------# # 변곡점의 점 표시 #---------------------------------------------------------# if 고점표시 > h[n] then plot1(고점표시,"전고점",RED); //점그래프 if 저점표시 < l[n] then plot2(저점표시,"전저점",BLUE); //점그래프 #---------------------------------------------------------# # 파동선 표시 #---------------------------------------------------------# if 고bar[1]==n and 고[1] > 0 then plot3(고[1]); //선그래프 if 저bar[1]==n and 저[1] > 0 then plot3(저[1]); //선그래프 if 저bar[1]==n and 저[1] > 0 then plot4(저[1]); //선그래프 if 고bar[1]==n and 고[1] > 0 then plot4(고[1]); //선그래프