커뮤니티

시스템 오류수정 부탁합니다.

프로필 이미지
이대표
2019-06-29 12:44:29
173
글번호 129867
답변완료
아래 시스템식 오류수정 부탁합니다. Input:주가파동기간(7),지표파동기간(10),유효기간(40); Var:j(0),k(0),value(0),n1(0),n2(0),추세선(0),다이버전스(0),다이버전스Bar(0), 상승(100),하락(-100); Array:고[10](0),저[10](0),고Bar[10](0),저Bar[10](0), 지표고[10](0),지표저[10](0),지표고Bar[10](0),지표저Bar[10](0); #=========================================================# # 초기처리 (Initialize Routine) #=========================================================# n1 = 주가파동기간; n2 = 지표파동기간; value = ema(MACD(12, 26),9); //value = stochasticsD(12,5,5); 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; #=========================================================# # 주가 Swing 계산 #=========================================================# #---------------------------------------------------------# # 전고점(Peak) 계산 #---------------------------------------------------------# if Highest(H,n1)[n1+1] <= H[n1] and H[n1] > Highest(H,n1) then { for j = 8 downto 1 { 고[j+1]= 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1]= H[n1]; 고Bar[1] = n1; if 저Bar[1] > 고Bar[2] then { for j = 8 downto 1 { 저[j+1]= 저[j]; 저Bar[j+1] = 저Bar[j]; } k = n1 + 1; for j = n1 + 2 to 고Bar[2]-1 { if L[k] > L[j] then k = j; } 저[1]= L[k]; 저Bar[1] = k; } } #---------------------------------------------------------# # 전저점(Trough) 계산 #---------------------------------------------------------# if Lowest(L,n1)[n1+1] >= L[n1] and L[n1] < Lowest(L,n1) then { for j = 8 downto 1 { 저[j+1]= 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1]= L[n1]; 저Bar[1] = n1; if 고Bar[1] > 저Bar[2] then { for j = 8 downto 1 { 고[j+1]= 고[j]; 고Bar[j+1] = 고Bar[j]; } k = n1 + 1; for j = n1 + 2 to 저Bar[2]-1 { if H[k] < H[j] then k = j; } 고[1]= H[k]; 고Bar[1] = k; } } #=========================================================# # 지표식 Swing 계산 #=========================================================# #---------------------------------------------------------# # 전고점(Peak) 계산 #---------------------------------------------------------# if Highest(value,n2)[n2+1] <= value[n2] and value[n2] > Highest(value,n2) then { for j = 8 downto 1 {//배열값을 순차적으로 바꿔준다 지표고[j+1]= 지표고[j]; 지표고Bar[j+1] = 지표고Bar[j]; } k = n2 + 1; for j = n2 + 2 to 지표고Bar[2]-1 { if value[k] > value[j] then k = j; } 지표저[1]= value[k]; 지표저Bar[1] = k; } } #---------------------------------------------------------# # 전저점(Trough) 계산 #---------------------------------------------------------# if Lowest(value,n2)[n2+1] >= value[n2] and value[n2] < Lowest(value,n2) then { for j = 8 downto 1 { 지표저[j+1]= 지표저[j]; 지표저Bar[j+1] = 지표저Bar[j]; } 지표저[1]= value[n2]; 지표저Bar[1] = n2; if 지표고Bar[1] > 지표저Bar[2] then { for j = 8 downto 1 { 지표고[j+1]= 지표고[j]; 지표고Bar[j+1] = 지표고Bar[j]; } k = n2 + 1; for j = n2 + 2 to 지표저Bar[2]-1 { if value[k] < value[j] then k = j; } 지표고[1]= value[k]; 지표고Bar[1] = k; } } #=========================================================# # 다이버전스 계산 #=========================================================# if 고Bar[1] == n1 or 지표고Bar[1] == n2 or 저Bar[1] == n1 or 지표저Bar[1] == n2 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();
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-07-01 10:43:31

안녕하세요 예스스탁입니다. Input:주가파동기간(7),지표파동기간(10),유효기간(40); Var:j(0),k(0),value(0),n1(0),n2(0),추세선(0),다이버전스(0),다이버전스Bar(0), 상승(100),하락(-100); array:고[10](0),저[10](0),고Bar[10](0),저Bar[10](0), 지표고[10](0),지표저[10](0),지표고Bar[10](0),지표저Bar[10](0); #=========================================================# # 초기처리 (Initialize Routine) #=========================================================# n1 = 주가파동기간; n2 = 지표파동기간; value = ema(MACD(12, 26),9); //value = stochasticsD(12,5,5); 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; #=========================================================# # 주가 Swing 계산 #=========================================================# #---------------------------------------------------------# # 전고점(Peak) 계산 #---------------------------------------------------------# if Highest(H,n1)[n1+1] <= H[n1] and H[n1] > Highest(H,n1) then { for j = 8 downto 1 { 고[j+1]= 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1]= H[n1]; 고Bar[1] = n1; if 저Bar[1] > 고Bar[2] then { for j = 8 downto 1 { 저[j+1]= 저[j]; 저Bar[j+1] = 저Bar[j]; } k = n1 + 1; for j = n1 + 2 to 고Bar[2]-1 { if L[k] > L[j] then k = j; } 저[1]= L[k]; 저Bar[1] = k; } } #---------------------------------------------------------# # 전저점(Trough) 계산 #---------------------------------------------------------# if Lowest(L,n1)[n1+1] >= L[n1] and L[n1] < Lowest(L,n1) then { for j = 8 downto 1 { 저[j+1]= 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1]= L[n1]; 저Bar[1] = n1; if 고Bar[1] > 저Bar[2] then { for j = 8 downto 1 { 고[j+1]= 고[j]; 고Bar[j+1] = 고Bar[j]; } k = n1 + 1; for j = n1 + 2 to 저Bar[2]-1 { if H[k] < H[j] then k = j; } 고[1]= H[k]; 고Bar[1] = k; } } #=========================================================# # 지표식 Swing 계산 #=========================================================# #---------------------------------------------------------# # 전고점(Peak) 계산 #---------------------------------------------------------# if Highest(value,n2)[n2+1] <= value[n2] and value[n2] > Highest(value,n2) then { for j = 8 downto 1 {//배열값을 순차적으로 바꿔준다 지표고[j+1]= 지표고[j]; 지표고Bar[j+1] = 지표고Bar[j]; } k = n2 + 1; for j = n2 + 2 to 지표고Bar[2]-1 { if value[k] > value[j] then k = j; } 지표저[1]= value[k]; 지표저Bar[1] = k; } #---------------------------------------------------------# # 전저점(Trough) 계산 #---------------------------------------------------------# if Lowest(value,n2)[n2+1] >= value[n2] and value[n2] < Lowest(value,n2) then { for j = 8 downto 1 { 지표저[j+1]= 지표저[j]; 지표저Bar[j+1] = 지표저Bar[j]; } 지표저[1]= value[n2]; 지표저Bar[1] = n2; if 지표고Bar[1] > 지표저Bar[2] then { for j = 8 downto 1 { 지표고[j+1]= 지표고[j]; 지표고Bar[j+1] = 지표고Bar[j]; } k = n2 + 1; for j = n2 + 2 to 지표저Bar[2]-1 { if value[k] < value[j] then k = j; } 지표고[1]= value[k]; 지표고Bar[1] = k; } } #=========================================================# # 다이버전스 계산 #=========================================================# if 고Bar[1] == n1 or 지표고Bar[1] == n2 or 저Bar[1] == n1 or 지표저Bar[1] == n2 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(); 즐거운 하루되세요 > 이대표 님이 쓴 글입니다. > 제목 : 시스템 오류수정 부탁합니다. > 아래 시스템식 오류수정 부탁합니다. Input:주가파동기간(7),지표파동기간(10),유효기간(40); Var:j(0),k(0),value(0),n1(0),n2(0),추세선(0),다이버전스(0),다이버전스Bar(0), 상승(100),하락(-100); Array:고[10](0),저[10](0),고Bar[10](0),저Bar[10](0), 지표고[10](0),지표저[10](0),지표고Bar[10](0),지표저Bar[10](0); #=========================================================# # 초기처리 (Initialize Routine) #=========================================================# n1 = 주가파동기간; n2 = 지표파동기간; value = ema(MACD(12, 26),9); //value = stochasticsD(12,5,5); 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; #=========================================================# # 주가 Swing 계산 #=========================================================# #---------------------------------------------------------# # 전고점(Peak) 계산 #---------------------------------------------------------# if Highest(H,n1)[n1+1] <= H[n1] and H[n1] > Highest(H,n1) then { for j = 8 downto 1 { 고[j+1]= 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1]= H[n1]; 고Bar[1] = n1; if 저Bar[1] > 고Bar[2] then { for j = 8 downto 1 { 저[j+1]= 저[j]; 저Bar[j+1] = 저Bar[j]; } k = n1 + 1; for j = n1 + 2 to 고Bar[2]-1 { if L[k] > L[j] then k = j; } 저[1]= L[k]; 저Bar[1] = k; } } #---------------------------------------------------------# # 전저점(Trough) 계산 #---------------------------------------------------------# if Lowest(L,n1)[n1+1] >= L[n1] and L[n1] < Lowest(L,n1) then { for j = 8 downto 1 { 저[j+1]= 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1]= L[n1]; 저Bar[1] = n1; if 고Bar[1] > 저Bar[2] then { for j = 8 downto 1 { 고[j+1]= 고[j]; 고Bar[j+1] = 고Bar[j]; } k = n1 + 1; for j = n1 + 2 to 저Bar[2]-1 { if H[k] < H[j] then k = j; } 고[1]= H[k]; 고Bar[1] = k; } } #=========================================================# # 지표식 Swing 계산 #=========================================================# #---------------------------------------------------------# # 전고점(Peak) 계산 #---------------------------------------------------------# if Highest(value,n2)[n2+1] <= value[n2] and value[n2] > Highest(value,n2) then { for j = 8 downto 1 {//배열값을 순차적으로 바꿔준다 지표고[j+1]= 지표고[j]; 지표고Bar[j+1] = 지표고Bar[j]; } k = n2 + 1; for j = n2 + 2 to 지표고Bar[2]-1 { if value[k] > value[j] then k = j; } 지표저[1]= value[k]; 지표저Bar[1] = k; } } #---------------------------------------------------------# # 전저점(Trough) 계산 #---------------------------------------------------------# if Lowest(value,n2)[n2+1] >= value[n2] and value[n2] < Lowest(value,n2) then { for j = 8 downto 1 { 지표저[j+1]= 지표저[j]; 지표저Bar[j+1] = 지표저Bar[j]; } 지표저[1]= value[n2]; 지표저Bar[1] = n2; if 지표고Bar[1] > 지표저Bar[2] then { for j = 8 downto 1 { 지표고[j+1]= 지표고[j]; 지표고Bar[j+1] = 지표고Bar[j]; } k = n2 + 1; for j = n2 + 2 to 지표저Bar[2]-1 { if value[k] < value[j] then k = j; } 지표고[1]= value[k]; 지표고Bar[1] = k; } } #=========================================================# # 다이버전스 계산 #=========================================================# if 고Bar[1] == n1 or 지표고Bar[1] == n2 or 저Bar[1] == n1 or 지표저Bar[1] == n2 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();