커뮤니티
수식도움 부탁 좀 드립니다.
2013-02-22 17:47:03
298
글번호 59868
input:left(3),right(3),구분(1);
var:j(0),prehv(0),prelv(0),prehb(0),prelb(0),tmpv(0),tmpb(0),ovr(0),반등(1),반락(-1);
array:hv[10](0),lv[10](0),hb[10](0),lb[10](0),r[3](0),fr[3](0);
r[0] = 0;
r[1] = 0.5;
r[2] = 1;
# 스윙포인트
if highest(h[1],left) <= h then {
prehv = h;
prehb = 0;
}
else
prehb = prehb + 1;
if lowest(l[1],left) >= l then {
prelv = l;
prelb = 0;
}
else
prelb = prelb + 1;
for j = 1 to 9 begin
hb[j] = hb[j] + 1;
lb[j] = lb[j] + 1;
end;
if prehb == right and highest(h,right) <= h[right] then {
for j = 9 downto 2 {
hv[j] = hv[j-1];
hb[j] = hb[j-1];
}
hv[1] = prehv;
hb[1] = prehb;
if lb[1] > hb[2] then {
for j = 9 downto 2 {
lv[j] = lv[j-1];
lb[j] = lb[j-1];
}
tmpv = 0;
for j = hb[1] + 1 to hb[2] - 1 {
if tmpv > l[j] or tmpv ==0 then {
tmpv = l[j];
tmpb = j;
}
}
lv[1] = tmpv;
lb[1] = tmpb;
}
}
if prelb == right and lowest(l,right) >= l[right] then {
for j = 9 downto 2 {
lv[j] = lv[j-1];
lb[j] = lb[j-1];
}
lv[1] = prelv;
lb[1] = prelb;
if hb[1] > lb[2] then {
for j = 9 downto 2 {
hv[j] = hv[j-1];
hb[j] = hb[j-1];
}
tmpv = 0;
for j = lb[1] + 1 to lb[2] - 1 {
if tmpv < h[j] or tmpv ==0 then {
tmpv = h[j];
tmpb = j;
}
}
hv[1] = tmpv;
hb[1] = tmpb;
}
}
# 비율
if 구분 == 반등 then {
if crossup(lb[1],hb[1]) then
{
for j = 0 to 2 begin
fr[j] = hv[1] - (hv[1] - lv[1]) * r[j];
end;
ovr = 0;
}
}
if 구분 == 반락 then {
if crossup(hb[1],lb[1]) then
{
for j = 0 to 2 begin
fr[j] = lv[1] + (hv[1] - lv[1]) * r[j];
end;
ovr = 0;
}
}
# 지표
plot1(fr[0],"고",RED,3); //현재 고가
plot2(fr[1],"중",BLACK,3); //현재 중간
plot3(fr[2],"저",BLUE,3); //현재 저가
수고 많으십니다.
위 수식은 다른 분이 작성한 것을 나름대로 수정해 본 것입니다.
질문은
현재값 이전의 직전(현재에서 1번째 과거) 고가 중간 저가값과
전전(현재에서 2번째 과거) 고가 중간 저가값을 위 지표처럼 나타내고 싶은데
저 같은 초보는 아무리해도 원하는 대로는 안되는군요.
봉을 기준한 과거값을 나타내려는 것이 아니라
현재값(직선으로 표시되는)을 기준으로 전과거값과 전전과거값을 나타내려는 것입니다.
도움 좀 주시면 감사하겠습니다.
답변 1
예스스탁 예스스탁 답변
2013-02-22 17:58:22
안녕하세요
예스스탁입니다.
input:left(3),right(3),구분(1);
var:j(0),prehv(0),prelv(0),prehb(0),prelb(0),tmpv(0),tmpb(0),ovr(0),반등(1),반락(-1);
array:hv[10](0),lv[10](0),hb[10](0),lb[10](0),r[3](0),fr[3](0);
r[0] = 0;
r[1] = 0.5;
r[2] = 1;
# 스윙포인트
if highest(h[1],left) <= h then {
prehv = h;
prehb = 0;
}
else
prehb = prehb + 1;
if lowest(l[1],left) >= l then {
prelv = l;
prelb = 0;
}
else
prelb = prelb + 1;
for j = 1 to 9 begin
hb[j] = hb[j] + 1;
lb[j] = lb[j] + 1;
end;
if prehb == right and highest(h,right) <= h[right] then {
for j = 9 downto 2 {
hv[j] = hv[j-1];
hb[j] = hb[j-1];
}
hv[1] = prehv;
hb[1] = prehb;
if lb[1] > hb[2] then {
for j = 9 downto 2 {
lv[j] = lv[j-1];
lb[j] = lb[j-1];
}
tmpv = 0;
for j = hb[1] + 1 to hb[2] - 1 {
if tmpv > l[j] or tmpv ==0 then {
tmpv = l[j];
tmpb = j;
}
}
lv[1] = tmpv;
lb[1] = tmpb;
}
}
if prelb == right and lowest(l,right) >= l[right] then {
for j = 9 downto 2 {
lv[j] = lv[j-1];
lb[j] = lb[j-1];
}
lv[1] = prelv;
lb[1] = prelb;
if hb[1] > lb[2] then {
for j = 9 downto 2 {
hv[j] = hv[j-1];
hb[j] = hb[j-1];
}
tmpv = 0;
for j = lb[1] + 1 to lb[2] - 1 {
if tmpv < h[j] or tmpv ==0 then {
tmpv = h[j];
tmpb = j;
}
}
hv[1] = tmpv;
hb[1] = tmpb;
}
}
# 비율
if 구분 == 반등 then {
if crossup(lb[1],hb[1]) then
{
for j = 0 to 2 begin
fr[j] = hv[1] - (hv[1] - lv[1]) * r[j];
end;
ovr = 0;
}
}
if 구분 == 반락 then {
if crossup(hb[1],lb[1]) then
{
for j = 0 to 2 begin
fr[j] = lv[1] + (hv[1] - lv[1]) * r[j];
end;
ovr = 0;
}
}
# 지표
if Fr[0] != Fr[0][1] or fr[1] != fr[1][1] or fr[2] != fr[2][1] Then{
var1 = fr[0][1];#전 고가
var2 = fr[1][1];#전 중간
var3 = fr[2][1];#전 저가
var4 = var1[1]; #전전 고가
var5 = var2[1]; #전전 중간
var6 = var3[1]; #전전 저가
}
plot1(fr[0],"현재고",RED,3); //현재 고가
plot2(fr[1],"현재중",BLACK,3); //현재 중간
plot3(fr[2],"현재저",BLUE,3); //현재 저가
plot4(var1,"전고");
plot5(var2,"전중");
plot6(var3,"전저");
plot7(var4,"전전고");
plot8(var5,"전전중");
plot9(var6,"전전저");
즐거운 하루되세요
> 차트연구 님이 쓴 글입니다.
> 제목 : 수식도움 부탁 좀 드립니다.
> input:left(3),right(3),구분(1);
var:j(0),prehv(0),prelv(0),prehb(0),prelb(0),tmpv(0),tmpb(0),ovr(0),반등(1),반락(-1);
array:hv[10](0),lv[10](0),hb[10](0),lb[10](0),r[3](0),fr[3](0);
r[0] = 0;
r[1] = 0.5;
r[2] = 1;
# 스윙포인트
if highest(h[1],left) <= h then {
prehv = h;
prehb = 0;
}
else
prehb = prehb + 1;
if lowest(l[1],left) >= l then {
prelv = l;
prelb = 0;
}
else
prelb = prelb + 1;
for j = 1 to 9 begin
hb[j] = hb[j] + 1;
lb[j] = lb[j] + 1;
end;
if prehb == right and highest(h,right) <= h[right] then {
for j = 9 downto 2 {
hv[j] = hv[j-1];
hb[j] = hb[j-1];
}
hv[1] = prehv;
hb[1] = prehb;
if lb[1] > hb[2] then {
for j = 9 downto 2 {
lv[j] = lv[j-1];
lb[j] = lb[j-1];
}
tmpv = 0;
for j = hb[1] + 1 to hb[2] - 1 {
if tmpv > l[j] or tmpv ==0 then {
tmpv = l[j];
tmpb = j;
}
}
lv[1] = tmpv;
lb[1] = tmpb;
}
}
if prelb == right and lowest(l,right) >= l[right] then {
for j = 9 downto 2 {
lv[j] = lv[j-1];
lb[j] = lb[j-1];
}
lv[1] = prelv;
lb[1] = prelb;
if hb[1] > lb[2] then {
for j = 9 downto 2 {
hv[j] = hv[j-1];
hb[j] = hb[j-1];
}
tmpv = 0;
for j = lb[1] + 1 to lb[2] - 1 {
if tmpv < h[j] or tmpv ==0 then {
tmpv = h[j];
tmpb = j;
}
}
hv[1] = tmpv;
hb[1] = tmpb;
}
}
# 비율
if 구분 == 반등 then {
if crossup(lb[1],hb[1]) then
{
for j = 0 to 2 begin
fr[j] = hv[1] - (hv[1] - lv[1]) * r[j];
end;
ovr = 0;
}
}
if 구분 == 반락 then {
if crossup(hb[1],lb[1]) then
{
for j = 0 to 2 begin
fr[j] = lv[1] + (hv[1] - lv[1]) * r[j];
end;
ovr = 0;
}
}
# 지표
plot1(fr[0],"고",RED,3); //현재 고가
plot2(fr[1],"중",BLACK,3); //현재 중간
plot3(fr[2],"저",BLUE,3); //현재 저가
수고 많으십니다.
위 수식은 다른 분이 작성한 것을 나름대로 수정해 본 것입니다.
질문은
현재값 이전의 직전(현재에서 1번째 과거) 고가 중간 저가값과
전전(현재에서 2번째 과거) 고가 중간 저가값을 위 지표처럼 나타내고 싶은데
저 같은 초보는 아무리해도 원하는 대로는 안되는군요.
봉을 기준한 과거값을 나타내려는 것이 아니라
현재값(직선으로 표시되는)을 기준으로 전과거값과 전전과거값을 나타내려는 것입니다.
도움 좀 주시면 감사하겠습니다.