커뮤니티

지표 수식(QA 75978번 지표3)의 추가 검토 부탁드립니다.

프로필 이미지
원칙투자자
2022-02-18 01:30:36
1353
글번호 156423
답변완료

첨부 이미지

담당자님, 안녕하세요. (Q&A 75978번에 대한 추가 질의입니다.) 지난번 Q&A 75978번에서 담당자님께서 검토해서 수정해 주신 수식을 잘 활용하고 있습니다. 그런데, 지표3의 시스템 산출 결과가 제가 의도했던 것과는 다른 결과가 산출됩니다. <지표3>은 일자별로 절대값(종가-시가) 값이 가장 큰 30분봉 중에서 상위 3개의 30분봉을 선택하고 그 봉에 해당하는 각각의 '(종가+시가)/2'를 계산하여 그 값을 당일(D)에 수평선 라인으로 표시하는 것입니다. 제가 실제 데이터로 검증해보니까 예를 들면, 1) 2022.02.04와 2021.07.05의 경우 상위 1, 2번째 값은 정확한 값을 산출했지만 상위 3번째에 대해서는 3번째 값 대신에 상위 4번째에 해당하는 값을 산출합니다. 2) 2020.03.27의 경우에는 데이터로 계산한 수치와 전혀 다른 값을 산출합니다. 제가 수기 계산해서 검토한 내용을 엑셀 파일로 첨부하였고 시뮬레이션 차트에서 실행한 결과(산출된 수치)를 화면 캡쳐하여 엑셀파일에 같이 첨부하였습니다. 참고하시기 바랍니다. 엑셀에서 그림 파일이 안열리는 거 가아서 그림파일도 따로 첨부합니다. <지표3>에 대해서 질의 내용과 다른 결과가 도출되는 점에 대해 검토해주시고 다시 한번 수정해 주실 것을 부탁드립니다. 담당자님을 계속 번거롭게 해드려 죄송합니다. 제 나름으로는 의미 있게 생각하는 지표라 계속 연구하고 있는 중이라 그렇습니다. 수정해서 작성해 주시는 것에 미리 감사드립니다. (담당자님의 편의를 위하여 Q&A 75978번에서 담당자님께서 수정해서 작성해주신 답변내용 중 <지표3> 부분만 발췌해서 아래에 기재하였습니다.) ============================================== ============================================== 작성자 : 예스스탁 작성일 : 2022-02-17 오전 9:58:08 조회수 : 7 지표 Re : 지표 수식(지표2와 지표3)의 검토 부탁드립니다 안녕하세요 예스스탁입니다. 평균값저장이 최고차이발생봉까지만 대상으로 저장되게 되어 있었습니다. 1번식과 같은 경우는 관계없지만 2번과 3번과 같이 시종의 중간값을 저장할때 그이후시간의 종가가 반영되지 않았었습니다. 1~3번식 모두 수정해 드립니다. (<지표1, 2> 수식은 기재생략) 3 input : 타주기분(30),n(10); var : S1(0),D1(0),TM(0),TF(0),cnt(0),OO(0),CC(0); var : ii(0),i1(0),i2(0),tempmax(0),tempi(0); Array : R1[50](0),M1[50](0); Array : tempR1[50](0),tempM1[50](0),NTHVALUE[50](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; for cnt = 1 to 49 { R1[cnt] = R1[cnt-1][1]; M1[cnt] = M1[cnt-1][1]; } } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { OO = O; CC = C; Condition1 = False; if Bdate != Bdate[1] Then { R1[0] = 0; M1[0] = 0; } } CC = C; if abs(OO-CC) > R1[0] Then { R1[0] = abs(OO-CC); Condition1 = true; } if Condition1 == true Then M1[0] = (OO+CC)/2; if M1[n] > 0 Then { for ii = 0 to 49 { tempR1[ii] = R1[ii]; tempM1[ii] = M1[ii]; } For i1 = 1 to n { tempmax = -1; For i2 = 1 to n { if (tempR1[i2] >= tempmax ) then { tempmax = tempR1[i2]; tempi = i2; } } NTHVALUE[i1] = tempM1[tempi]; tempR1[tempi] = -1; } Plot1(NTHVALUE[1]); Plot2(NTHVALUE[2]); Plot3(NTHVALUE[3]); } }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-02-18 11:19:47

안녕하세요 예스스탁입니다. 수정한 식입니다. input : 타주기분(30),n(10); var : S1(0),D1(0),TM(0),TF(0),cnt(0),OO(0),CC(0); var : ii(0),i1(0),i2(0),tempmax(0),tempi(0),tR1(0),tM1(0),di(0); Array : R1[50](0),M1[50](0); Array : tempR1[50](0),tempM1[50](0),NTHVALUE[50](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; di = 0; for cnt = 1 to 49 { R1[cnt] = R1[cnt-1][1]; M1[cnt] = M1[cnt-1][1]; } } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { OO = O; CC = C; di = di+1; tR1 = R1[0][1]; tM1 = M1[0][1]; if Bdate != Bdate[1] Then { R1[0] = 0; M1[0] = 0; } } CC = C; if di == 1 then { R1[0] = abs(OO-CC); M1[0] = (OO+CC)/2; } if di > 1 then { if abs(OO-CC) >= R1[0] Then { R1[0] = abs(OO-CC); M1[0] = (OO+CC)/2; } Else { R1[0] = tR1; M1[0] = tM1; } } if M1[n] > 0 Then { for ii = 0 to 49 { tempR1[ii] = R1[ii]; tempM1[ii] = M1[ii]; } For i1 = 1 to n { tempmax = -1; For i2 = 1 to n { if (tempR1[i2] >= tempmax ) then { tempmax = tempR1[i2]; tempi = i2; } } NTHVALUE[i1] = tempM1[tempi]; tempR1[tempi] = -1; } Plot1(NTHVALUE[1]); Plot2(NTHVALUE[2]); Plot3(NTHVALUE[3]); } } 즐거운 하루되세요 > 원칙투자자 님이 쓴 글입니다. > 제목 : 지표 수식(QA 75978번 지표3)의 추가 검토 부탁드립니다. > 담당자님, 안녕하세요. (Q&A 75978번에 대한 추가 질의입니다.) 지난번 Q&A 75978번에서 담당자님께서 검토해서 수정해 주신 수식을 잘 활용하고 있습니다. 그런데, 지표3의 시스템 산출 결과가 제가 의도했던 것과는 다른 결과가 산출됩니다. <지표3>은 일자별로 절대값(종가-시가) 값이 가장 큰 30분봉 중에서 상위 3개의 30분봉을 선택하고 그 봉에 해당하는 각각의 '(종가+시가)/2'를 계산하여 그 값을 당일(D)에 수평선 라인으로 표시하는 것입니다. 제가 실제 데이터로 검증해보니까 예를 들면, 1) 2022.02.04와 2021.07.05의 경우 상위 1, 2번째 값은 정확한 값을 산출했지만 상위 3번째에 대해서는 3번째 값 대신에 상위 4번째에 해당하는 값을 산출합니다. 2) 2020.03.27의 경우에는 데이터로 계산한 수치와 전혀 다른 값을 산출합니다. 제가 수기 계산해서 검토한 내용을 엑셀 파일로 첨부하였고 시뮬레이션 차트에서 실행한 결과(산출된 수치)를 화면 캡쳐하여 엑셀파일에 같이 첨부하였습니다. 참고하시기 바랍니다. 엑셀에서 그림 파일이 안열리는 거 가아서 그림파일도 따로 첨부합니다. <지표3>에 대해서 질의 내용과 다른 결과가 도출되는 점에 대해 검토해주시고 다시 한번 수정해 주실 것을 부탁드립니다. 담당자님을 계속 번거롭게 해드려 죄송합니다. 제 나름으로는 의미 있게 생각하는 지표라 계속 연구하고 있는 중이라 그렇습니다. 수정해서 작성해 주시는 것에 미리 감사드립니다. (담당자님의 편의를 위하여 Q&A 75978번에서 담당자님께서 수정해서 작성해주신 답변내용 중 <지표3> 부분만 발췌해서 아래에 기재하였습니다.) ============================================== ============================================== 작성자 : 예스스탁 작성일 : 2022-02-17 오전 9:58:08 조회수 : 7 지표 Re : 지표 수식(지표2와 지표3)의 검토 부탁드립니다 안녕하세요 예스스탁입니다. 평균값저장이 최고차이발생봉까지만 대상으로 저장되게 되어 있었습니다. 1번식과 같은 경우는 관계없지만 2번과 3번과 같이 시종의 중간값을 저장할때 그이후시간의 종가가 반영되지 않았었습니다. 1~3번식 모두 수정해 드립니다. (<지표1, 2> 수식은 기재생략) 3 input : 타주기분(30),n(10); var : S1(0),D1(0),TM(0),TF(0),cnt(0),OO(0),CC(0); var : ii(0),i1(0),i2(0),tempmax(0),tempi(0); Array : R1[50](0),M1[50](0); Array : tempR1[50](0),tempM1[50](0),NTHVALUE[50](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; for cnt = 1 to 49 { R1[cnt] = R1[cnt-1][1]; M1[cnt] = M1[cnt-1][1]; } } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { OO = O; CC = C; Condition1 = False; if Bdate != Bdate[1] Then { R1[0] = 0; M1[0] = 0; } } CC = C; if abs(OO-CC) > R1[0] Then { R1[0] = abs(OO-CC); Condition1 = true; } if Condition1 == true Then M1[0] = (OO+CC)/2; if M1[n] > 0 Then { for ii = 0 to 49 { tempR1[ii] = R1[ii]; tempM1[ii] = M1[ii]; } For i1 = 1 to n { tempmax = -1; For i2 = 1 to n { if (tempR1[i2] >= tempmax ) then { tempmax = tempR1[i2]; tempi = i2; } } NTHVALUE[i1] = tempM1[tempi]; tempR1[tempi] = -1; } Plot1(NTHVALUE[1]); Plot2(NTHVALUE[2]); Plot3(NTHVALUE[3]); } }