커뮤니티

한번만 더 부탁드립니다.

프로필 이미지
회원
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); }