커뮤니티

수식변환 부탁드립니다.

프로필 이미지
이글루
2014-03-24 17:33:21
314
글번호 73770
답변완료
항상 감사합니다. 아래식은 수식지왕님의 지표식입니다. 고점과 저점을 가격대신 5/20 이평의 데드크로스나 골드크로스가 생긴 자리로 변경하고싶습니다. 즉 앞 골드크로스가난 자리부터 데드크로스가 발생된자리까지가 상승파동으로 나타나고, 데드크로스에서 다시 골드크로스가 발생되면 하락파동끝으로 보고....이런식으로 피보나치값을 나타내고싶습니다. Input:상승률(1),하락률(1); Var:j(0),상승(100),하락(-100),양방향(2),색깔(0),파랑(-1),빨강(1), 기준고(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(이중파동,"Zigzag",Iff(색깔==빨강,RED,GREEN)); 이중파동 = 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 고[2] < 고[1] Then 색깔 = 빨강; If 이중파동[1] > 0 Then 이중파동 = 고[1]; Else plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); } 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; If 저[2] > 저[1] Then 색깔 = 파랑; plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 고[2] < 고[1] Then 색깔 = 빨강; 이중파동 = 고[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 저[2] > 저[1] Then 색깔 = 파랑; If 이중파동[1] > 0 Then 이중파동 = 저[1]; Else plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); } 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; If 고[2] < 고[1] Then 색깔 = 빨강; plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 저[2] > 저[1] Then 색깔 = 파랑; 이중파동 = 저[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 { If 고[2] < 고[1] Then 색깔 = 빨강; Plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 저[2] > 저[1] Then 색깔 = 파랑; 이중파동 = 저[1]; } Else { If 저[2] > 저[1] Then 색깔 = 파랑; Plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 고[2] < 고[1] Then 색깔 = 빨강; 이중파동 = 고[1]; } } #==========================================# # 마무리 #==========================================# If LastBarOnChart == 1 && 기준고Bar > 0 && 기준저Bar > 0 Then { If 추세 == 상승 Then { If 고[1] < 기준고 Then 색깔 = 빨강; Plot1(기준고,"Zigzag",Iff(색깔==빨강,RED,GREEN)); } Else { If 저[1] > 기준저 Then 색깔 = 파랑; Plot1(기준저,"Zigzag",Iff(색깔==빨강,RED,GREEN)); } } /* if 추세 == 상승 and 추세[1] != 상승 Then var1 = L[1]*(1+상승률/100); if 추세 == 하락 and 추세[1] != 하락 Then var1 = H[1]*(1-하락률/100); plot2(var1);*/ //작성자 : 수식지왕 input:left(5),right(5); var:jj(0),prehv(0),prelv(0),prehb(0),prelb(0),tmpv(0),tmpb(0), ovr(0),반등(-1),반락(1),구분(0); array:hv[10](0),lv[10](0),hb[10](0),lb[10](0), r[8](0),fr[8](0); 구분 = 추세; r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; r[7] = 1.618; #==============================================================================# # 변곡점 계산 #==============================================================================# //파동선 작성 설명은 자주 했으므로 생략 if highest(h[1],left) <= h then { prehv = h; prehb = 0; } else prehb = prehb + 1; if lowest(l[1],left) >= l then { prelv = l; prelb = 0; } else prelb = prelb + 1; for jj = 1 to 9 begin hb[jj] = hb[jj] + 1; lb[jj] = lb[jj] + 1; end; if prehb == right and highest(h,right) <= h[right] then { for jj = 9 downto 2 { hv[jj] = hv[jj-1]; hb[jj] = hb[jj-1]; } hv[1] = prehv; hb[1] = prehb; if lb[1] > hb[2] then { for jj = 9 downto 2 { lv[jj] = lv[jj-1]; lb[jj] = lb[jj-1]; } tmpv = 0; for jj = hb[1] + 1 to hb[2] - 1 { if tmpv > l[jj] or tmpv ==0 then { tmpv = l[jj]; tmpb = jj; } } lv[1] = tmpv; lb[1] = tmpb; } } if prelb == right and lowest(l,right) >= l[right] then { for jj = 9 downto 2 { lv[jj] = lv[jj-1]; lb[jj] = lb[jj-1]; } lv[1] = prelv; lb[1] = prelb; if hb[1] > lb[2] then { for jj = 9 downto 2 { hv[jj] = hv[jj-1]; hb[jj] = hb[jj-1]; } tmpv = 0; for jj = lb[1] + 1 to lb[2] - 1 { if tmpv < h[jj] or tmpv ==0 then { tmpv = h[jj]; tmpb = jj; } } hv[1] = tmpv; hb[1] = tmpb; } } #==============================================================================# # Fibonacci Retracements 계산 #==============================================================================# //반등과 반락을 모두 표시하게 되면 복잡해지므로 한 방향만 표시하는 것이 옳음 if 구분 == 상승 then { if crossup(lb[1],hb[1]) then { for jj = 0 to 7 begin fr[jj] = hv[1] - (hv[1] - lv[1]) * r[jj]; end; ovr = 0; } if fr[6]>l then ovr = 1; plot2(fr[0],"상승0%"); plot3(fr[1],"상승23.6%"); plot4(fr[2],"상승38.2%"); plot5(fr[3],"상승50%"); plot6(fr[4],"상승61.8%"); plot7(fr[5],"상승76.4%"); plot8(fr[6],"상승100%"); } if 구분 == 하락 then { if crossup(hb[1],lb[1]) then { for jj = 0 to 7 begin fr[jj] = lv[1] + (hv[1] - lv[1]) * r[jj]; end; ovr = 0; } if fr[6]>l then ovr = 1; plot12(fr[0],"하락0%"); plot13(fr[1],"하락23.6%"); plot14(fr[2],"하락38.2%"); plot15(fr[3],"하락50%"); plot16(fr[4],"하락61.8%"); plot17(fr[5],"하락76.4%"); plot18(fr[6],"하락100%");
지표
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2014-03-25 13:45:43

> 이글루 님이 쓴 글입니다. > 제목 : 수식변환 부탁드립니다. > 항상 감사합니다. 아래식은 수식지왕님의 지표식입니다. 고점과 저점을 가격대신 5/20 이평의 데드크로스나 골드크로스가 생긴 자리로 변경하고싶습니다. 즉 앞 골드크로스가난 자리부터 데드크로스가 발생된자리까지가 상승파동으로 나타나고, 데드크로스에서 다시 골드크로스가 발생되면 하락파동끝으로 보고....이런식으로 피보나치값을 나타내고싶습니다. Input:상승률(1),하락률(1); Var:j(0),상승(100),하락(-100),양방향(2),색깔(0),파랑(-1),빨강(1), 기준고(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(이중파동,"Zigzag",Iff(색깔==빨강,RED,GREEN)); 이중파동 = 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 고[2] < 고[1] Then 색깔 = 빨강; If 이중파동[1] > 0 Then 이중파동 = 고[1]; Else plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); } 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; If 저[2] > 저[1] Then 색깔 = 파랑; plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 고[2] < 고[1] Then 색깔 = 빨강; 이중파동 = 고[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 저[2] > 저[1] Then 색깔 = 파랑; If 이중파동[1] > 0 Then 이중파동 = 저[1]; Else plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); } 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; If 고[2] < 고[1] Then 색깔 = 빨강; plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 저[2] > 저[1] Then 색깔 = 파랑; 이중파동 = 저[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 { If 고[2] < 고[1] Then 색깔 = 빨강; Plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 저[2] > 저[1] Then 색깔 = 파랑; 이중파동 = 저[1]; } Else { If 저[2] > 저[1] Then 색깔 = 파랑; Plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 고[2] < 고[1] Then 색깔 = 빨강; 이중파동 = 고[1]; } } #==========================================# # 마무리 #==========================================# If LastBarOnChart == 1 && 기준고Bar > 0 && 기준저Bar > 0 Then { If 추세 == 상승 Then { If 고[1] < 기준고 Then 색깔 = 빨강; Plot1(기준고,"Zigzag",Iff(색깔==빨강,RED,GREEN)); } Else { If 저[1] > 기준저 Then 색깔 = 파랑; Plot1(기준저,"Zigzag",Iff(색깔==빨강,RED,GREEN)); } } /* if 추세 == 상승 and 추세[1] != 상승 Then var1 = L[1]*(1+상승률/100); if 추세 == 하락 and 추세[1] != 하락 Then var1 = H[1]*(1-하락률/100); plot2(var1);*/ //작성자 : 수식지왕 input:left(5),right(5); var:jj(0),prehv(0),prelv(0),prehb(0),prelb(0),tmpv(0),tmpb(0), ovr(0),반등(-1),반락(1),구분(0); array:hv[10](0),lv[10](0),hb[10](0),lb[10](0), r[8](0),fr[8](0); 구분 = 추세; r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; r[7] = 1.618; #==============================================================================# # 변곡점 계산 #==============================================================================# //파동선 작성 설명은 자주 했으므로 생략 if highest(h[1],left) <= h then { prehv = h; prehb = 0; } else prehb = prehb + 1; if lowest(l[1],left) >= l then { prelv = l; prelb = 0; } else prelb = prelb + 1; for jj = 1 to 9 begin hb[jj] = hb[jj] + 1; lb[jj] = lb[jj] + 1; end; if prehb == right and highest(h,right) <= h[right] then { for jj = 9 downto 2 { hv[jj] = hv[jj-1]; hb[jj] = hb[jj-1]; } hv[1] = prehv; hb[1] = prehb; if lb[1] > hb[2] then { for jj = 9 downto 2 { lv[jj] = lv[jj-1]; lb[jj] = lb[jj-1]; } tmpv = 0; for jj = hb[1] + 1 to hb[2] - 1 { if tmpv > l[jj] or tmpv ==0 then { tmpv = l[jj]; tmpb = jj; } } lv[1] = tmpv; lb[1] = tmpb; } } if prelb == right and lowest(l,right) >= l[right] then { for jj = 9 downto 2 { lv[jj] = lv[jj-1]; lb[jj] = lb[jj-1]; } lv[1] = prelv; lb[1] = prelb; if hb[1] > lb[2] then { for jj = 9 downto 2 { hv[jj] = hv[jj-1]; hb[jj] = hb[jj-1]; } tmpv = 0; for jj = lb[1] + 1 to lb[2] - 1 { if tmpv < h[jj] or tmpv ==0 then { tmpv = h[jj]; tmpb = jj; } } hv[1] = tmpv; hb[1] = tmpb; } } #==============================================================================# # Fibonacci Retracements 계산 #==============================================================================# //반등과 반락을 모두 표시하게 되면 복잡해지므로 한 방향만 표시하는 것이 옳음 if 구분 == 상승 then { if crossup(lb[1],hb[1]) then { for jj = 0 to 7 begin fr[jj] = hv[1] - (hv[1] - lv[1]) * r[jj]; end; ovr = 0; } if fr[6]>l then ovr = 1; plot2(fr[0],"상승0%"); plot3(fr[1],"상승23.6%"); plot4(fr[2],"상승38.2%"); plot5(fr[3],"상승50%"); plot6(fr[4],"상승61.8%"); plot7(fr[5],"상승76.4%"); plot8(fr[6],"상승100%"); } if 구분 == 하락 then { if crossup(hb[1],lb[1]) then { for jj = 0 to 7 begin fr[jj] = lv[1] + (hv[1] - lv[1]) * r[jj]; end; ovr = 0; } if fr[6]>l then ovr = 1; plot12(fr[0],"하락0%"); plot13(fr[1],"하락23.6%"); plot14(fr[2],"하락38.2%"); plot15(fr[3],"하락50%"); plot16(fr[4],"하락61.8%"); plot17(fr[5],"하락76.4%"); plot18(fr[6],"하락100%");
프로필 이미지

예스스탁 예스스탁 답변

2014-03-25 14:23:21

안녕하세요 예스스탁입니다. Input :short(5),Long(20); Var : T(0),mav1(0),mav2(0),HH(0),LL(0),PreHH(0),PreLL(0),VV(0); mav1 = ma(c,short); mav2 = ma(c,long); if crossup(mav1,mav2) Then{ plot1(L,"ZigZag",BLUE); T = 1; VV = (mav1+mav2)/2; HH = H; LL = L; PreHH = HH[1]; PreLL = LL[1]; } if CrossDown(mav1,mav2) Then{ plot1(H,"ZigZag",RED); T = -1; VV = (mav1+mav2)/2; HH = H; LL = L; PreHH = HH[1]; PreLL = LL[1]; } if H > HH Then HH = H; if L < LL Then LL = L; if PreHH > 0 and PreLL > 0 Then{ if T == 1 Then{ plot2(VV+(PreHH-PreLL)*0,"하락0%"); plot3(VV+(PreHH-PreLL)*0.236,"하락23.6%"); plot4(VV+(PreHH-PreLL)*0.382,"하락38.2%"); plot5(VV+(PreHH-PreLL)*0.500,"하락50%"); plot6(VV+(PreHH-PreLL)*0.618,"하락61.8%"); plot7(VV+(PreHH-PreLL)*0.764,"하락76.4%"); plot8(VV+(PreHH-PreLL)*1.000,"하락100%"); } if T == -1 Then{ plot2(VV-(PreHH-PreLL)*0,"하락0%"); plot3(VV-(PreHH-PreLL)*0.236,"하락23.6%"); plot4(VV-(PreHH-PreLL)*0.382,"하락38.2%"); plot5(VV-(PreHH-PreLL)*0.500,"하락50%"); plot6(VV-(PreHH-PreLL)*0.618,"하락61.8%"); plot7(VV-(PreHH-PreLL)*0.764,"하락76.4%"); plot8(VV-(PreHH-PreLL)*1.000,"하락100%"); } } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 전화주시기 바랍니다.(02-3453-1060) > > 이글루 님이 쓴 글입니다. > 제목 : 수식변환 부탁드립니다. > 항상 감사합니다. 아래식은 수식지왕님의 지표식입니다. 고점과 저점을 가격대신 5/20 이평의 데드크로스나 골드크로스가 생긴 자리로 변경하고싶습니다. 즉 앞 골드크로스가난 자리부터 데드크로스가 발생된자리까지가 상승파동으로 나타나고, 데드크로스에서 다시 골드크로스가 발생되면 하락파동끝으로 보고....이런식으로 피보나치값을 나타내고싶습니다. Input:상승률(1),하락률(1); Var:j(0),상승(100),하락(-100),양방향(2),색깔(0),파랑(-1),빨강(1), 기준고(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(이중파동,"Zigzag",Iff(색깔==빨강,RED,GREEN)); 이중파동 = 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 고[2] < 고[1] Then 색깔 = 빨강; If 이중파동[1] > 0 Then 이중파동 = 고[1]; Else plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); } 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; If 저[2] > 저[1] Then 색깔 = 파랑; plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 고[2] < 고[1] Then 색깔 = 빨강; 이중파동 = 고[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 저[2] > 저[1] Then 색깔 = 파랑; If 이중파동[1] > 0 Then 이중파동 = 저[1]; Else plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); } 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; If 고[2] < 고[1] Then 색깔 = 빨강; plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 저[2] > 저[1] Then 색깔 = 파랑; 이중파동 = 저[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 { If 고[2] < 고[1] Then 색깔 = 빨강; Plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 저[2] > 저[1] Then 색깔 = 파랑; 이중파동 = 저[1]; } Else { If 저[2] > 저[1] Then 색깔 = 파랑; Plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 고[2] < 고[1] Then 색깔 = 빨강; 이중파동 = 고[1]; } } #==========================================# # 마무리 #==========================================# If LastBarOnChart == 1 && 기준고Bar > 0 && 기준저Bar > 0 Then { If 추세 == 상승 Then { If 고[1] < 기준고 Then 색깔 = 빨강; Plot1(기준고,"Zigzag",Iff(색깔==빨강,RED,GREEN)); } Else { If 저[1] > 기준저 Then 색깔 = 파랑; Plot1(기준저,"Zigzag",Iff(색깔==빨강,RED,GREEN)); } } /* if 추세 == 상승 and 추세[1] != 상승 Then var1 = L[1]*(1+상승률/100); if 추세 == 하락 and 추세[1] != 하락 Then var1 = H[1]*(1-하락률/100); plot2(var1);*/ //작성자 : 수식지왕 input:left(5),right(5); var:jj(0),prehv(0),prelv(0),prehb(0),prelb(0),tmpv(0),tmpb(0), ovr(0),반등(-1),반락(1),구분(0); array:hv[10](0),lv[10](0),hb[10](0),lb[10](0), r[8](0),fr[8](0); 구분 = 추세; r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; r[7] = 1.618; #==============================================================================# # 변곡점 계산 #==============================================================================# //파동선 작성 설명은 자주 했으므로 생략 if highest(h[1],left) <= h then { prehv = h; prehb = 0; } else prehb = prehb + 1; if lowest(l[1],left) >= l then { prelv = l; prelb = 0; } else prelb = prelb + 1; for jj = 1 to 9 begin hb[jj] = hb[jj] + 1; lb[jj] = lb[jj] + 1; end; if prehb == right and highest(h,right) <= h[right] then { for jj = 9 downto 2 { hv[jj] = hv[jj-1]; hb[jj] = hb[jj-1]; } hv[1] = prehv; hb[1] = prehb; if lb[1] > hb[2] then { for jj = 9 downto 2 { lv[jj] = lv[jj-1]; lb[jj] = lb[jj-1]; } tmpv = 0; for jj = hb[1] + 1 to hb[2] - 1 { if tmpv > l[jj] or tmpv ==0 then { tmpv = l[jj]; tmpb = jj; } } lv[1] = tmpv; lb[1] = tmpb; } } if prelb == right and lowest(l,right) >= l[right] then { for jj = 9 downto 2 { lv[jj] = lv[jj-1]; lb[jj] = lb[jj-1]; } lv[1] = prelv; lb[1] = prelb; if hb[1] > lb[2] then { for jj = 9 downto 2 { hv[jj] = hv[jj-1]; hb[jj] = hb[jj-1]; } tmpv = 0; for jj = lb[1] + 1 to lb[2] - 1 { if tmpv < h[jj] or tmpv ==0 then { tmpv = h[jj]; tmpb = jj; } } hv[1] = tmpv; hb[1] = tmpb; } } #==============================================================================# # Fibonacci Retracements 계산 #==============================================================================# //반등과 반락을 모두 표시하게 되면 복잡해지므로 한 방향만 표시하는 것이 옳음 if 구분 == 상승 then { if crossup(lb[1],hb[1]) then { for jj = 0 to 7 begin fr[jj] = hv[1] - (hv[1] - lv[1]) * r[jj]; end; ovr = 0; } if fr[6]>l then ovr = 1; plot2(fr[0],"상승0%"); plot3(fr[1],"상승23.6%"); plot4(fr[2],"상승38.2%"); plot5(fr[3],"상승50%"); plot6(fr[4],"상승61.8%"); plot7(fr[5],"상승76.4%"); plot8(fr[6],"상승100%"); } if 구분 == 하락 then { if crossup(hb[1],lb[1]) then { for jj = 0 to 7 begin fr[jj] = lv[1] + (hv[1] - lv[1]) * r[jj]; end; ovr = 0; } if fr[6]>l then ovr = 1; plot12(fr[0],"하락0%"); plot13(fr[1],"하락23.6%"); plot14(fr[2],"하락38.2%"); plot15(fr[3],"하락50%"); plot16(fr[4],"하락61.8%"); plot17(fr[5],"하락76.4%"); plot18(fr[6],"하락100%");
프로필 이미지

이글루

2014-03-25 16:47:06

감사합니다. 수고하셨습니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : 수식입니다. > 안녕하세요 예스스탁입니다. Input :short(5),Long(20); Var : T(0),mav1(0),mav2(0),HH(0),LL(0),PreHH(0),PreLL(0),VV(0); mav1 = ma(c,short); mav2 = ma(c,long); if crossup(mav1,mav2) Then{ plot1(L,"ZigZag",BLUE); T = 1; VV = (mav1+mav2)/2; HH = H; LL = L; PreHH = HH[1]; PreLL = LL[1]; } if CrossDown(mav1,mav2) Then{ plot1(H,"ZigZag",RED); T = -1; VV = (mav1+mav2)/2; HH = H; LL = L; PreHH = HH[1]; PreLL = LL[1]; } if H > HH Then HH = H; if L < LL Then LL = L; if PreHH > 0 and PreLL > 0 Then{ if T == 1 Then{ plot2(VV+(PreHH-PreLL)*0,"하락0%"); plot3(VV+(PreHH-PreLL)*0.236,"하락23.6%"); plot4(VV+(PreHH-PreLL)*0.382,"하락38.2%"); plot5(VV+(PreHH-PreLL)*0.500,"하락50%"); plot6(VV+(PreHH-PreLL)*0.618,"하락61.8%"); plot7(VV+(PreHH-PreLL)*0.764,"하락76.4%"); plot8(VV+(PreHH-PreLL)*1.000,"하락100%"); } if T == -1 Then{ plot2(VV-(PreHH-PreLL)*0,"하락0%"); plot3(VV-(PreHH-PreLL)*0.236,"하락23.6%"); plot4(VV-(PreHH-PreLL)*0.382,"하락38.2%"); plot5(VV-(PreHH-PreLL)*0.500,"하락50%"); plot6(VV-(PreHH-PreLL)*0.618,"하락61.8%"); plot7(VV-(PreHH-PreLL)*0.764,"하락76.4%"); plot8(VV-(PreHH-PreLL)*1.000,"하락100%"); } } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 전화주시기 바랍니다.(02-3453-1060) > > 이글루 님이 쓴 글입니다. > 제목 : 수식변환 부탁드립니다. > 항상 감사합니다. 아래식은 수식지왕님의 지표식입니다. 고점과 저점을 가격대신 5/20 이평의 데드크로스나 골드크로스가 생긴 자리로 변경하고싶습니다. 즉 앞 골드크로스가난 자리부터 데드크로스가 발생된자리까지가 상승파동으로 나타나고, 데드크로스에서 다시 골드크로스가 발생되면 하락파동끝으로 보고....이런식으로 피보나치값을 나타내고싶습니다. Input:상승률(1),하락률(1); Var:j(0),상승(100),하락(-100),양방향(2),색깔(0),파랑(-1),빨강(1), 기준고(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(이중파동,"Zigzag",Iff(색깔==빨강,RED,GREEN)); 이중파동 = 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 고[2] < 고[1] Then 색깔 = 빨강; If 이중파동[1] > 0 Then 이중파동 = 고[1]; Else plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); } 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; If 저[2] > 저[1] Then 색깔 = 파랑; plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 고[2] < 고[1] Then 색깔 = 빨강; 이중파동 = 고[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 저[2] > 저[1] Then 색깔 = 파랑; If 이중파동[1] > 0 Then 이중파동 = 저[1]; Else plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); } 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; If 고[2] < 고[1] Then 색깔 = 빨강; plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 저[2] > 저[1] Then 색깔 = 파랑; 이중파동 = 저[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 { If 고[2] < 고[1] Then 색깔 = 빨강; Plot1(고[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 저[2] > 저[1] Then 색깔 = 파랑; 이중파동 = 저[1]; } Else { If 저[2] > 저[1] Then 색깔 = 파랑; Plot1(저[1],"Zigzag",Iff(색깔==빨강,RED,GREEN)); If 고[2] < 고[1] Then 색깔 = 빨강; 이중파동 = 고[1]; } } #==========================================# # 마무리 #==========================================# If LastBarOnChart == 1 && 기준고Bar > 0 && 기준저Bar > 0 Then { If 추세 == 상승 Then { If 고[1] < 기준고 Then 색깔 = 빨강; Plot1(기준고,"Zigzag",Iff(색깔==빨강,RED,GREEN)); } Else { If 저[1] > 기준저 Then 색깔 = 파랑; Plot1(기준저,"Zigzag",Iff(색깔==빨강,RED,GREEN)); } } /* if 추세 == 상승 and 추세[1] != 상승 Then var1 = L[1]*(1+상승률/100); if 추세 == 하락 and 추세[1] != 하락 Then var1 = H[1]*(1-하락률/100); plot2(var1);*/ //작성자 : 수식지왕 input:left(5),right(5); var:jj(0),prehv(0),prelv(0),prehb(0),prelb(0),tmpv(0),tmpb(0), ovr(0),반등(-1),반락(1),구분(0); array:hv[10](0),lv[10](0),hb[10](0),lb[10](0), r[8](0),fr[8](0); 구분 = 추세; r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; r[7] = 1.618; #==============================================================================# # 변곡점 계산 #==============================================================================# //파동선 작성 설명은 자주 했으므로 생략 if highest(h[1],left) <= h then { prehv = h; prehb = 0; } else prehb = prehb + 1; if lowest(l[1],left) >= l then { prelv = l; prelb = 0; } else prelb = prelb + 1; for jj = 1 to 9 begin hb[jj] = hb[jj] + 1; lb[jj] = lb[jj] + 1; end; if prehb == right and highest(h,right) <= h[right] then { for jj = 9 downto 2 { hv[jj] = hv[jj-1]; hb[jj] = hb[jj-1]; } hv[1] = prehv; hb[1] = prehb; if lb[1] > hb[2] then { for jj = 9 downto 2 { lv[jj] = lv[jj-1]; lb[jj] = lb[jj-1]; } tmpv = 0; for jj = hb[1] + 1 to hb[2] - 1 { if tmpv > l[jj] or tmpv ==0 then { tmpv = l[jj]; tmpb = jj; } } lv[1] = tmpv; lb[1] = tmpb; } } if prelb == right and lowest(l,right) >= l[right] then { for jj = 9 downto 2 { lv[jj] = lv[jj-1]; lb[jj] = lb[jj-1]; } lv[1] = prelv; lb[1] = prelb; if hb[1] > lb[2] then { for jj = 9 downto 2 { hv[jj] = hv[jj-1]; hb[jj] = hb[jj-1]; } tmpv = 0; for jj = lb[1] + 1 to lb[2] - 1 { if tmpv < h[jj] or tmpv ==0 then { tmpv = h[jj]; tmpb = jj; } } hv[1] = tmpv; hb[1] = tmpb; } } #==============================================================================# # Fibonacci Retracements 계산 #==============================================================================# //반등과 반락을 모두 표시하게 되면 복잡해지므로 한 방향만 표시하는 것이 옳음 if 구분 == 상승 then { if crossup(lb[1],hb[1]) then { for jj = 0 to 7 begin fr[jj] = hv[1] - (hv[1] - lv[1]) * r[jj]; end; ovr = 0; } if fr[6]>l then ovr = 1; plot2(fr[0],"상승0%"); plot3(fr[1],"상승23.6%"); plot4(fr[2],"상승38.2%"); plot5(fr[3],"상승50%"); plot6(fr[4],"상승61.8%"); plot7(fr[5],"상승76.4%"); plot8(fr[6],"상승100%"); } if 구분 == 하락 then { if crossup(hb[1],lb[1]) then { for jj = 0 to 7 begin fr[jj] = lv[1] + (hv[1] - lv[1]) * r[jj]; end; ovr = 0; } if fr[6]>l then ovr = 1; plot12(fr[0],"하락0%"); plot13(fr[1],"하락23.6%"); plot14(fr[2],"하락38.2%"); plot15(fr[3],"하락50%"); plot16(fr[4],"하락61.8%"); plot17(fr[5],"하락76.4%"); plot18(fr[6],"하락100%");