커뮤니티

시스템식 개선 요청

프로필 이미지
자아준
2011-02-08 23:18:59
1375
글번호 35551
답변완료

첨부 이미지

관리자님 수고하십니다. 먼저 아래의 수식을 개선하여 주신데 감사드리며, 새해 복많이 받으세요 아래 시스템식을 붙임 그림파일과 같은 조건(2006.5.12일경 )에서도 매도가 발생하도록 수식을 개선 부탁드립니다. 아마 지그재그 파동을 표현을 변경하여 구현할 수 있을 것 같은데,,, 그리고,, 주가차트 및 macd 지표 지그재그선 및 추세선을 출력하는 지표식을 부탁드립니다. Input:전환율(7),지표전환(0.4),유효기간(50); Var:j(0),value(0),다이버전스(0),다이버전스Bar(0),상승(100),하락(-100), 상승률(0),하락률(0),추세선(0), 기준고(0),기준저(0),기준고Bar(0),기준저Bar(0), 추세(0),zz(0), 지표기준고(0),지표기준저(0),지표기준고Bar(0),지표기준저Bar(0), 지표추세(0),지표zz(0); Array:고[10](0),저[10](0),고Bar[10](0),저Bar[10](0), 지표고[10](0),지표저[10](0),지표고Bar[10](0),지표저Bar[10](0); #=========================================================# # 초기처리 (Initialize Routine) #=========================================================# value = ema(MACD(12, 26),9); // MACD signal if CurrentBar > 0 then{ 상승률 = 1 + (전환율/100); 하락률 = 1 - (전환율/100); for j = 1 to 9 { 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; 지표저Bar[j] = 지표저Bar[j] + 1; 지표고Bar[j] = 지표고Bar[j] + 1; } 다이버전스Bar = 다이버전스Bar + 1; #=========================================================# # 주가 Zigzag 계산 #=========================================================# #---------------------------------------------------------# # 최근 고,저 갱신 #---------------------------------------------------------# if 기준고 <= H or 기준고 == 0 then { 기준고 = H; 기준고Bar = 0; } else 기준고Bar = 기준고Bar + 1; if 기준저 >= L or 기준저 == 0 then { 기준저 = L; 기준저Bar = 0; } else 기준저Bar = 기준저Bar + 1; #---------------------------------------------------------# # 파동 계산 Main #---------------------------------------------------------# if 기준고 * 하락률 > H and 기준저 * 상승률 < L then { //기준점의 인사이드일 경우 if 추세[1] == 상승 and ZZ < 기준저 then 추세 = 하락; else if 추세[1] == 하락 and ZZ > 기준고 then 추세 = 상승; } else if 기준고 * 하락률 > H then 추세 = 하락; else if 기준저 * 상승률 < L then 추세 = 상승; if 추세[1] == 상승 and 추세 == 하락 then { for j = 8 downto 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; ZZ = 기준고; 기준고 = H; 기준고Bar = 0; 기준저 = L; 기준저Bar = 0; } if 추세[1] == 하락 and 추세 == 하락 and 고[1] < 기준고 and 기준고 * 하락률 > H then { 고[1] = 기준고; 고Bar[1] = 기준고Bar; ZZ = 기준고; 기준고 = H; 기준고Bar = 0; 기준저 = L; 기준저Bar = 0; } if 추세[1] == 하락 and 추세 == 상승 then { for j = 8 downto 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1] = 기준저; 저Bar[1] = 기준저Bar; ZZ = 기준저; 기준저 = L; 기준저Bar = 0; 기준고 = H; 기준고Bar = 0; } if 추세[1] == 상승 and 추세 == 상승 and 저[1] > 기준저 and 기준저 * 상승률 < L then { 저[1] = 기준저; 저Bar[1] = 기준저Bar; ZZ = 기준저; 기준저 = L; 기준저Bar = 0; 기준고 = H; 기준고Bar = 0; } #=========================================================# # 지표식 Zigzag 계산 #=========================================================# #---------------------------------------------------------# # 최근 고,저 갱신 #---------------------------------------------------------# if 지표기준고 <= value or 지표기준고 == 0 then { 지표기준고 = value; 지표기준고Bar = 0; } else 지표기준고Bar = 지표기준고Bar + 1; if 지표기준저 >= value or 지표기준저 == 0 then { 지표기준저 = value; 지표기준저Bar = 0; } else 지표기준저Bar = 지표기준저Bar + 1; #---------------------------------------------------------# # 파동 계산 Main #---------------------------------------------------------# if 지표기준고 - 지표전환 > value and 지표기준저 + 지표전환 < value then { //기준점의 인사이드일 경우 if 지표추세[1] == 상승 and 지표ZZ < 지표기준저 then 지표추세 = 하락; else if 지표추세[1] == 하락 and 지표ZZ > 지표기준고 then 지표추세 = 상승; } else if 지표기준고 - 지표전환 > value then 지표추세 = 하락; else if 지표기준저 + 지표전환 < value then 지표추세 = 상승; if 지표추세[1] == 상승 and 지표추세 == 하락 then { for j = 8 downto 1 { 지표고[j+1] = 지표고[j]; 지표고Bar[j+1] = 지표고Bar[j]; } 지표고[1] = 지표기준고; 지표고Bar[1] = 지표기준고Bar; 지표ZZ = 지표기준고; 지표기준고 = value; 지표기준고Bar = 0; 지표기준저 = value; 지표기준저Bar = 0; } if 지표추세[1] == 하락 and 지표추세 == 하락 and 지표고[1] < 지표기준고 and 지표기준고 - 지표전환 > value then { 지표고[1] = 지표기준고; 지표고Bar[1] = 지표기준고Bar; 지표ZZ = 지표기준고; 지표기준고 = value; 지표기준고Bar = 0; 지표기준저 = value; 지표기준저Bar = 0; } if 지표추세[1] == 하락 and 지표추세 == 상승 then { for j = 8 downto 1 { 지표저[j+1] = 지표저[j]; 지표저Bar[j+1] = 지표저Bar[j]; } 지표저[1] = 지표기준저; 지표저Bar[1] = 지표기준저Bar; 지표ZZ = 지표기준저; 지표기준저 = value; 지표기준저Bar = 0; 지표기준고 = value; 지표기준고Bar = 0; } if 지표추세[1] == 상승 and 지표추세 == 상승 and 지표저[1] > 지표기준저 and 지표기준저 + 지표전환 < value then { 지표저[1] = 지표기준저; 지표저Bar[1] = 지표기준저Bar; 지표ZZ = 지표기준저; 지표기준저 = value; 지표기준저Bar = 0; 지표기준고 = value; 지표기준고Bar = 0; } #=========================================================# # 다이버전스 계산 #=========================================================# if ZZ[1] != ZZ or 지표ZZ[1] != 지표ZZ then { if 고[2] < 고[1] and 지표고[2] > 지표고[1] then { 다이버전스 = 하락; 다이버전스Bar = 0; } else if 저[2] > 저[1] and 지표저[2] < 지표저[1] then { 다이버전스 = 상승; 다이버전스Bar = 0; } } if 다이버전스Bar > 유효기간 then 다이버전스 = 0; #=========================================================# # 추세선 계산 #=========================================================# if 다이버전스 == 상승 then { 추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1]) * 고Bar[2] + 고[2]; } if 다이버전스 == 하락 then { 추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1]) * 저Bar[2] + 저[2]; } if 다이버전스 == 0 then { 추세선 = 0; } #=========================================================# # 시스템 식 #=========================================================# if 다이버전스 == 상승 and C > ma(C,20) and CrossUp(C,추세선) then Buy("매수"); if 다이버전스 == 하락 and C < ma(C,20) and CrossDown(C,추세선) then Sell("매도"); }
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2011-02-09 09:41:11

안녕하세요 예스스탁입니다. 정확한 식작성을 위해 첨부한 그림에 적용되어 있는 zigzag파동선의 수식을 올려주시기 바랍니다. 해당 식이 있어야 구현 가능할 것 같습니다 즐거운 하루되세요 > 자아준 님이 쓴 글입니다. > 제목 : 시스템식 개선 요청 > 관리자님 수고하십니다. 먼저 아래의 수식을 개선하여 주신데 감사드리며, 새해 복많이 받으세요 아래 시스템식을 붙임 그림파일과 같은 조건(2006.5.12일경 )에서도 매도가 발생하도록 수식을 개선 부탁드립니다. 아마 지그재그 파동을 표현을 변경하여 구현할 수 있을 것 같은데,,, 그리고,, 주가차트 및 macd 지표 지그재그선 및 추세선을 출력하는 지표식을 부탁드립니다. Input:전환율(7),지표전환(0.4),유효기간(50); Var:j(0),value(0),다이버전스(0),다이버전스Bar(0),상승(100),하락(-100), 상승률(0),하락률(0),추세선(0), 기준고(0),기준저(0),기준고Bar(0),기준저Bar(0), 추세(0),zz(0), 지표기준고(0),지표기준저(0),지표기준고Bar(0),지표기준저Bar(0), 지표추세(0),지표zz(0); Array:고[10](0),저[10](0),고Bar[10](0),저Bar[10](0), 지표고[10](0),지표저[10](0),지표고Bar[10](0),지표저Bar[10](0); #=========================================================# # 초기처리 (Initialize Routine) #=========================================================# value = ema(MACD(12, 26),9); // MACD signal if CurrentBar > 0 then{ 상승률 = 1 + (전환율/100); 하락률 = 1 - (전환율/100); for j = 1 to 9 { 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; 지표저Bar[j] = 지표저Bar[j] + 1; 지표고Bar[j] = 지표고Bar[j] + 1; } 다이버전스Bar = 다이버전스Bar + 1; #=========================================================# # 주가 Zigzag 계산 #=========================================================# #---------------------------------------------------------# # 최근 고,저 갱신 #---------------------------------------------------------# if 기준고 <= H or 기준고 == 0 then { 기준고 = H; 기준고Bar = 0; } else 기준고Bar = 기준고Bar + 1; if 기준저 >= L or 기준저 == 0 then { 기준저 = L; 기준저Bar = 0; } else 기준저Bar = 기준저Bar + 1; #---------------------------------------------------------# # 파동 계산 Main #---------------------------------------------------------# if 기준고 * 하락률 > H and 기준저 * 상승률 < L then { //기준점의 인사이드일 경우 if 추세[1] == 상승 and ZZ < 기준저 then 추세 = 하락; else if 추세[1] == 하락 and ZZ > 기준고 then 추세 = 상승; } else if 기준고 * 하락률 > H then 추세 = 하락; else if 기준저 * 상승률 < L then 추세 = 상승; if 추세[1] == 상승 and 추세 == 하락 then { for j = 8 downto 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; ZZ = 기준고; 기준고 = H; 기준고Bar = 0; 기준저 = L; 기준저Bar = 0; } if 추세[1] == 하락 and 추세 == 하락 and 고[1] < 기준고 and 기준고 * 하락률 > H then { 고[1] = 기준고; 고Bar[1] = 기준고Bar; ZZ = 기준고; 기준고 = H; 기준고Bar = 0; 기준저 = L; 기준저Bar = 0; } if 추세[1] == 하락 and 추세 == 상승 then { for j = 8 downto 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1] = 기준저; 저Bar[1] = 기준저Bar; ZZ = 기준저; 기준저 = L; 기준저Bar = 0; 기준고 = H; 기준고Bar = 0; } if 추세[1] == 상승 and 추세 == 상승 and 저[1] > 기준저 and 기준저 * 상승률 < L then { 저[1] = 기준저; 저Bar[1] = 기준저Bar; ZZ = 기준저; 기준저 = L; 기준저Bar = 0; 기준고 = H; 기준고Bar = 0; } #=========================================================# # 지표식 Zigzag 계산 #=========================================================# #---------------------------------------------------------# # 최근 고,저 갱신 #---------------------------------------------------------# if 지표기준고 <= value or 지표기준고 == 0 then { 지표기준고 = value; 지표기준고Bar = 0; } else 지표기준고Bar = 지표기준고Bar + 1; if 지표기준저 >= value or 지표기준저 == 0 then { 지표기준저 = value; 지표기준저Bar = 0; } else 지표기준저Bar = 지표기준저Bar + 1; #---------------------------------------------------------# # 파동 계산 Main #---------------------------------------------------------# if 지표기준고 - 지표전환 > value and 지표기준저 + 지표전환 < value then { //기준점의 인사이드일 경우 if 지표추세[1] == 상승 and 지표ZZ < 지표기준저 then 지표추세 = 하락; else if 지표추세[1] == 하락 and 지표ZZ > 지표기준고 then 지표추세 = 상승; } else if 지표기준고 - 지표전환 > value then 지표추세 = 하락; else if 지표기준저 + 지표전환 < value then 지표추세 = 상승; if 지표추세[1] == 상승 and 지표추세 == 하락 then { for j = 8 downto 1 { 지표고[j+1] = 지표고[j]; 지표고Bar[j+1] = 지표고Bar[j]; } 지표고[1] = 지표기준고; 지표고Bar[1] = 지표기준고Bar; 지표ZZ = 지표기준고; 지표기준고 = value; 지표기준고Bar = 0; 지표기준저 = value; 지표기준저Bar = 0; } if 지표추세[1] == 하락 and 지표추세 == 하락 and 지표고[1] < 지표기준고 and 지표기준고 - 지표전환 > value then { 지표고[1] = 지표기준고; 지표고Bar[1] = 지표기준고Bar; 지표ZZ = 지표기준고; 지표기준고 = value; 지표기준고Bar = 0; 지표기준저 = value; 지표기준저Bar = 0; } if 지표추세[1] == 하락 and 지표추세 == 상승 then { for j = 8 downto 1 { 지표저[j+1] = 지표저[j]; 지표저Bar[j+1] = 지표저Bar[j]; } 지표저[1] = 지표기준저; 지표저Bar[1] = 지표기준저Bar; 지표ZZ = 지표기준저; 지표기준저 = value; 지표기준저Bar = 0; 지표기준고 = value; 지표기준고Bar = 0; } if 지표추세[1] == 상승 and 지표추세 == 상승 and 지표저[1] > 지표기준저 and 지표기준저 + 지표전환 < value then { 지표저[1] = 지표기준저; 지표저Bar[1] = 지표기준저Bar; 지표ZZ = 지표기준저; 지표기준저 = value; 지표기준저Bar = 0; 지표기준고 = value; 지표기준고Bar = 0; } #=========================================================# # 다이버전스 계산 #=========================================================# if ZZ[1] != ZZ or 지표ZZ[1] != 지표ZZ then { if 고[2] < 고[1] and 지표고[2] > 지표고[1] then { 다이버전스 = 하락; 다이버전스Bar = 0; } else if 저[2] > 저[1] and 지표저[2] < 지표저[1] then { 다이버전스 = 상승; 다이버전스Bar = 0; } } if 다이버전스Bar > 유효기간 then 다이버전스 = 0; #=========================================================# # 추세선 계산 #=========================================================# if 다이버전스 == 상승 then { 추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1]) * 고Bar[2] + 고[2]; } if 다이버전스 == 하락 then { 추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1]) * 저Bar[2] + 저[2]; } if 다이버전스 == 0 then { 추세선 = 0; } #=========================================================# # 시스템 식 #=========================================================# if 다이버전스 == 상승 and C > ma(C,20) and CrossUp(C,추세선) then Buy("매수"); if 다이버전스 == 하락 and C < ma(C,20) and CrossDown(C,추세선) then Sell("매도"); }
프로필 이미지

자아준

2011-02-09 16:37:47

수고하십니다. 밑의 시스템식만이라도 주가차트 및 macd 지표 지그재그선 및 추세선을 출력하는 지표식을 부탁드립니다. Input:전환율(7),지표전환(0.4),유효기간(50); Var:j(0),value(0),다이버전스(0),다이버전스Bar(0),상승(100),하락(-100), 상승률(0),하락률(0),추세선(0), 기준고(0),기준저(0),기준고Bar(0),기준저Bar(0), 추세(0),zz(0), 지표기준고(0),지표기준저(0),지표기준고Bar(0),지표기준저Bar(0), 지표추세(0),지표zz(0); Array:고[10](0),저[10](0),고Bar[10](0),저Bar[10](0), 지표고[10](0),지표저[10](0),지표고Bar[10](0),지표저Bar[10](0); #=========================================================# # 초기처리 (Initialize Routine) #=========================================================# value = ema(MACD(12, 26),9); // MACD signal if CurrentBar > 0 then{ 상승률 = 1 + (전환율/100); 하락률 = 1 - (전환율/100); for j = 1 to 9 { 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; 지표저Bar[j] = 지표저Bar[j] + 1; 지표고Bar[j] = 지표고Bar[j] + 1; } 다이버전스Bar = 다이버전스Bar + 1; #=========================================================# # 주가 Zigzag 계산 #=========================================================# #---------------------------------------------------------# # 최근 고,저 갱신 #---------------------------------------------------------# if 기준고 <= H or 기준고 == 0 then { 기준고 = H; 기준고Bar = 0; } else 기준고Bar = 기준고Bar + 1; if 기준저 >= L or 기준저 == 0 then { 기준저 = L; 기준저Bar = 0; } else 기준저Bar = 기준저Bar + 1; #---------------------------------------------------------# # 파동 계산 Main #---------------------------------------------------------# if 기준고 * 하락률 > H and 기준저 * 상승률 < L then { //기준점의 인사이드일 경우 if 추세[1] == 상승 and ZZ < 기준저 then 추세 = 하락; else if 추세[1] == 하락 and ZZ > 기준고 then 추세 = 상승; } else if 기준고 * 하락률 > H then 추세 = 하락; else if 기준저 * 상승률 < L then 추세 = 상승; if 추세[1] == 상승 and 추세 == 하락 then { for j = 8 downto 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; ZZ = 기준고; 기준고 = H; 기준고Bar = 0; 기준저 = L; 기준저Bar = 0; } if 추세[1] == 하락 and 추세 == 하락 and 고[1] < 기준고 and 기준고 * 하락률 > H then { 고[1] = 기준고; 고Bar[1] = 기준고Bar; ZZ = 기준고; 기준고 = H; 기준고Bar = 0; 기준저 = L; 기준저Bar = 0; } if 추세[1] == 하락 and 추세 == 상승 then { for j = 8 downto 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1] = 기준저; 저Bar[1] = 기준저Bar; ZZ = 기준저; 기준저 = L; 기준저Bar = 0; 기준고 = H; 기준고Bar = 0; } if 추세[1] == 상승 and 추세 == 상승 and 저[1] > 기준저 and 기준저 * 상승률 < L then { 저[1] = 기준저; 저Bar[1] = 기준저Bar; ZZ = 기준저; 기준저 = L; 기준저Bar = 0; 기준고 = H; 기준고Bar = 0; } #=========================================================# # 지표식 Zigzag 계산 #=========================================================# #---------------------------------------------------------# # 최근 고,저 갱신 #---------------------------------------------------------# if 지표기준고 <= value or 지표기준고 == 0 then { 지표기준고 = value; 지표기준고Bar = 0; } else 지표기준고Bar = 지표기준고Bar + 1; if 지표기준저 >= value or 지표기준저 == 0 then { 지표기준저 = value; 지표기준저Bar = 0; } else 지표기준저Bar = 지표기준저Bar + 1; #---------------------------------------------------------# # 파동 계산 Main #---------------------------------------------------------# if 지표기준고 - 지표전환 > value and 지표기준저 + 지표전환 < value then { //기준점의 인사이드일 경우 if 지표추세[1] == 상승 and 지표ZZ < 지표기준저 then 지표추세 = 하락; else if 지표추세[1] == 하락 and 지표ZZ > 지표기준고 then 지표추세 = 상승; } else if 지표기준고 - 지표전환 > value then 지표추세 = 하락; else if 지표기준저 + 지표전환 < value then 지표추세 = 상승; if 지표추세[1] == 상승 and 지표추세 == 하락 then { for j = 8 downto 1 { 지표고[j+1] = 지표고[j]; 지표고Bar[j+1] = 지표고Bar[j]; } 지표고[1] = 지표기준고; 지표고Bar[1] = 지표기준고Bar; 지표ZZ = 지표기준고; 지표기준고 = value; 지표기준고Bar = 0; 지표기준저 = value; 지표기준저Bar = 0; } if 지표추세[1] == 하락 and 지표추세 == 하락 and 지표고[1] < 지표기준고 and 지표기준고 - 지표전환 > value then { 지표고[1] = 지표기준고; 지표고Bar[1] = 지표기준고Bar; 지표ZZ = 지표기준고; 지표기준고 = value; 지표기준고Bar = 0; 지표기준저 = value; 지표기준저Bar = 0; } if 지표추세[1] == 하락 and 지표추세 == 상승 then { for j = 8 downto 1 { 지표저[j+1] = 지표저[j]; 지표저Bar[j+1] = 지표저Bar[j]; } 지표저[1] = 지표기준저; 지표저Bar[1] = 지표기준저Bar; 지표ZZ = 지표기준저; 지표기준저 = value; 지표기준저Bar = 0; 지표기준고 = value; 지표기준고Bar = 0; } if 지표추세[1] == 상승 and 지표추세 == 상승 and 지표저[1] > 지표기준저 and 지표기준저 + 지표전환 < value then { 지표저[1] = 지표기준저; 지표저Bar[1] = 지표기준저Bar; 지표ZZ = 지표기준저; 지표기준저 = value; 지표기준저Bar = 0; 지표기준고 = value; 지표기준고Bar = 0; } #=========================================================# # 다이버전스 계산 #=========================================================# if ZZ[1] != ZZ or 지표ZZ[1] != 지표ZZ then { if 고[2] < 고[1] and 지표고[2] > 지표고[1] then { 다이버전스 = 하락; 다이버전스Bar = 0; } else if 저[2] > 저[1] and 지표저[2] < 지표저[1] then { 다이버전스 = 상승; 다이버전스Bar = 0; } } if 다이버전스Bar > 유효기간 then 다이버전스 = 0; #=========================================================# # 추세선 계산 #=========================================================# if 다이버전스 == 상승 then { 추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1]) * 고Bar[2] + 고[2]; } if 다이버전스 == 하락 then { 추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1]) * 저Bar[2] + 저[2]; } if 다이버전스 == 0 then { 추세선 = 0; } #=========================================================# # 시스템 식 #=========================================================# if 다이버전스 == 상승 and C > ma(C,20) and CrossUp(C,추세선) then Buy("매수"); if 다이버전스 == 하락 and C < ma(C,20) and CrossDown(C,추세선) then Sell("매도"); }