커뮤니티

문의 드립니다.

프로필 이미지
촌동네선생
2025-03-04 04:27:29
380
글번호 188690
답변완료
선생님~일반적인 dmi 지표에서 + DI 와 - DI 값을 구할 때 아래의 공식을 사용하잖아요. DMnPlus = (+DM)의 n일 이동평균값 DMnMinus = (-DM)의 n일 이동평균값 TRn = TR의 이동평균값 +DI = DMnPlus/TRn -DI = DMnMinus/TRn DMI = (DiPlus-DIMinus)의 절대값/(DiPlus+DIMinus)*100 제가 원하는건 1) 일반 캔들 기준으로하여 DMnPlus = (+DM)의 n일 지수이동평균값 DMnMinus = (-DM)의 n일 지수이동평균값 TRn = TR의 지수이동평균값 을 적용한 +DI 와 -DI와 DMI 값을 구할 수 있는 지표식 2) 하이킨 아시 캔들을 기준으로 하여 아래의 식을 적용한 +DI 와 -DI와 DMI 값을 구 할 수 있는 지표식 DMnPlus = (+DM)의 n일 이동평균값 DMnMinus = (-DM)의 n일 이동평균값 TRn = TR의 이동평균값 3) 하이킨 아시 캔들을 기준으로 하여 아래의 식을 적용한 +DI 와 -DI와 DMI 값을 구 할 수 있는 지표식 DMnPlus = (+DM)의 n일 지수이동평균값 DMnMinus = (-DM)의 n일 지수이동평균값 TRn = TR의 지수이동평균값 감사드리고 죄송합니다~꾸벅
지표
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2025-03-04 13:22:47

안녕하세요 예스스탁입니다. 1 Inputs : Length(14); Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0),MinusDM14(0),MinusDM(0),PlusDM(0),EP(0); var : DP(0),DM(0),DMIv(0); EP = 1/(Length+1); If CurrentBar == 1 Then { MyRange = Length; 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]; TRange = Range; PlusDM14 = PlusDM; MinusDM14 = MinusDM; If TRange <> 0 Then DP = 100 * PlusDM14 / TRange; Else DP = 0 ;; If TRange <> 0 Then DM = 100 * MinusDM14 / TRange; Else DM = 0; } Else If CurrentBar > 1 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 MinusDM >= PlusDM Then value1 = 0; If PlusDM >= MinusDM Then value2 = 0 ; If MyRange > 0 Then Begin TRange = TrueRange * EP + TRange[1] * (1-EP); PlusDM14 = value1 * EP + PlusDM14[1] * (1-EP); MinusDM14 = value2 * EP + MinusDM14[1] * (1-EP); End; If TRange <> 0 Then { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0 ; DM = 0; } } If DP + DM == 0 Then DMIv = 0; Else DMIv = 100 * AbsValue(DP - DM) / (DP + DM); Plot1(DMIV); Plot2(DP); Plot3(DM); 2 Inputs : Length(14); Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0),MinusDM14(0),MinusDM(0),PlusDM(0),EP(0); var : DP(0),DM(0),DMIv(0); var : xClose(0),xOpen(0),xHigh(0),xLow(0),TH(0),TL(0),TR(0); EP = 1/(Length+1); if index == 0 then { xClose = (O+H+L+C)/4; xOpen = open; xHigh = MaxList( high, xOpen, xClose); xLow = MinList( low, xOpen,xClose); } else { xClose = (O+H+L+C)/4; xOpen = (xOpen [1] + xClose [1])/2 ; xHigh = MaxList(High, xOpen, xClose) ; xLow = MinList(Low, xOpen, xClose) ; } If xClose[1] > xHigh then TH = xClose[1]; else TH = xHigh; If xClose[1] < xLow then TL = xClose[1]; else TL = xLow; TR = TH-TL; If CurrentBar == 1 Then { DP = 0; PlusDM14 = 0; DM = 0; MinusDM14 = 0; TRange = 0; For Counter = 0 To MyRange - 1 { If xHigh[Counter] - xHigh[Counter+1] < 0 Then PlusDM = 0; Else PlusDM = xHigh[Counter] - xHigh[Counter+1]; If xLow[Counter+1] - xLow[Counter] < 0 Then MinusDM = 0; Else MinusDM = xLow[Counter+1] - xLow[Counter]; value1 = PlusDM; value2 = MinusDM; If MinusDM >= PlusDM Then value1 = 0; If PlusDM >= MinusDM Then value2 = 0 ; TRange = TRange + TR[Counter]; PlusDM14 = PlusDM14 + value1; MinusDM14 = MinusDM14 + value2; } If TRange <> 0 Then { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0 ; DM = 0; } } Else If CurrentBar > 1 Then { If xHigh[0] - xHigh[1] < 0 Then PlusDM = 0; Else PlusDM = xHigh[0] - xHigh[1]; If xLow [1] - xLow [0] < 0 Then MinusDM = 0; Else MinusDM = xLow[1] - xLow[0]; If MinusDM >= PlusDM Then PlusDM = 0; value1 = PlusDM; value2 = MinusDM; If MinusDM >= PlusDM Then value1 = 0; If PlusDM >= MinusDM Then value2 = 0 ; If MyRange > 0 Then { TRange = TRange[1] - (TRange[1] / MyRange) + TR; PlusDM14 = PlusDM14[1] - (PlusDM14[1] / MyRange) + value1; MinusDM14 = MinusDM14[1] - (MinusDM14[1] / MyRange) + Value2; } If TRange <> 0 Then { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0 ; DM = 0; } } If DP + DM == 0 Then DMIv = 0; Else DMIv = 100 * AbsValue(DP - DM) / (DP + DM); Plot1(DMIV); Plot2(DP); Plot3(DM); 3 Inputs : Length(14); Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0),MinusDM14(0),MinusDM(0),PlusDM(0),EP(0); var : DP(0),DM(0),DMIv(0); var : xClose(0),xOpen(0),xHigh(0),xLow(0),TH(0),TL(0); EP = 1/(Length+1); if index == 0 then { xClose = (O+H+L+C)/4; xOpen = open; xHigh = MaxList( high, xOpen, xClose); xLow = MinList( low, xOpen,xClose); } else { xClose = (O+H+L+C)/4; xOpen = (xOpen [1] + xClose [1])/2 ; xHigh = MaxList(High, xOpen, xClose) ; xLow = MinList(Low, xOpen, xClose) ; } If CurrentBar == 1 Then { MyRange = Length; If xHigh[0] - xHigh[1] < 0 Then PlusDM = 0; Else PlusDM = xHigh[0] - High[1]; If xLow [1] - xLow [0] < 0 Then MinusDM = 0; Else MinusDM = xLow[1] - xLow[0]; If xClose[1] > xHigh then TH = xClose[1]; else TH = xHigh; If xClose[1] < xLow then TL = xClose[1]; else TL = xLow; TRange = TH-TL; PlusDM14 = PlusDM; MinusDM14 = MinusDM; If TRange <> 0 Then DP = 100 * PlusDM14 / TRange; Else DP = 0 ;; If TRange <> 0 Then DM = 100 * MinusDM14 / TRange; Else DM = 0; } Else If CurrentBar > 1 Then { If xHigh[0] - xHigh[1] < 0 Then PlusDM = 0; Else PlusDM = xHigh[0] - xHigh[1]; If xLow [1] - xLow [0] < 0 Then MinusDM = 0; Else MinusDM = xLow[1] - Low[0]; value1 = PlusDM; value2 = MinusDM; If MinusDM >= PlusDM Then value1 = 0; If PlusDM >= MinusDM Then value2 = 0 ; If xClose[1] > xHigh then TH = xClose[1]; else TH = xHigh; If xClose[1] < xLow then TL = xClose[1]; else TL = xLow; If MyRange > 0 Then Begin TRange = (TH-TL) * EP + TRange[1] * (1-EP); PlusDM14 = value1 * EP + PlusDM14[1] * (1-EP); MinusDM14 = value2 * EP + MinusDM14[1] * (1-EP); End; If TRange <> 0 Then { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0 ; DM = 0; } } If DP + DM == 0 Then DMIv = 0; Else DMIv = 100 * AbsValue(DP - DM) / (DP + DM); Plot1(DMIV); Plot2(DP); Plot3(DM); 즐거운 하루되세요 > 촌동네선생 님이 쓴 글입니다. > 제목 : 문의 드립니다. > 선생님~일반적인 dmi 지표에서 + DI 와 - DI 값을 구할 때 아래의 공식을 사용하잖아요. DMnPlus = (+DM)의 n일 이동평균값 DMnMinus = (-DM)의 n일 이동평균값 TRn = TR의 이동평균값 +DI = DMnPlus/TRn -DI = DMnMinus/TRn DMI = (DiPlus-DIMinus)의 절대값/(DiPlus+DIMinus)*100 제가 원하는건 1) 일반 캔들 기준으로하여 DMnPlus = (+DM)의 n일 지수이동평균값 DMnMinus = (-DM)의 n일 지수이동평균값 TRn = TR의 지수이동평균값 을 적용한 +DI 와 -DI와 DMI 값을 구할 수 있는 지표식 2) 하이킨 아시 캔들을 기준으로 하여 아래의 식을 적용한 +DI 와 -DI와 DMI 값을 구 할 수 있는 지표식 DMnPlus = (+DM)의 n일 이동평균값 DMnMinus = (-DM)의 n일 이동평균값 TRn = TR의 이동평균값 3) 하이킨 아시 캔들을 기준으로 하여 아래의 식을 적용한 +DI 와 -DI와 DMI 값을 구 할 수 있는 지표식 DMnPlus = (+DM)의 n일 지수이동평균값 DMnMinus = (-DM)의 n일 지수이동평균값 TRn = TR의 지수이동평균값 감사드리고 죄송합니다~꾸벅
프로필 이미지

촌동네선생

2025-03-04 21:42:06

감사합니다~~~ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의 드립니다. > 안녕하세요 예스스탁입니다. 1 Inputs : Length(14); Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0),MinusDM14(0),MinusDM(0),PlusDM(0),EP(0); var : DP(0),DM(0),DMIv(0); EP = 1/(Length+1); If CurrentBar == 1 Then { MyRange = Length; 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]; TRange = Range; PlusDM14 = PlusDM; MinusDM14 = MinusDM; If TRange <> 0 Then DP = 100 * PlusDM14 / TRange; Else DP = 0 ;; If TRange <> 0 Then DM = 100 * MinusDM14 / TRange; Else DM = 0; } Else If CurrentBar > 1 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 MinusDM >= PlusDM Then value1 = 0; If PlusDM >= MinusDM Then value2 = 0 ; If MyRange > 0 Then Begin TRange = TrueRange * EP + TRange[1] * (1-EP); PlusDM14 = value1 * EP + PlusDM14[1] * (1-EP); MinusDM14 = value2 * EP + MinusDM14[1] * (1-EP); End; If TRange <> 0 Then { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0 ; DM = 0; } } If DP + DM == 0 Then DMIv = 0; Else DMIv = 100 * AbsValue(DP - DM) / (DP + DM); Plot1(DMIV); Plot2(DP); Plot3(DM); 2 Inputs : Length(14); Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0),MinusDM14(0),MinusDM(0),PlusDM(0),EP(0); var : DP(0),DM(0),DMIv(0); var : xClose(0),xOpen(0),xHigh(0),xLow(0),TH(0),TL(0),TR(0); EP = 1/(Length+1); if index == 0 then { xClose = (O+H+L+C)/4; xOpen = open; xHigh = MaxList( high, xOpen, xClose); xLow = MinList( low, xOpen,xClose); } else { xClose = (O+H+L+C)/4; xOpen = (xOpen [1] + xClose [1])/2 ; xHigh = MaxList(High, xOpen, xClose) ; xLow = MinList(Low, xOpen, xClose) ; } If xClose[1] > xHigh then TH = xClose[1]; else TH = xHigh; If xClose[1] < xLow then TL = xClose[1]; else TL = xLow; TR = TH-TL; If CurrentBar == 1 Then { DP = 0; PlusDM14 = 0; DM = 0; MinusDM14 = 0; TRange = 0; For Counter = 0 To MyRange - 1 { If xHigh[Counter] - xHigh[Counter+1] < 0 Then PlusDM = 0; Else PlusDM = xHigh[Counter] - xHigh[Counter+1]; If xLow[Counter+1] - xLow[Counter] < 0 Then MinusDM = 0; Else MinusDM = xLow[Counter+1] - xLow[Counter]; value1 = PlusDM; value2 = MinusDM; If MinusDM >= PlusDM Then value1 = 0; If PlusDM >= MinusDM Then value2 = 0 ; TRange = TRange + TR[Counter]; PlusDM14 = PlusDM14 + value1; MinusDM14 = MinusDM14 + value2; } If TRange <> 0 Then { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0 ; DM = 0; } } Else If CurrentBar > 1 Then { If xHigh[0] - xHigh[1] < 0 Then PlusDM = 0; Else PlusDM = xHigh[0] - xHigh[1]; If xLow [1] - xLow [0] < 0 Then MinusDM = 0; Else MinusDM = xLow[1] - xLow[0]; If MinusDM >= PlusDM Then PlusDM = 0; value1 = PlusDM; value2 = MinusDM; If MinusDM >= PlusDM Then value1 = 0; If PlusDM >= MinusDM Then value2 = 0 ; If MyRange > 0 Then { TRange = TRange[1] - (TRange[1] / MyRange) + TR; PlusDM14 = PlusDM14[1] - (PlusDM14[1] / MyRange) + value1; MinusDM14 = MinusDM14[1] - (MinusDM14[1] / MyRange) + Value2; } If TRange <> 0 Then { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0 ; DM = 0; } } If DP + DM == 0 Then DMIv = 0; Else DMIv = 100 * AbsValue(DP - DM) / (DP + DM); Plot1(DMIV); Plot2(DP); Plot3(DM); 3 Inputs : Length(14); Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0),MinusDM14(0),MinusDM(0),PlusDM(0),EP(0); var : DP(0),DM(0),DMIv(0); var : xClose(0),xOpen(0),xHigh(0),xLow(0),TH(0),TL(0); EP = 1/(Length+1); if index == 0 then { xClose = (O+H+L+C)/4; xOpen = open; xHigh = MaxList( high, xOpen, xClose); xLow = MinList( low, xOpen,xClose); } else { xClose = (O+H+L+C)/4; xOpen = (xOpen [1] + xClose [1])/2 ; xHigh = MaxList(High, xOpen, xClose) ; xLow = MinList(Low, xOpen, xClose) ; } If CurrentBar == 1 Then { MyRange = Length; If xHigh[0] - xHigh[1] < 0 Then PlusDM = 0; Else PlusDM = xHigh[0] - High[1]; If xLow [1] - xLow [0] < 0 Then MinusDM = 0; Else MinusDM = xLow[1] - xLow[0]; If xClose[1] > xHigh then TH = xClose[1]; else TH = xHigh; If xClose[1] < xLow then TL = xClose[1]; else TL = xLow; TRange = TH-TL; PlusDM14 = PlusDM; MinusDM14 = MinusDM; If TRange <> 0 Then DP = 100 * PlusDM14 / TRange; Else DP = 0 ;; If TRange <> 0 Then DM = 100 * MinusDM14 / TRange; Else DM = 0; } Else If CurrentBar > 1 Then { If xHigh[0] - xHigh[1] < 0 Then PlusDM = 0; Else PlusDM = xHigh[0] - xHigh[1]; If xLow [1] - xLow [0] < 0 Then MinusDM = 0; Else MinusDM = xLow[1] - Low[0]; value1 = PlusDM; value2 = MinusDM; If MinusDM >= PlusDM Then value1 = 0; If PlusDM >= MinusDM Then value2 = 0 ; If xClose[1] > xHigh then TH = xClose[1]; else TH = xHigh; If xClose[1] < xLow then TL = xClose[1]; else TL = xLow; If MyRange > 0 Then Begin TRange = (TH-TL) * EP + TRange[1] * (1-EP); PlusDM14 = value1 * EP + PlusDM14[1] * (1-EP); MinusDM14 = value2 * EP + MinusDM14[1] * (1-EP); End; If TRange <> 0 Then { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0 ; DM = 0; } } If DP + DM == 0 Then DMIv = 0; Else DMIv = 100 * AbsValue(DP - DM) / (DP + DM); Plot1(DMIV); Plot2(DP); Plot3(DM); 즐거운 하루되세요 > 촌동네선생 님이 쓴 글입니다. > 제목 : 문의 드립니다. > 선생님~일반적인 dmi 지표에서 + DI 와 - DI 값을 구할 때 아래의 공식을 사용하잖아요. DMnPlus = (+DM)의 n일 이동평균값 DMnMinus = (-DM)의 n일 이동평균값 TRn = TR의 이동평균값 +DI = DMnPlus/TRn -DI = DMnMinus/TRn DMI = (DiPlus-DIMinus)의 절대값/(DiPlus+DIMinus)*100 제가 원하는건 1) 일반 캔들 기준으로하여 DMnPlus = (+DM)의 n일 지수이동평균값 DMnMinus = (-DM)의 n일 지수이동평균값 TRn = TR의 지수이동평균값 을 적용한 +DI 와 -DI와 DMI 값을 구할 수 있는 지표식 2) 하이킨 아시 캔들을 기준으로 하여 아래의 식을 적용한 +DI 와 -DI와 DMI 값을 구 할 수 있는 지표식 DMnPlus = (+DM)의 n일 이동평균값 DMnMinus = (-DM)의 n일 이동평균값 TRn = TR의 이동평균값 3) 하이킨 아시 캔들을 기준으로 하여 아래의 식을 적용한 +DI 와 -DI와 DMI 값을 구 할 수 있는 지표식 DMnPlus = (+DM)의 n일 지수이동평균값 DMnMinus = (-DM)의 n일 지수이동평균값 TRn = TR의 지수이동평균값 감사드리고 죄송합니다~꾸벅