커뮤니티

수식

프로필 이미지
한국사람73
2022-07-25 12:43:16
1305
글번호 161033
답변완료
안녕하세요. DMI지표(ADX 포함)을 당일분 첫봉으로 적용해서 부탁드립니다. 감사합니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-07-25 17:11:58

안녕하세요 예스스탁입니다. 당일데이타만 사용해야 하므로 계산식상 당일첫봉에는 값이 없습니다. 첫봉은 모두 0이고 두번째 봉부터 계산됩니다. Inputs: Length(14) ; var : idx(0),Dplus(0),Dminus(0),DMIv(0); var : CummDMI(0),adxv(0); Var : Counter(0), TRange(0), MyRange(Length); var : PlusDM14(0), MinusDM14(0), PlusDM(0), MinusDM(0); if Bdate != Bdate[1] Then { idx = 0; Dplus = 0; DMinus = 0; DMiv = 0; adxv = 0; } Else { idx = idx+1; If idx <= Length Then { MyRange = Length; Dplus = 0; Dminus = 0; PlusDM14 = 0; MinusDM14 = 0; TRange = 0; For Counter = 0 To idx - 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]; value1 = PlusDM; Value2 = MinusDM; If Value2 >= value1 Then PlusDM = 0; If value1 >= value2 Then MinusDM = 0; TRange = TRange + TrueRange[Counter]; PlusDM14 = PlusDM14 + PlusDM; MinusDM14 = MinusDM14 + MinusDM; } If TRange <> 0 Then Dplus = 100 * PlusDM14 / TRange; Else Dplus = 0 ; If TRange <> 0 Then Dminus = 100 * MinusDM14 / TRange; Else Dminus = 0; } Else { If idx > 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]; value1 = PlusDM; Value2 = MinusDM; If Value2 >= Value1 Then PlusDM = 0; If value1 >= value2 Then MinusDM = 0 ; If MyRange > 0 Then { TRange = TRange[1] - (TRange[1] / MyRange) + TrueRange; PlusDM14 = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM; MinusDM14 = MinusDM14[1] - (MinusDM14[1] / MyRange) + MinusDM; } If TRange <> 0 Then Dplus = 100 * PlusDM14 / TRange; Else Dplus = 0 ; If TRange <> 0 Then Dminus = 100 * MinusDM14 / TRange; Else Dminus = 0; } } } If Dplus + Dminus == 0 Then DMIv = 0; Else DMIv = 100 * AbsValue(Dplus - Dminus) / (Dplus + Dminus); If idx >= 1 and idx < length Then { CummDMI = 0; for Counter = 0 To idx - 1 { CummDMI = CummDMI + DMIV[Counter]; } adxv = CummDMI / idx; } if idx >= length Then adxv = (adxv[1] * (Length - 1) + DMIv) / Length; Plot1(Dplus); plot2(DMinus); plot3(DMIv); plot4(adxv); 즐거운 하루되세요 > 한국사람73 님이 쓴 글입니다. > 제목 : 수식 > 안녕하세요. DMI지표(ADX 포함)을 당일분 첫봉으로 적용해서 부탁드립니다. 감사합니다.