커뮤니티

지표 계산식 문의드립니다.

프로필 이미지
깜피
2026-02-10 07:32:32
51
글번호 230482
답변완료

DMI 지표 내에 있는

Diplus와 Diminus 함수를 변형하려고 하는데 ylhelp를 보고 수식을 짜려고 했더니 잘 안되네요.

14일 기준으로 만들고 있는데, 코드를 부탁드립니다.

감사합니다. 즐거운 하루 보내세요.

지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-02-10 10:58:54

안녕하세요 예스스탁입니다. 지표식으로 풀어서 작성해 드립니다. Input : Length(14) ; Var : Counter(0), TRange(0), MyRange(Length); var : PlusDM14(0),MinusDM14(0),PlusDM(0), MinusDM(0); var : DP(0),DM(0); If CurrentBar == 1 Then { MyRange = Length; DP = 0; PlusDM14 = 0; MinusDM14 = 0; TRange = 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]; var1 = PlusDM; var2 = MinusDM; If var2 >= var1 Then PlusDM = 0; If var1 >= var2 Then MinusDM = 0; TRange = TRange + TrueRange[Counter]; PlusDM14 = PlusDM14 + PlusDM; MinusDM14 = MinusDM14 + MinusDM; } If TRange <> 0 Then { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0 ; 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]; var1 = PlusDM; var2 = MinusDM; If var2 >= var1 Then PlusDM = 0; If var1 >= var2 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 { DP = 100 * PlusDM14 / TRange; DM = 100 * MinusDM14 / TRange; } Else { DP = 0; DM = 0; } } Plot1(DP,"DI+"); Plot2(DM,"DI-"); 새해 복 많이 받으시고 즐거운 명절 보내시기 바랍니다.