커뮤니티

RSI DMI 지표식 질문입니다

프로필 이미지
파인애플
2009-06-18 00:33:36
803
글번호 22890
답변완료
#1 1분차트 RSI(30) 에서 장시작과 같이 어제의 값에 영향없이 시작하여 31분부터 표현하고싶습니다 즉 장시작 동시에 시가부터 RSI를 계산 하여 31분부터 표현하였으면 좋겠습니다 부팅 또는 리셋 의 개념이라고 보시면 될 것같습니다 그럼 0900 에서 0930은 직선 09031 부터는 RSI 차트가 나오면 되겠습니다 #2 1번과 같은 방식으로 1000 와 동시에 지금까지 그린 RSI 값에 상관없이 1000 부터 1030 까지 계산하여 1031에 30분간 계산했던 RSI 를 표현하고싶습니다 #3 0900 - 0930 계산 0931부터 차트그리고 리셋 1000 - 1030 계산 1031부터 차트그리고 리셋... 이런식입니다.... 1100 1200 1300 1400....한시간씩 잘라서 매시간의 30분만 계산된 차틑를 얻고 싶습니다 #4 DMI 차트 또한 #1#2#3 과 같은 방식 으로 얻고 싶습니다 감사합니다
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2009-06-18 13:25:45

안녕하세요 예스스탁입니다. 1. RSI Inputs: Length(31); Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIV(0); if date != date[1] Then{ upavg = 0; downAvg = 0; var2 = 0; } var1 = TimeToMinutes(stime)%60; if var1 < var1[1] Then{ upavg = 0; downAvg = 0; var2 = 0; } var2 = var2+1; If var2 == Length 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 var2 > Length 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 RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; plot1(RSIV); 2. DMI Inputs: Length(31); Variables: Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0); Variables: MinusDM14(0),DIPlusv(0),DIMinusv(0); Variables: DMIP(0), DMIM(0),DMIv(0); if date != date[1] Then{ TRange = 0; PlusDM14 = 0; DIPlusv = 0; var2 = 0; DIMinusv = 0; MinusDM14 = 0; } var1 = TimeToMinutes(stime)%60; if var1 < var1[1] Then{ TRange = 0; PlusDM14 = 0; DIPlusv = 0; var2 = 0; DIMinusv = 0; MinusDM14 = 0; } var2 = var2+1; If var2 == Length Then { MyRange = Length; DIPlusv = 0; PlusDM14 = 0; TRange = 0; DIMinusv = 0; MinusDM14 = 0; For Counter = 0 To MyRange - 1 { If High[Counter] - High[Counter+1] < 0 Then PlusDM = 0 ; Else PlusDM = High[Counter] - High[Counter+1]; If Low[Counter+1] - Low[Counter] < 0 Then MinusDM = 0; Else MinusDM = Low[Counter+1] - Low[Counter]; If MinusDM >= PlusDM Then PlusDM = 0; If PlusDM >= MinusDM Then MinusDM = 0; TRange = TRange + TrueRange[Counter]; PlusDM14 = PlusDM14 + PlusDM; MinusDM14 = MinusDM14 + MinusDM; } If TRange <> 0 Then DIPlusv = 100 * PlusDM14 / TRange; Else DIPlusv = 0 ; If TRange <> 0 Then DIMinusv = 100 * MinusDM14 / TRange; Else DIMinusv = 0; } Else If var2 > Length Then { If High[0] - High[1] < 0 Then PlusDM = 0; Else PlusDM = High[0] - High[1]; If Low [1] - Low [0] < 0 Then MinusDM = 0; Else MinusDM = Low[1] - Low[0]; If MinusDM >= PlusDM Then PlusDM = 0; If PlusDM >= MinusDM Then MinusDM = 0; If MyRange > 0 Then Begin TRange = TRange[1] - (TRange[1] / MyRange) + TrueRange; PlusDM14 = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM; MinusDM14 = MinusDM14[1] - (MinusDM14[1] / MyRange) + MinusDM; End; If TRange <> 0 Then DIPlusv = 100 * PlusDM14 / TRange; Else DIPlusv = 0 ; If TRange <> 0 Then DIMinusv = 100 * MinusDM14 / TRange; Else DIMinusv = 0; } DMIP = DIplusv; DMIM = DiMinusv; If DMIP + DMIM == 0 Then DMIv = 0; Else DMIv = 100 * AbsValue(DMIP - DMIM) / (DMIP + DMIM); plot1(DIplusv); plot2(DiMinusv); plot3(DMIv); 즐거운 하루되세요 > 파인애플 님이 쓴 글입니다. > 제목 : RSI DMI 지표식 질문입니다 > #1 1분차트 RSI(30) 에서 장시작과 같이 어제의 값에 영향없이 시작하여 31분부터 표현하고싶습니다 즉 장시작 동시에 시가부터 RSI를 계산 하여 31분부터 표현하였으면 좋겠습니다 부팅 또는 리셋 의 개념이라고 보시면 될 것같습니다 그럼 0900 에서 0930은 직선 09031 부터는 RSI 차트가 나오면 되겠습니다 #2 1번과 같은 방식으로 1000 와 동시에 지금까지 그린 RSI 값에 상관없이 1000 부터 1030 까지 계산하여 1031에 30분간 계산했던 RSI 를 표현하고싶습니다 #3 0900 - 0930 계산 0931부터 차트그리고 리셋 1000 - 1030 계산 1031부터 차트그리고 리셋... 이런식입니다.... 1100 1200 1300 1400....한시간씩 잘라서 매시간의 30분만 계산된 차&#53969;를 얻고 싶습니다 #4 DMI 차트 또한 #1#2#3 과 같은 방식 으로 얻고 싶습니다 감사합니다