커뮤니티
지그재그
2016-06-07 10:05:39
428
글번호 98758
늘 성실한 답변 감사드립니다.
문의 드릴 내용은 수식지왕님의 지그재그 파동선의 저점들의 연결선을 평할하여 그리고
고점들의 연결선을 평할하여 그리는 지표입니다.
중심선은 지그재그 차트가 그려져 고점과 저점에 생기는 중심점의 연결인데 그것도 평할하여
그려지면 좋겠습니다.
연결선들이 부드러운 곡선이 되겠지요.
지그재그 파동이 현재 가격에서는 그려지지 않더라고 앞의 고점과 저점의
연결선은 현재가격까지 연장되어 그려지면 좋겠습니다.
수식지왕님의 지그재그 수식과 그림 첨부합니다. 감사합니다.
#==========================================#
# 지표명 : 지그재그차트
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:상승률(0.05),하락률(0.05);
Var:j(0),상승(100),하락(-100),양방향(2),
기준고(0),기준저(0),기준고Bar(0),기준저Bar(0),추세(0),이중파동(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 이중파동 처리
#==========================================#
If 이중파동 > 0 Then
{
Plot1(이중파동);
이중파동 = 0;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If 기준고 <= H || 기준고 == 0 || IsNaN(기준고) == True Then
{
기준고 = H;
기준고Bar = 0;
}
Else
기준고Bar = 기준고Bar + 1;
If 기준저 >= L || 기준저 == 0 || IsNaN(기준저) == True Then
{
기준저 = L;
기준저Bar = 0;
}
Else
기준저Bar = 기준저Bar + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If 기준고 * (1 - (하락률/100)) > H && 기준저 * (1 + (상승률/100)) < L Then
{
추세 =iff(기준고Bar==기준저Bar,양방향,iff(기준고Bar>기준저Bar,상승,하락));
}
Else If 기준고 * (1 - (하락률/100)) > H Then 추세 = 하락;
Else If 기준저 * (1 + (상승률/100)) < L Then 추세 = 상승;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 추세[1] == 상승 && 추세 == 하락 Then
{
For j = 18 DownTo 1 {
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
If 이중파동[1] > 0 Then 이중파동 = 고[1];
Else plot1(고[1]);
}
If 추세[1] == 하락 && 추세 == 하락 &&
고[1] < 기준고 &&
기준고 * (1 - (하락률/100)) > H Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
plot1(저[1]);
이중파동 = 고[1];
}
If 추세[1] == 하락 && 추세 == 상승 Then
{
For j = 18 DownTo 1
{
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = L;
기준저Bar = 0;
기준고 = H;
기준고Bar = 0;
If 이중파동[1] > 0 Then 이중파동 = 저[1];
Else plot1(저[1]);
}
If 추세[1] == 상승 && 추세 == 상승 &&
저[1] > 기준저 &&
기준저 * (1 + (상승률/100)) < L Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = L;
기준저Bar = 0;
기준고 = H;
기준고Bar = 0;
plot1(고[1]);
이중파동 = 저[1];
}
If 추세 == 양방향 Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
추세 = 추세[1];
If 추세[1] == 상승 Then
{
Plot1(고[1]);
이중파동 = 저[1];
}
Else
{
Plot1(저[1]);
이중파동 = 고[1];
}
}
#==========================================#
# 마무리
#==========================================#
If LastBarOnChart == 1 && 기준고Bar > 0 && 기준저Bar > 0 Then
{
plot1(Iff(추세 == 상승,기준고,기준저));
}
- 1. 지그재그.jpg (0.12 MB)
답변 1
예스스탁 예스스탁 답변
2016-06-07 18:51:58
안녕하세요
예스스탁입니다.
그림과 같이 부드러운 곡선으로는 나올수 없습니다.
특정 시점에만 고점과 저점이 발생하므로 기본적으로
고점과 저점들을 평균내면 계산식이 됩니다.
아래식 참고하셔서 수정보완해 사용하시기 바랍니다.
#==========================================#
# 지표명 : 지그재그차트
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:상승률(0.05),하락률(0.05);
Var:j(0),상승(100),하락(-100),양방향(2),
기준고(0),기준저(0),기준고Bar(0),기준저Bar(0),추세(0),이중파동(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 이중파동 처리
#==========================================#
If 이중파동 > 0 Then
{
Plot1(이중파동);
이중파동 = 0;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If 기준고 <= H || 기준고 == 0 || IsNaN(기준고) == True Then
{
기준고 = H;
기준고Bar = 0;
}
Else
기준고Bar = 기준고Bar + 1;
If 기준저 >= L || 기준저 == 0 || IsNaN(기준저) == True Then
{
기준저 = L;
기준저Bar = 0;
}
Else
기준저Bar = 기준저Bar + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If 기준고 * (1 - (하락률/100)) > H && 기준저 * (1 + (상승률/100)) < L Then
{
추세 =iff(기준고Bar==기준저Bar,양방향,iff(기준고Bar>기준저Bar,상승,하락));
}
Else If 기준고 * (1 - (하락률/100)) > H Then 추세 = 하락;
Else If 기준저 * (1 + (상승률/100)) < L Then 추세 = 상승;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 추세[1] == 상승 && 추세 == 하락 Then
{
For j = 18 DownTo 1 {
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
If 이중파동[1] > 0 Then 이중파동 = 고[1];
Else plot1(고[1]);
}
If 추세[1] == 하락 && 추세 == 하락 &&
고[1] < 기준고 &&
기준고 * (1 - (하락률/100)) > H Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
plot1(저[1]);
이중파동 = 고[1];
}
If 추세[1] == 하락 && 추세 == 상승 Then
{
For j = 18 DownTo 1
{
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = L;
기준저Bar = 0;
기준고 = H;
기준고Bar = 0;
If 이중파동[1] > 0 Then 이중파동 = 저[1];
Else plot1(저[1]);
}
If 추세[1] == 상승 && 추세 == 상승 &&
저[1] > 기준저 &&
기준저 * (1 + (상승률/100)) < L Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = L;
기준저Bar = 0;
기준고 = H;
기준고Bar = 0;
plot1(고[1]);
이중파동 = 저[1];
}
If 추세 == 양방향 Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
추세 = 추세[1];
If 추세[1] == 상승 Then
{
Plot1(고[1]);
이중파동 = 저[1];
}
Else
{
Plot1(저[1]);
이중파동 = 고[1];
}
}
#==========================================#
# 마무리
#==========================================#
If LastBarOnChart == 1 && 기준고Bar > 0 && 기준저Bar > 0 Then
{
plot1(Iff(추세 == 상승,기준고,기준저));
}
var : sumv1(0),sumv2(0),sumi1(0),sumi2(0),mav1(0),mav2(0),cnt(0);
sumv1 = 0;
sumi1= 0;
sumv2 = 0;
sumi2= 0;
for cnt = 1 to 18{
if 고[cnt] > 0 Then{
sumv1 = sumv1+고[cnt];
sumi1 = sumi1+1;
}
if 저[cnt] > 0 Then{
sumv2 = sumv2+저[cnt];
sumi2 = sumi2+1;
}
}
mav1 = sumv1/sumi1;
mav2 = sumv2/sumi2;
plot2(mav1);
plot3(mav2);
plot4((mav1+mav2)/2);
즐거운 하루되세요
> 강이아빠 님이 쓴 글입니다.
> 제목 : 지그재그
> 늘 성실한 답변 감사드립니다.
문의 드릴 내용은 수식지왕님의 지그재그 파동선의 저점들의 연결선을 평할하여 그리고
고점들의 연결선을 평할하여 그리는 지표입니다.
중심선은 지그재그 차트가 그려져 고점과 저점에 생기는 중심점의 연결인데 그것도 평할하여
그려지면 좋겠습니다.
연결선들이 부드러운 곡선이 되겠지요.
지그재그 파동이 현재 가격에서는 그려지지 않더라고 앞의 고점과 저점의
연결선은 현재가격까지 연장되어 그려지면 좋겠습니다.
수식지왕님의 지그재그 수식과 그림 첨부합니다. 감사합니다.
#==========================================#
# 지표명 : 지그재그차트
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:상승률(0.05),하락률(0.05);
Var:j(0),상승(100),하락(-100),양방향(2),
기준고(0),기준저(0),기준고Bar(0),기준저Bar(0),추세(0),이중파동(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 이중파동 처리
#==========================================#
If 이중파동 > 0 Then
{
Plot1(이중파동);
이중파동 = 0;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If 기준고 <= H || 기준고 == 0 || IsNaN(기준고) == True Then
{
기준고 = H;
기준고Bar = 0;
}
Else
기준고Bar = 기준고Bar + 1;
If 기준저 >= L || 기준저 == 0 || IsNaN(기준저) == True Then
{
기준저 = L;
기준저Bar = 0;
}
Else
기준저Bar = 기준저Bar + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If 기준고 * (1 - (하락률/100)) > H && 기준저 * (1 + (상승률/100)) < L Then
{
추세 =iff(기준고Bar==기준저Bar,양방향,iff(기준고Bar>기준저Bar,상승,하락));
}
Else If 기준고 * (1 - (하락률/100)) > H Then 추세 = 하락;
Else If 기준저 * (1 + (상승률/100)) < L Then 추세 = 상승;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 추세[1] == 상승 && 추세 == 하락 Then
{
For j = 18 DownTo 1 {
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
If 이중파동[1] > 0 Then 이중파동 = 고[1];
Else plot1(고[1]);
}
If 추세[1] == 하락 && 추세 == 하락 &&
고[1] < 기준고 &&
기준고 * (1 - (하락률/100)) > H Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
plot1(저[1]);
이중파동 = 고[1];
}
If 추세[1] == 하락 && 추세 == 상승 Then
{
For j = 18 DownTo 1
{
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = L;
기준저Bar = 0;
기준고 = H;
기준고Bar = 0;
If 이중파동[1] > 0 Then 이중파동 = 저[1];
Else plot1(저[1]);
}
If 추세[1] == 상승 && 추세 == 상승 &&
저[1] > 기준저 &&
기준저 * (1 + (상승률/100)) < L Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = L;
기준저Bar = 0;
기준고 = H;
기준고Bar = 0;
plot1(고[1]);
이중파동 = 저[1];
}
If 추세 == 양방향 Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = H;
기준고Bar = 0;
기준저 = L;
기준저Bar = 0;
추세 = 추세[1];
If 추세[1] == 상승 Then
{
Plot1(고[1]);
이중파동 = 저[1];
}
Else
{
Plot1(저[1]);
이중파동 = 고[1];
}
}
#==========================================#
# 마무리
#==========================================#
If LastBarOnChart == 1 && 기준고Bar > 0 && 기준저Bar > 0 Then
{
plot1(Iff(추세 == 상승,기준고,기준저));
}
다음글
이전글