커뮤니티

다음 사용자함수와 지표

프로필 이미지
스테디어드밴서
2019-07-28 17:49:08
299
글번호 130706
답변완료
안녕하세요? 아래와 같은 함수를 만들었습니다. ---------------------------------------- Inputs: Length(NumericSimple); Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0), bd(0), bds(0); bd= BollBandDown(Length,2); bds = SquareRoot( bd[0]/bd[1] ) ; If CurrentBar == 1 AND Length > 0 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = bds[Counter] - bds[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / Length; DownAvg = DownSum / Length; End Else If CurrentBar > 1 AND Length > 0 Then Begin UpAmt = bds[0] - bds[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (Length - 1) + UpAmt) / Length; DownAvg = (DownAvg[1] * (Length - 1) + DownAmt) / Length; End; If UpAvg + DownAvg <> 0 Then RBD = 100 * UpAvg / (UpAvg + DownAvg); Else RBD = 0; ---------------------------------- 그런 다음 아래와 같은 지표식을 만들어 그래프로 표시해보았습니다. -------------------------------------- var : rd(0); rd = RBD(10); plot1(rd); ----------------- 테스트한 종목에서 상당 경우들이 일봉.주봉,월봉 주기에서 그래프가 이상 없게 나타났습니다. 예) 삼성엔지니어링 그런데 더존비즈온, 셀트리온은 일봉그래프는 나타나나, 주봉, 월봉 그래프가 나타나지 않고 계속 0값만 표시됩니다. SK하이닉스 일봉 나타남, 주봉 나타남, 월봉 안나타남 전부 일봉은 나타나는데, 일부 주봉과 월봉 들이 안 나타날 때가 있습니다 이유를 알 수 없어 질문을 드립니다. 파일로 캡쳐한 이미지 첨부합니다.
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-07-29 14:33:50

안녕하세요 예스스탁입니다. bd= BollBandDown(Length,2); bds = SquareRoot( bd[0]/bd[1] ) ; 위 계산식 때문에 지표가 더이상 계산을 하지 못해서 0으로만 출력되게 됩니다. 추세중심선 = N일 이동평균 상단밴드 = 추세중심선 + 표준편차*n배 하단밴드 = 추세중심선 - 표준편차*n배 아시는 내용이겠지만 볼린져 밴드는 위의 공식으로 계산됩니다. 첨부된 그림은 셀트리온 주봉이고 볼밴하단선을 그린 지표입니다. 이평을 기준으로 표준편차의 n배 만큼 아래로 그리기 때문에 주봉이상 큰 주기에서 가격이 급등/급락한 종목의 경우에 볼밴하단값이 0이하의 값이 나올수 있습니다. 볼밴하단 값이 음수가 나오면 bd[0]/bd[1] 값이 음수이고 SquareRoot가 N/A가 되게 되어 이후 계산이 되지 못합니다. N/A가 나온값을 특정값이 누적하면 해당 변수는 이후 계산을 하지 못합니다. 그래서 RBD가 이후에 모두 0으로만 출력됩니다. 해당 수식에서 별도로 수정해 드릴부분은 없고 볼밴하단이 마이너스이면 0으로 처리하게 수정해 드립니다. Inputs: Length(NumericSimple); Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0), bd(0), bds(0); bd = max(0, BollBandDown(Length,2)); bds = SquareRoot( bd[0]/bd[1] ) ; If CurrentBar == 1 AND Length > 0 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = bds[Counter] - bds[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / Length; DownAvg = DownSum / Length; End Else If CurrentBar > 1 AND Length > 0 Then Begin UpAmt = bds[0] - bds[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (Length - 1) + UpAmt) / Length; DownAvg = (DownAvg[1] * (Length - 1) + DownAmt) / Length; End; If UpAvg + DownAvg <> 0 Then RBD = 100 * UpAvg / (UpAvg + DownAvg); Else RBD = 0; 즐거운 하루되세요 > 스테디어드밴서 님이 쓴 글입니다. > 제목 : 다음 사용자함수와 지표 > 안녕하세요? 아래와 같은 함수를 만들었습니다. ---------------------------------------- Inputs: Length(NumericSimple); Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0), bd(0), bds(0); bd= BollBandDown(Length,2); bds = SquareRoot( bd[0]/bd[1] ) ; If CurrentBar == 1 AND Length > 0 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = bds[Counter] - bds[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / Length; DownAvg = DownSum / Length; End Else If CurrentBar > 1 AND Length > 0 Then Begin UpAmt = bds[0] - bds[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (Length - 1) + UpAmt) / Length; DownAvg = (DownAvg[1] * (Length - 1) + DownAmt) / Length; End; If UpAvg + DownAvg <> 0 Then RBD = 100 * UpAvg / (UpAvg + DownAvg); Else RBD = 0; ---------------------------------- 그런 다음 아래와 같은 지표식을 만들어 그래프로 표시해보았습니다. -------------------------------------- var : rd(0); rd = RBD(10); plot1(rd); ----------------- 테스트한 종목에서 상당 경우들이 일봉.주봉,월봉 주기에서 그래프가 이상 없게 나타났습니다. 예) 삼성엔지니어링 그런데 더존비즈온, 셀트리온은 일봉그래프는 나타나나, 주봉, 월봉 그래프가 나타나지 않고 계속 0값만 표시됩니다. SK하이닉스 일봉 나타남, 주봉 나타남, 월봉 안나타남 전부 일봉은 나타나는데, 일부 주봉과 월봉 들이 안 나타날 때가 있습니다 이유를 알 수 없어 질문을 드립니다. 파일로 캡쳐한 이미지 첨부합니다.