커뮤니티
다시 문의 드릴께요.
2009-04-22 11:44:28
1126
글번호 21846
아래 질문에서 수정해 주신 지표식을 적용해 보니까, 챠트 아래 부분에 지표가 현출되는데요.
챠트 내에서 직접 점으로 전고점, 전저점을 표현할 방법은 없나요?
이 지표 말고 다른 지표도 만들어 보면, 출력함수인 plot로 작성시에 항상 챠트 아래 부분에 지표가 구현되는데, 챠트 내에서 표시할 수 있는 출력함수는 없나요?
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]); //선그래프
답변 1
예스스탁 예스스탁 답변
2009-04-22 13:36:53
안녕하세요
예스스탁입니다.
지표식 작성후에 별도로 속성에서 지정하지 않으시면
모두 봉차트 아래의 영역에 적용됩니다.
랭귀지 편집창에서 해당식을 오픈한 생태에서 f5키나 마우스 우측메뉴에서
지표속상창을 연신후에 Y축 표시를 가격으로 설정하시면
차트에 적용하실 때마다 봉차트 위에 적용됩니다.
즐거운 하루되세요
> 루시 님이 쓴 글입니다.
> 제목 : 다시 문의 드릴께요.
> 아래 질문에서 수정해 주신 지표식을 적용해 보니까, 챠트 아래 부분에 지표가 현출되는데요.
챠트 내에서 직접 점으로 전고점, 전저점을 표현할 방법은 없나요?
이 지표 말고 다른 지표도 만들어 보면, 출력함수인 plot로 작성시에 항상 챠트 아래 부분에 지표가 구현되는데, 챠트 내에서 표시할 수 있는 출력함수는 없나요?
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]); //선그래프
다음글
이전글