예스스탁
예스스탁 답변
2022-02-04 15:13:59
안녕하세요
예스스탁입니다.
고[3]-저[3]
고[2]-저[2]
고[1]-저[1]
위와같이 올려주신 내용으로 보아 최근 상승파동 N개를 비교하는 내용같습니다.
상승파동이 직전상승파동보다 크면 1, 작으면 -1로 합산되게 작성해 드립니다.
#==========================================#
# 지표명 : Swing파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:left(5),right(5),N(3);
Var:j(0),k(0),이중파동(0),구분(0),고점(100),저점(-100),cnt(0),count(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;
}
#==========================================#
# 변곡점 정의
#==========================================#
구분 = 0;
If Highest(H,left)[right+1] <= H[right] && H[right] > Highest(H,right) &&
Lowest(L,left)[right+1] >= L[right] && L[right] < Lowest(L,right) Then
{
구분 = Iff(고Bar[1]>저Bar[1],고점,저점);
}
Else If Highest(H,left)[right+1] <= H[right] && H[right] > Highest(H,right) Then
구분 = 고점;
Else If Lowest(L,left)[right+1] >= L[right] && L[right] < Lowest(L,right) Then
구분 = 저점;
#==========================================#
# 전고점(Peak) 계산
#==========================================#
If 구분 == 고점 Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1] = H[right];
고Bar[1] = right;
If 저Bar[1] > 고Bar[2] Then
{
For j = 18 downto 1
{
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
k = right + 1;
For j = right + 2 To 고Bar[2]-1
{
If L[k] > L[j] Then k = j;
}
저[1] = L[k];
저Bar[1] = k;
#Plot1(저[1]);
이중파동 = 고[1];
}
#If 이중파동 == 0 Then Plot1(고[1]);
}
#==========================================#
# 전저점(Trough) 계산
#==========================================#
If 구분 == 저점 Then
{
For j = 18 DownTo 1
{
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1] = L[right];
저Bar[1] = right;
If 고Bar[1] > 저Bar[2] Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
k = right + 1;
For j = right + 2 To 저Bar[2]-1
{
If H[k] < H[j] Then k = j;
}
고[1] = H[k];
고Bar[1] = k;
#Plot1(고[1]);
이중파동 = 저[1];
}
#If 이중파동 == 0 Then Plot1(저[1]);
}
if 고Bar[1] > 저Bar[1] Then
{
count = 0;
고[0] = Highest(H,저Bar[1]);
For cnt = N-1 downto 0
{
if LastBarOnChart == 1 Then
MessageLog("%.2f %.2f %.2f",고[cnt],저[cnt+1],고[cnt]-저[cnt+1]);
if 고[cnt]-저[cnt+1] > 고[cnt+1]-저[cnt+1+1] Then
count = count+1;
if 고[cnt]-저[cnt+1] < 고[cnt+1]-저[cnt+1+1] Then
count = count-1;
}
}
Plot1(count);
즐거운 하루되세요
> 지스카드 님이 쓴 글입니다.
> 제목 : 도움을 부탁드리겠습니다.
> 안녕하세요
인터넷에서 파동선을 그려주는 지표를 보았습니다.
파동선의 고점과 저점을 배열 고[], 저[]로 사용하고 있는데요
다음과 같이 <고저폭의 증감>을 별개의 지표로 표현하고 싶은데
어떻게 할 수 없을까요..
고점에서 저점을 뺀 고저폭을 구합니다.
파동선의 고저폭
고[3]-저[3]
고[2]-저[2]
고[1]-저[1]
요렇게 가장 최근 3번의 고저폭만 보았을때
그 고저폭이 이전 고저폭 보다 줄어드는가, 점점 늘어나는가...<고저폭의 증감>을
수치로 나타내고 싶습니다.
딱 가장최근 3번(혹은4번) 값에서 고저폭 값이 더 확대되면 (예를들어)+1, 줄어들면 -1
그래서 최근 연속으로 고저폭이 3번 확대되면 3(큰값),
3번다 줄어들고 있다면 점점 작은값 0(이나 1)..이런식으로..나타나는
지표를 만들어 주실수 있을까요
퇴근하고 잠못자고 여태 고민했는데 ㅠㅜ...못만들겠습니다..
부탁드리겠습니다..
------------
#==========================================#
# 지표명 : Swing파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:left(5),right(5);
Var:j(0),k(0),이중파동(0),구분(0),고점(100),저점(-100);
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;
}
#==========================================#
# 변곡점 정의
#==========================================#
구분 = 0;
If Highest(H,left)[right+1] <= H[right] && H[right] > Highest(H,right) &&
Lowest(L,left)[right+1] >= L[right] && L[right] < Lowest(L,right) Then
{
구분 = Iff(고Bar[1]>저Bar[1],고점,저점);
}
Else If Highest(H,left)[right+1] <= H[right] && H[right] > Highest(H,right) Then
구분 = 고점;
Else If Lowest(L,left)[right+1] >= L[right] && L[right] < Lowest(L,right) Then
구분 = 저점;
#==========================================#
# 전고점(Peak) 계산
#==========================================#
If 구분 == 고점 Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1] = H[right];
고Bar[1] = right;
If 저Bar[1] > 고Bar[2] Then
{
For j = 18 downto 1
{
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
k = right + 1;
For j = right + 2 To 고Bar[2]-1
{
If L[k] > L[j] Then k = j;
}
저[1] = L[k];
저Bar[1] = k;
Plot1(저[1]);
이중파동 = 고[1];
}
If 이중파동 == 0 Then Plot1(고[1]);
}
#==========================================#
# 전저점(Trough) 계산
#==========================================#
If 구분 == 저점 Then
{
For j = 18 DownTo 1
{
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1] = L[right];
저Bar[1] = right;
If 고Bar[1] > 저Bar[2] Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
k = right + 1;
For j = right + 2 To 저Bar[2]-1
{
If H[k] < H[j] Then k = j;
}
고[1] = H[k];
고Bar[1] = k;
Plot1(고[1]);
이중파동 = 저[1];
}
If 이중파동 == 0 Then Plot1(저[1]);
}
#==========================================#
# 마무리
#==========================================#
If LastBarOnChart == 1 && 고Bar[1] != right && 저Bar[1] != right Then
{
If 고Bar[1] > 저Bar[1] Then plot1(Highest(H,저Bar[1]));
Else plot1(Lowest(L,고Bar[1]));
}
[출처] Swing 파동선(파일 첨부) 최종수정일:2011.03.03 |작성자 수식지왕