커뮤니티
한번만 더 부탁드립니다.
2014-11-04 13:31:47
188
글번호 80082
정말 많은 도움이 되었습니다. 감사합니다.
만들어 주신 아래 서식을 Data2에 대해서 적용할 수 있도록 한번만 더 (수정) 부탁드립니다.
#==========================================#
# 지표명 : MACD다이버전스 MACD파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:P1(12),P2(26),MACD변동폭(0.02);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),MACD파동선(0),방향(0),MACDV(0),MACD추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
MACD고[20](0),MACD저[20](0),MACD고Bar[20](0),MACD저Bar[20](0);
MACDV = MACD(P1,P2);//MACD(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
MACD고Bar[j] = MACD고Bar[j] + 1;
MACD저Bar[j] = MACD저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If MACD고[0] <= MACDV || MACD고[0] == 0 || IsNaN(MACD고[0]) == True Then
{
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
}
Else
MACD고Bar[0] = MACD고Bar[0] + 1;
If MACD저[0] >= MACDV || MACD저[0] == 0 || IsNaN(MACD저[0]) == True Then
{
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
}
Else
MACD저Bar[0] = MACD저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If MACD저[0][1] + MACD변동폭 > MACDV[1] &&
MACD저[0][1] + MACD변동폭 <= MACDV Then 방향 = 상승;
If MACD고[0][1] - MACD변동폭 < MACDV[1] &&
MACD고[0][1] - MACD변동폭 >= MACDV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
MACD저[j+1] = MACD저[j];
MACD저Bar[j+1] = MACD저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
MACD저[1] = MACD저[0];
MACD저Bar[1] = MACD저Bar[0];
MACD파동선 = MACD저[0];
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
MACD고[j+1] = MACD고[j];
MACD고Bar[j+1] = MACD고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
MACD고[1] = MACD고[0];
MACD고Bar[1] = MACD고Bar[0];
MACD파동선 = MACD고[0];
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If MACD고[1] < MACD고[0] &&
MACD고[0][1] - MACD변동폭 <= MACDV[1] &&
MACD고[0][1] - MACD변동폭 > MACDV Then
{
MACD고[1] = MACD고[0];
MACD고Bar[1] = MACD고Bar[0];
MACD파동선 = MACD고[0];
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If MACD저[1] > MACD저[0] &&
MACD저[0][1] + MACD변동폭 >= MACDV[1] &&
MACD저[0][1] + MACD변동폭 < MACDV Then
{
MACD저[1] = MACD저[0];
MACD저Bar[1] = MACD저Bar[0];
MACD파동선 = MACD저[0];
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If MACD파동선[1] != MACD파동선 Then Plot1(MACD파동선,"MACD파동선",GREEN); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,MACD고[0],MACD저[0]),"MACD파동선",GREEN);
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
MACD저[2] < MACD저[1] Then
{
MACD추세선 = (MACD저[1]-MACD저[2])/(MACD저Bar[2]-MACD저Bar[1]) * MACD저Bar[2] + MACD저[2];
Plot2(MACD추세선,"저점추세선",MAGENTA);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
MACD고[2] > MACD고[1] Then
{
MACD추세선 = (MACD고[1]-MACD고[2])/(MACD고Bar[2]-MACD고Bar[1]) * MACD고Bar[2] + MACD고[2];
Plot3(MACD추세선,"고점추세선",BLUE);
}
답변 1
예스스탁 예스스탁 답변
2014-11-04 14:10:57
안녕하세요
예스스탁입니다.
#==========================================#
# 지표명 : MACD다이버전스 MACD파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:P1(12),P2(26),MACD변동폭(0.02);
Var:j(0,data2),상승(100,data2),하락(-100,data2),양방향(2,data2),추세(0,data2),
파동선(0,data2),MACD파동선(0,data2),방향(0,data2),MACDV(0,data2),MACD추세선(0,data2);
Array:고[20](0,data2),저[20](0,data2),고Bar[20](0,data2),저Bar[20](0,data2),
MACD고[20](0,data2),MACD저[20](0,data2),MACD고Bar[20](0,data2),MACD저Bar[20](0,data2);
MACDV = data2(MACD(P1,P2));//MACD(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
MACD고Bar[j] = MACD고Bar[j] + 1;
MACD저Bar[j] = MACD저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If MACD고[0] <= MACDV || MACD고[0] == 0 || IsNaN(MACD고[0]) == True Then
{
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
}
Else
MACD고Bar[0] = MACD고Bar[0] + 1;
If MACD저[0] >= MACDV || MACD저[0] == 0 || IsNaN(MACD저[0]) == True Then
{
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
}
Else
MACD저Bar[0] = MACD저Bar[0] + 1;
If 고[0] <= data2(H) || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = data2(H);
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= data2(L) || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = data2(L);
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If MACD저[0][1] + MACD변동폭 > MACDV[1] &&
MACD저[0][1] + MACD변동폭 <= MACDV Then 방향 = 상승;
If MACD고[0][1] - MACD변동폭 < MACDV[1] &&
MACD고[0][1] - MACD변동폭 >= MACDV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
MACD저[j+1] = MACD저[j];
MACD저Bar[j+1] = MACD저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
MACD저[1] = MACD저[0];
MACD저Bar[1] = MACD저Bar[0];
MACD파동선 = MACD저[0];
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = data2(L);
저Bar[0] = 0;
고[0] = data2(H);
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
MACD고[j+1] = MACD고[j];
MACD고Bar[j+1] = MACD고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
MACD고[1] = MACD고[0];
MACD고Bar[1] = MACD고Bar[0];
MACD파동선 = MACD고[0];
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = data2(H);
고Bar[0] = 0;
저[0] = data2(L);
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If MACD고[1] < MACD고[0] &&
MACD고[0][1] - MACD변동폭 <= MACDV[1] &&
MACD고[0][1] - MACD변동폭 > MACDV Then
{
MACD고[1] = MACD고[0];
MACD고Bar[1] = MACD고Bar[0];
MACD파동선 = MACD고[0];
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > data2(H) Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = data2(H);
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If MACD저[1] > MACD저[0] &&
MACD저[0][1] + MACD변동폭 >= MACDV[1] &&
MACD저[0][1] + MACD변동폭 < MACDV Then
{
MACD저[1] = MACD저[0];
MACD저Bar[1] = MACD저Bar[0];
MACD파동선 = MACD저[0];
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < data2(L) Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = data2(L);
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If MACD파동선[1] != MACD파동선 Then Plot1(MACD파동선,"MACD파동선",GREEN); //적당껏 수평이동
Else If data2(LastBarOnChart == 1) Then plot1(Iff(방향 == 상승,MACD고[0],MACD저[0]),"MACD파동선",GREEN);
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
MACD저[2] < MACD저[1] Then
{
MACD추세선 = (MACD저[1]-MACD저[2])/(MACD저Bar[2]-MACD저Bar[1]) * MACD저Bar[2] + MACD저[2];
Plot2(MACD추세선,"저점추세선",MAGENTA);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
MACD고[2] > MACD고[1] Then
{
MACD추세선 = (MACD고[1]-MACD고[2])/(MACD고Bar[2]-MACD고Bar[1]) * MACD고Bar[2] + MACD고[2];
Plot3(MACD추세선,"고점추세선",BLUE);
}
즐거운 하루되세요
> HI_ma****** 님이 쓴 글입니다.
> 제목 : 한번만 더 부탁드립니다.
> 정말 많은 도움이 되었습니다. 감사합니다.
만들어 주신 아래 서식을 Data2에 대해서 적용할 수 있도록 한번만 더 (수정) 부탁드립니다.
#==========================================#
# 지표명 : MACD다이버전스 MACD파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:P1(12),P2(26),MACD변동폭(0.02);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),MACD파동선(0),방향(0),MACDV(0),MACD추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
MACD고[20](0),MACD저[20](0),MACD고Bar[20](0),MACD저Bar[20](0);
MACDV = MACD(P1,P2);//MACD(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
MACD고Bar[j] = MACD고Bar[j] + 1;
MACD저Bar[j] = MACD저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If MACD고[0] <= MACDV || MACD고[0] == 0 || IsNaN(MACD고[0]) == True Then
{
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
}
Else
MACD고Bar[0] = MACD고Bar[0] + 1;
If MACD저[0] >= MACDV || MACD저[0] == 0 || IsNaN(MACD저[0]) == True Then
{
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
}
Else
MACD저Bar[0] = MACD저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If MACD저[0][1] + MACD변동폭 > MACDV[1] &&
MACD저[0][1] + MACD변동폭 <= MACDV Then 방향 = 상승;
If MACD고[0][1] - MACD변동폭 < MACDV[1] &&
MACD고[0][1] - MACD변동폭 >= MACDV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
MACD저[j+1] = MACD저[j];
MACD저Bar[j+1] = MACD저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
MACD저[1] = MACD저[0];
MACD저Bar[1] = MACD저Bar[0];
MACD파동선 = MACD저[0];
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
MACD고[j+1] = MACD고[j];
MACD고Bar[j+1] = MACD고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
MACD고[1] = MACD고[0];
MACD고Bar[1] = MACD고Bar[0];
MACD파동선 = MACD고[0];
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If MACD고[1] < MACD고[0] &&
MACD고[0][1] - MACD변동폭 <= MACDV[1] &&
MACD고[0][1] - MACD변동폭 > MACDV Then
{
MACD고[1] = MACD고[0];
MACD고Bar[1] = MACD고Bar[0];
MACD파동선 = MACD고[0];
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If MACD저[1] > MACD저[0] &&
MACD저[0][1] + MACD변동폭 >= MACDV[1] &&
MACD저[0][1] + MACD변동폭 < MACDV Then
{
MACD저[1] = MACD저[0];
MACD저Bar[1] = MACD저Bar[0];
MACD파동선 = MACD저[0];
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If MACD파동선[1] != MACD파동선 Then Plot1(MACD파동선,"MACD파동선",GREEN); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,MACD고[0],MACD저[0]),"MACD파동선",GREEN);
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
MACD저[2] < MACD저[1] Then
{
MACD추세선 = (MACD저[1]-MACD저[2])/(MACD저Bar[2]-MACD저Bar[1]) * MACD저Bar[2] + MACD저[2];
Plot2(MACD추세선,"저점추세선",MAGENTA);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
MACD고[2] > MACD고[1] Then
{
MACD추세선 = (MACD고[1]-MACD고[2])/(MACD고Bar[2]-MACD고Bar[1]) * MACD고Bar[2] + MACD고[2];
Plot3(MACD추세선,"고점추세선",BLUE);
}
다음글
이전글