커뮤니티

지표수식은?

프로필 이미지
스테디어드밴서
2016-02-15 12:33:43
189
글번호 95372
답변완료
http://blog.naver.com/ijrhee/220406293272 위 글에서 표현한 RSI밴드 의 지표 수식은 어떻게 되는지요? 일반적인 RSI밴드 의 수식을 알려 주시면 됩니다. 감사합니다. ----- 참고: 시스메틱트레이더 카페에 올라온 rsi 밴드 사용자함수는 다음과 같음...중간에 ? 때문에 식이 오류라고 뜸. Inputs: Length(NumericSimple), TargetUpLevel(NumericSimple), TargetDnLevel(NumericSimple), oUpBand(NumericRef), oDnBand(NumericRef), oMidLine(NumericRef); Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0),DownSum(0), UpAvg(0), DownAvg(0),MidLevel(0); If CurrentBar == 1 AND Length > 0 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = C[Counter] - C[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 = C[0] - C[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 Value1 = 100 * UpAvg / (UpAvg + DownAvg); Else Value1 = 0; If Value1[1] > TargetUpLevel Then oUpBand = (((TargetUpLevel - 100) / TargetUpLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oUpBand = ((TargetUpLevel / (100 - TargetUpLevel) * DownAvg[1]) ? UpAvg[1]) * (Length - 1) + C[1]; If Value1[1] > TargetDnLevel Then oDnBand = (((TargetDnLevel - 100) / TargetDnLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oDnBand = ((TargetDnLevel / (100 - TargetDnLevel) * DownAvg[1]) ? UpAvg[1]) * (Length - 1) + C[1]; MidLevel = (TargetUpLevel + TargetDnLevel) / 2; If Value1[1] > MidLevel Then oMidLine = (((MidLevel - 100) / MidLevel*UpAvg[1])+DownAvg[1]) * (Length - 1) + C[1]; Else oMidline = ((MidLevel / (100 - MidLevel)*DownAvg[1])- UpAvg[1]) * (Length - 1) + C[1]; RSI_BAND = 1; [출처] 2주_3일차_03_전략소스 실습_008_RSI Bands 사용자함수 (시스메틱 트레이더) |작성자 시스메틱 ------ 시스메틱 트레이더에 뜬 rsi밴드 지표식은 다음과 같음 Input:Length(14),UpLevel(70),DnLevel(30); Var:result(0),Upband(0),DnBand(0),MidLine(0); result = RSI_BAND(Length,UpLevel,DnLevel,UpBand,DnBand,MidLine); If result == 1 Then { Plot1(UpBand); Plot2(MidLine); Plot3(DnBand); Plot4(ma(UpBand,10)); Plot5(ma(DnBand,10)); } [출처] 2주_3일차_03_전략소스 실습_009_RSI Bands 지표식 (시스메틱 트레이더) |작성자 시스메틱
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-02-15 15:07:31

안녕하세요 예스스탁입니다. 1. 일반적인 RSI밴드식입니다. http://blog.naver.com/ijrhee/220406293272 위 글에서도 아래의 식을 사용합니다. RSI값을 기준으로 볼린져밴드를 계산한 식입니다. input : RSIP(14),P(10),dv(2); var : RSIv(0),BBmd(0),BBup(0),BBdn(0); RSIV = RSI(RSIP); BBmd = ema(RSIV,P); BBup = BBmd+STD(RSIV,P)*Dv; BBdn = BBmd-STD(RSIV,P)*Dv; plot1(RSIV); plot2(BBup); plot3(BBdn); 2. 올려주시 시스메틱카페의 글에서 ?로 폰트가 깨져서 오는 부분은 - 같습니다. -로 처리해서 올려드립니다. Inputs: Length(NumericSimple), TargetUpLevel(NumericSimple), TargetDnLevel(NumericSimple), oUpBand(NumericRef), oDnBand(NumericRef), oMidLine(NumericRef); Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0),DownSum(0), UpAvg(0), DownAvg(0),MidLevel(0); If CurrentBar == 1 AND Length > 0 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = C[Counter] - C[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 = C[0] - C[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 Value1 = 100 * UpAvg / (UpAvg + DownAvg); Else Value1 = 0; If Value1[1] > TargetUpLevel Then oUpBand = (((TargetUpLevel - 100) / TargetUpLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oUpBand = ((TargetUpLevel / (100 - TargetUpLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + C[1]; If Value1[1] > TargetDnLevel Then oDnBand = (((TargetDnLevel - 100) / TargetDnLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oDnBand = ((TargetDnLevel / (100 - TargetDnLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + C[1]; MidLevel = (TargetUpLevel + TargetDnLevel) / 2; If Value1[1] > MidLevel Then oMidLine = (((MidLevel - 100) / MidLevel*UpAvg[1])+DownAvg[1]) * (Length - 1) + C[1]; Else oMidline = ((MidLevel / (100 - MidLevel)*DownAvg[1])- UpAvg[1]) * (Length - 1) + C[1]; RSI_BAND = 1; 즐거운 하루되세요 > 스테디어드밴서 님이 쓴 글입니다. > 제목 : 지표수식은? > http://blog.naver.com/ijrhee/220406293272 위 글에서 표현한 RSI밴드 의 지표 수식은 어떻게 되는지요? 일반적인 RSI밴드 의 수식을 알려 주시면 됩니다. 감사합니다. ----- 참고: 시스메틱트레이더 카페에 올라온 rsi 밴드 사용자함수는 다음과 같음...중간에 ? 때문에 식이 오류라고 뜸. Inputs: Length(NumericSimple), TargetUpLevel(NumericSimple), TargetDnLevel(NumericSimple), oUpBand(NumericRef), oDnBand(NumericRef), oMidLine(NumericRef); Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0),DownSum(0), UpAvg(0), DownAvg(0),MidLevel(0); If CurrentBar == 1 AND Length > 0 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = C[Counter] - C[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 = C[0] - C[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 Value1 = 100 * UpAvg / (UpAvg + DownAvg); Else Value1 = 0; If Value1[1] > TargetUpLevel Then oUpBand = (((TargetUpLevel - 100) / TargetUpLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oUpBand = ((TargetUpLevel / (100 - TargetUpLevel) * DownAvg[1]) ? UpAvg[1]) * (Length - 1) + C[1]; If Value1[1] > TargetDnLevel Then oDnBand = (((TargetDnLevel - 100) / TargetDnLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oDnBand = ((TargetDnLevel / (100 - TargetDnLevel) * DownAvg[1]) ? UpAvg[1]) * (Length - 1) + C[1]; MidLevel = (TargetUpLevel + TargetDnLevel) / 2; If Value1[1] > MidLevel Then oMidLine = (((MidLevel - 100) / MidLevel*UpAvg[1])+DownAvg[1]) * (Length - 1) + C[1]; Else oMidline = ((MidLevel / (100 - MidLevel)*DownAvg[1])- UpAvg[1]) * (Length - 1) + C[1]; RSI_BAND = 1; [출처] 2주_3일차_03_전략소스 실습_008_RSI Bands 사용자함수 (시스메틱 트레이더) |작성자 시스메틱 ------ 시스메틱 트레이더에 뜬 rsi밴드 지표식은 다음과 같음 Input:Length(14),UpLevel(70),DnLevel(30); Var:result(0),Upband(0),DnBand(0),MidLine(0); result = RSI_BAND(Length,UpLevel,DnLevel,UpBand,DnBand,MidLine); If result == 1 Then { Plot1(UpBand); Plot2(MidLine); Plot3(DnBand); Plot4(ma(UpBand,10)); Plot5(ma(DnBand,10)); } [출처] 2주_3일차_03_전략소스 실습_009_RSI Bands 지표식 (시스메틱 트레이더) |작성자 시스메틱