커뮤니티
자동추세선
2005-08-11 10:15:57
1565
글번호 7969
자동추세선 수식을 보면
예비고, 예비저를 설정한 다음 스윙차트상에 그값이 실제 저점, 고점이 확정 되었을때
고점표시, 저점표시가 나타나도록 수식이 짜여 있습니다.
제가 알고 싶은것은 저점, 고점이 확정이 되고
계속해서 차트가 만들어지는 동안에
직전 저점표시 bar개수에서 고점표시 bar개수를 뺀 수를 N으로 하는
또는 직전 고점표시 bar개수에서 직전 저점표시 bar개수를 뺀 수를 N으로 하는
후행스팬을 만들고 싶습니다.
각각의 값을 value1, value2로 한다면
value1=close[저점표시bar-고점표시bar];
value2=close[고점표시bar-저점표시bar];
이 될거라고 생각하는데
물론 새로 고점표시 또는 저점표시가 되면 N값이 변할거구요.
이걸 기존의 자동추세선을 이용해서 어떻게 만들수 있습니까?
<자동추세선>
input:좌(5),우(5);
var:j(0),예비고(0),예비저(0),예비고bar(0),예비저bar(0),고점표시(0),저점표시(0),
고점추세선(0),저점추세선(0);
array:고[50](0),저[50](0),고bar[50](0),저bar[50](0);
#==============================================================================#
# 변곡점 계산
#==============================================================================#
if highest(h,좌)==h and iff(예비고bar<우,예비고<h,1) then
{
예비고=h;
예비고bar=0;
}
else
예비고bar=예비고bar+1;
if lowest(l,좌)==l and iff(예비저bar<우,예비저>l,1) then
{
예비저=l;
예비저bar=0;
}
else
예비저bar=예비저bar+1;
고점표시=(o[우]+c[우])/2;
저점표시=(o[우]+c[우])/2;
for j=1 to 49 begin
고bar[j]=고bar[j]+1;
저bar[j]=저bar[j]+1;
end;
if 예비고bar==우 then
{
if 저bar[1]>고bar[1] then
{
if 고[1]<예비고 then
{
고점표시=예비고*1.0005;
고[1]=예비고;
고bar[1]=예비고bar;
}
}
else
{
for j=49 downto 2 begin
고[j]=고[j-1];
고bar[j]=고bar[j-1];
end;
고점표시=예비고*1.0005;
고[1]=예비고;
고bar[1]=예비고bar;
}
}
if 예비저bar==우 then
{
if 고bar[1]>저bar[1] then
{
if 저[1]>예비저 then
{
저점표시=예비저*0.9995;
저[1]=예비저;
저bar[1]=예비저bar;
}
}
else
{
for j=49 downto 2 begin
저[j]=저[j-1];
저bar[j]=저bar[j-1];
end;
저점표시=예비저*0.9995;
저[1]=예비저;
저bar[1]=예비저bar;
}
}
#==============================================================================#
# 자동추세선 계산
#==============================================================================#
고점추세선 = 0;
for j = 2 to 49 begin
if 고[j] > 고[1] and 고점추세선 == 0 then
{
고점추세선=((고[1]-고[j])/(고bar[j]-고bar[1]))*고bar[j]+고[j];
}
end;
저점추세선 = 0;
for j = 2 to 49 begin
if 저[j] < 저[1] and 저점추세선 == 0 then
{
저점추세선=((저[1]-저[j])/(저bar[j]-저bar[1]))*저bar[j]+저[j];
}
end;
답변 1
수식지왕
2005-08-11 12:49:41
말씀하신 로직대로 구현한다면 아래와 같습니다.
if 저bar[1]>고bar[1] then { //고점이 확정된 상태; 고2 - 저1 - 고1(현재)
var1=close[저bar[1]-고bar[1]];
var2=close[고bar[2]-저bar[1]]; //저점1 이전의 고점은 고2가 됨
}
else { //저2 - 고1 - 저1(현재)
var1=close[저bar[2]-고bar[1]]; //고점1 이전의 저점은 저2가 됨
var2=close[고bar[1]-저bar[1]];
}
고점표시나 추세선 변수는 필요없으므로 삭제하였습니다.
위 그림은 아래의 수식을 적용해 본 그림입니다만 의도한대로 나오는지 모르겠네요.
추가 질문은 http://cafe.empas.com/systrader 로 들어오시기 바랍니다.
[수식]
input:좌(5),우(5);
var:j(0),예비고(0),예비저(0),예비고bar(0),예비저bar(0);
array:고[50](0),저[50](0),고bar[50](0),저bar[50](0);
#==============================================================================#
# 변곡점 계산
#==============================================================================#
if highest(h,좌)==h and iff(예비고bar<우,예비고<h,1) then
{
예비고=h;
예비고bar=0;
}
else
예비고bar=예비고bar+1;
if lowest(l,좌)==l and iff(예비저bar<우,예비저>l,1) then
{
예비저=l;
예비저bar=0;
}
else
예비저bar=예비저bar+1;
for j=1 to 49 begin
고bar[j]=고bar[j]+1;
저bar[j]=저bar[j]+1;
end;
if 예비고bar==우 then
{
if 저bar[1]>고bar[1] then
{
if 고[1]<예비고 then
{
고[1]=예비고;
고bar[1]=예비고bar;
}
}
else
{
for j=49 downto 2 begin
고[j]=고[j-1];
고bar[j]=고bar[j-1];
end;
고[1]=예비고;
고bar[1]=예비고bar;
}
}
if 예비저bar==우 then
{
if 고bar[1]>저bar[1] then
{
if 저[1]>예비저 then
{
저[1]=예비저;
저bar[1]=예비저bar;
}
}
else
{
for j=49 downto 2 begin
저[j]=저[j-1];
저bar[j]=저bar[j-1];
end;
저[1]=예비저;
저bar[1]=예비저bar;
}
}
#==============================================================================#
# 계산
#==============================================================================#
if 저bar[1]>고bar[1] then {
var1=close[저bar[1]-고bar[1]];
var2=close[고bar[2]-저bar[1]];
}
else {
var1=close[저bar[2]-고bar[1]];
var2=close[고bar[1]-저bar[1]];
}
plot1(var1);
plot2(var2);
> 용이 님이 쓴 글입니다.
> 제목 : 자동추세선
> 자동추세선 수식을 보면
예비고, 예비저를 설정한 다음 스윙차트상에 그값이 실제 저점, 고점이 확정 되었을때
고점표시, 저점표시가 나타나도록 수식이 짜여 있습니다.
제가 알고 싶은것은 저점, 고점이 확정이 되고
계속해서 차트가 만들어지는 동안에
직전 저점표시 bar개수에서 고점표시 bar개수를 뺀 수를 N으로 하는
또는 직전 고점표시 bar개수에서 직전 저점표시 bar개수를 뺀 수를 N으로 하는
후행스팬을 만들고 싶습니다.
각각의 값을 value1, value2로 한다면
value1=close[저점표시bar-고점표시bar];
value2=close[고점표시bar-저점표시bar];
이 될거라고 생각하는데
물론 새로 고점표시 또는 저점표시가 되면 N값이 변할거구요.
이걸 기존의 자동추세선을 이용해서 어떻게 만들수 있습니까?
이전글