커뮤니티

사용자 함수의 수정요청

프로필 이미지
티끌
2012-07-23 10:36:57
372
글번호 53130
답변완료

첨부 이미지

-----과거질문----------------------------------- 갭보정 이평과 RSI를 사용자 함수로 지정("GAP_Ma","GAP_RSI"로 정의)한뒤 지표식에서 일반이평 일반RSI처럼 아래와 같이 GAP_Ma(C,5) GAP_Ma(C,10) GAP_Ma(C,20) GAP_RSI(10) GAP_RSI(15) GAP_RSI(20) 사용할수 있게 부탁드립니다 ------------------------------------------------ 질문1) 위와같이 질문한내용의 답으로 작성해주신 수식(갭이평, 갭RSI)을 사용중입니다 (첨부파일 참조) 그런데 현재가(C)가 갭이평선상의 어디에 위치한 건지를 표현하다보니 단순한 현재가격C가 아니라 갭을 적용한 현재가C를 필요함을 알게&#46124;읍니다 즉 현재가C는 이평10선과 이평20선사이에 있다고하면 이평10선<현재가C<이평20선 위와 같이 표현되겠지만 갭이평을 적용한 C값이 갭이평10선과 갭이평20선사이에있다면 갭이평10선<갭현재가C<갭이평20선 과 같이 표현되는데 여기에서 Gap_C를 함수로 해주시기 바랍니다 2)질문2 (그림참조) 당일최종가의 급등으로 갭수식이 교란되는 예를 캡쳐한것입니다 최종가의 급등시 0.3P로 제한하는 갭산식(Ma,RSI)을 부탁드립니다
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-07-23 13:11:11

안녕하세요 예스스탁입니다. 1. 올려주신 함수들에 모두 갭을 적용한 값을 사용하게 되어 잇습니다. 첨부하신에 사용자함수 안에 계산식 내용을 보시면 갭을 계산한 내용이 들어가 있습니다. input : Price(Numeric),Period(Numeric); var : sumGap(0), gap(0),GC(0); var : Gma1(0), Gma2(0), Gma3(0); if date!=date[1] then { gap = Open-Close[1]; sumGap = sumGap+gap; } GC = Price - sumGap; GAP_ma = ma(GC,PEriod); GAP_ma(C,20)으로 입력하시면 C가 수식안에서 갭을 차감한 값으로 적용되어 수식안에서는 GC가 사용이 됩니다. 2. 아래는 갭이 0.3이상이나 이하 발생할 때 최대 0.3의 갭만 적용하게 수식을 변경한 식입니다. 2-1 GAP_ma input : Price(Numeric),Period(Numeric); var : sumGap(0), gap(0),GC(0); var : Gma1(0), Gma2(0), Gma3(0); if date!=date[1] then { if Open-close[1] >= 0.3 then gap = 0.3; else if Open-close[1] <= -0.3 Then Gap = -0.3; Else gap = Open-Close[1]; sumGap = sumGap+gap; } GC = Price - sumGap; GAP_ma = ma(GC,PEriod); 2-2 GAP_RSI Inputs: RSIPeriod(Numeric); Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(0); var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0); if date!=date[1] then { if Open-close[1] >= 0.3 then gap = 0.3; else if Open-close[1] <= -0.3 Then Gap = -0.3; Else gap = Open-Close[1]; sumGap = sumGap+gap; } GO = O - sumGap;// 갭보정 시가 GH = H - sumGap;// 갭보정 고가 GL = L - sumGap;// 갭보정 저가 GC = C - sumGap; // 갭보정 종가 If CurrentBar == 1 AND RSIPeriod > 0 Then Begin UpSum = 0; DownSum = 0; For RSIcount = 0 To RSIPeriod - 1 Begin UpAmt = GC[RSIcount] - GC[RSIcount+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / RSIPeriod; DownAvg = DownSum / RSIPeriod; End Else If CurrentBar > 1 AND RSIPeriod > 0 Then Begin UpAmt = GC[0] - GC[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod; DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod; End; If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; GAP_RSI = RSIV; 즐거운 하루되세요 > 티끌 님이 쓴 글입니다. > 제목 : 사용자 함수의 수정요청 > -----과거질문----------------------------------- 갭보정 이평과 RSI를 사용자 함수로 지정("GAP_Ma","GAP_RSI"로 정의)한뒤 지표식에서 일반이평 일반RSI처럼 아래와 같이 GAP_Ma(C,5) GAP_Ma(C,10) GAP_Ma(C,20) GAP_RSI(10) GAP_RSI(15) GAP_RSI(20) 사용할수 있게 부탁드립니다 ------------------------------------------------ 질문1) 위와같이 질문한내용의 답으로 작성해주신 수식(갭이평, 갭RSI)을 사용중입니다 (첨부파일 참조) 그런데 현재가(C)가 갭이평선상의 어디에 위치한 건지를 표현하다보니 단순한 현재가격C가 아니라 갭을 적용한 현재가C를 필요함을 알게&#46124;읍니다 즉 현재가C는 이평10선과 이평20선사이에 있다고하면 이평10선<현재가C<이평20선 위와 같이 표현되겠지만 갭이평을 적용한 C값이 갭이평10선과 갭이평20선사이에있다면 갭이평10선<갭현재가C<갭이평20선 과 같이 표현되는데 여기에서 Gap_C를 함수로 해주시기 바랍니다 2)질문2 (그림참조) 당일최종가의 급등으로 갭수식이 교란되는 예를 캡쳐한것입니다 최종가의 급등시 0.3P로 제한하는 갭산식(Ma,RSI)을 부탁드립니다