커뮤니티

문의드립니다.

프로필 이미지
사이먼Lee
2014-02-20 21:00:24
158
글번호 72771
답변완료
300틱에서 900틱의 DMI(DiPlus와 DiMinus)를 수식으로 표현할 수 있을까요? 보조차트가 아니라 수식으로 구현할 수 있는지요?
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-02-21 11:51:47

안녕하세요 예스스탁입니다. 실제 300틱 차트와 값이 조금 차이가 있을수 있습니다. 이용에 참고하시기 바랍니다. input : Length(14); var : TT(0),BarCnt(0),cnt(0),MyRange(0); var : DP(0),PlusDM(0),MinusDM(0),TH(0),TL(0); var : DM(0),DMIv(0);; Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),TRange[61](0); Array : PlusDM14[61](0),MinusDM14[61](0); TT = dayindex%3; if date != date[1] or (TT < TT[1]) Then{ BarCnt = BarCnt+1; HH[0] = H; LL[0] = L; for cnt = 1 to 60{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; TR[cnt] = TR[cnt-1][1]; TRange[cnt] = TRange[cnt-1][1]; PlusDM14[cnt] = PlusDM14[cnt-1][1]; MinusDM14[cnt] = MinusDM14[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; CC[0] = C; if CC[1] > 0 Then{ If CC[1] > HH[0] then TH = CC[1]; else TH = HH[0]; If CC[1] < LL[0] then TL = CC[1]; else TL = LL[0]; TR[0] = TH-TL; } If BarCnt == Length+2 Then { MyRange = Length; DP = 0; DM = 0; PlusDM14[0] = 0; MinusDM14[0] = 0; TRange[0] = 0; For cnt = 0 To MyRange - 1 { If HH[cnt] - HH[cnt+1] < 0 Then PlusDM = 0; Else PlusDM = HH[cnt] - HH[cnt+1]; If LL[cnt+1] - LL[cnt] < 0 Then MinusDM = 0; Else MinusDM = LL[cnt+1] - LL[cnt]; If MinusDM >= PlusDM Then PlusDM = 0; If PlusDM >= MinusDM Then MinusDM = 0; TRange[0] = TRange[0] + TR[cnt]; PlusDM14[0] = PlusDM14[0] + PlusDM; MinusDM14[0] = MinusDM14[0] + MinusDM; } If TRange[0] <> 0 Then { DP = 100 * PlusDM14[0] / TRange[0]; DM = 100 * MinusDM14[0] / TRange[0]; } Else { DP = 0 ; DM = 0; } } Else If BarCnt > Length+2 Then { If HH[0] - HH[1] < 0 Then PlusDM = 0; Else PlusDM = HH[0] - HH[1]; If LL [1] - LL [0] < 0 Then MinusDM = 0; Else MinusDM = LL[1] - LL[0]; If MinusDM >= PlusDM Then PlusDM = 0; If PlusDM >= MinusDM Then MinusDM = 0 ; If MyRange > 0 Then { TRange[0] = TRange[1] - (TRange[1] / MyRange) + TR[0]; PlusDM14[0] = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM; MinusDM14[0] = MinusDM14[1] - (MinusDM14[1] / MyRange) + MinusDM; } If TRange[0] <> 0 Then{ DP = 100 * PlusDM14[0] / TRange[0]; DM = 100 * MinusDM14[0] / TRange[0]; } 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); 즐거운 하루되세요 > 사이먼Lee 님이 쓴 글입니다. > 제목 : 문의드립니다. > 300틱에서 900틱의 DMI(DiPlus와 DiMinus)를 수식으로 표현할 수 있을까요? 보조차트가 아니라 수식으로 구현할 수 있는지요?