커뮤니티

지표 문의 드립니다.

프로필 이미지
한글나라
2013-09-16 20:03:15
127
글번호 67623
답변완료
한꺼번에 여쭤봐야 하는데 번거롭게 해드려 죄송합니다. ADX에서 DIMINUS값의 DIMINUS값을 출력하는 지표 문의드립니다. 즉 주가의 DIMINUS값을 다시 DIMINUS에 넣어서 나오는 값을 출력하는 겁니다. 사용자함수 보고 넣으려해도 어렵습니다. ------ ( diplus 출력문입니다.) 안녕하세요 예스스탁입니다. 식을 완전히 풀어서 작성하셔야 합니다. 아래식 참고하시기 바랍니다. Inputs: Length(14) ; Var : cnt1(0), TRange1(0), MyRange1(0), PlusDM1141(0), PlusDM1(0), MinusDM1(0),DIP1(0); Var : cnt2(0), TRange2(0), MyRange2(0), PlusDM2142(0), PlusDM2(0), MinusDM2(0),DIP2(0); var : TH(0),TL(0),TR(0),idx(0); If index == Length+2 Then { MyRange1 = Length; DIP1 = 0; PlusDM1141 = 0; TRange1 = 0; For cnt1 = 0 To MyRange1 - 1 { If High[cnt1] - High[cnt1+1] < 0 Then PlusDM1 = 0; Else PlusDM1 = High[cnt1] - High[cnt1+1]; If Low[cnt1+1] - Low[cnt1] < 0 Then MinusDM1 = 0; Else MinusDM1 = Low[cnt1+1] - Low[cnt1]; If MinusDM1 >= PlusDM1 Then PlusDM1 = 0; TRange1 = TRange1 + TrueRange[cnt1]; PlusDM1141 = PlusDM1141 + PlusDM1; } If TRange1 <> 0 Then DIP1 = 100 * PlusDM1141 / TRange1; Else DIP1 = 0 ; } Else If index > Length+2 Then { If High[0] - High[1] < 0 Then PlusDM1 = 0; Else PlusDM1 = High[0] - High[1]; If Low [1] - Low [0] < 0 Then MinusDM1 = 0; Else MinusDM1 = Low[1] - Low[0]; If MinusDM1 >= PlusDM1 Then PlusDM1 = 0; If MyRange1 > 0 Then { TRange1 = TRange1[1] - (TRange1[1] / MyRange1) + TrueRange; PlusDM1141 = PlusDM1141[1] - (PlusDM1141[1] / MyRange1) + PlusDM1; } If TRange1 <> 0 Then DIP1 = 100 * PlusDM1141 / TRange1; Else DIP1 = 0 ; } if DIP1 > 0 Then idx = idx+1; if idx >= 2 Then{ If DIP1[1] > DIP1 then TH = DIP1[1]; else TH = DIP1; If DIP1[1] < DIP1 then TL = DIP1[1]; else TL = DIP1; TR = TH-TL; } If idx == Length+2 Then { MyRange2 = Length; DIP2 = 0; PlusDM2142 = 0; TRange2 = 0; For cnt2 = 0 To MyRange2 - 1 { If DIP1[cnt2] - DIP1[cnt2+1] < 0 Then PlusDM2 = 0; Else PlusDM2 = DIP1[cnt2] - DIP1[cnt2+1]; If DIP1[cnt2+1] - DIP1[cnt2] < 0 Then MinusDM2 = 0; Else MinusDM2 = DIP1[cnt2+1] - DIP1[cnt2]; If MinusDM2 >= PlusDM2 Then PlusDM2 = 0; TRange2 = TRange2 + TR[cnt2]; PlusDM2142 = PlusDM2142 + PlusDM2; } If TRange2 <> 0 Then DIP2 = 100 * PlusDM2142 / TRange2; Else DIP2 = 0 ; } Else If idx > Length+2 Then { If DIP1[0] - DIP1[1] < 0 Then PlusDM2 = 0; Else PlusDM2 = DIP1[0] - DIP1[1]; If DIP1[1] - DIP1[0] < 0 Then MinusDM2 = 0; Else MinusDM2 = DIP1[1] - DIP1[0]; If MinusDM2 >= PlusDM2 Then PlusDM2 = 0; If MyRange2 > 0 Then { TRange2 = TRange2[1] - (TRange2[1] / MyRange2) + TR; PlusDM2142 = PlusDM2142[1] - (PlusDM2142[1] / MyRange2) + PlusDM2; } If TRange2 <> 0 Then DIP2 = 100 * PlusDM2142 / TRange2; Else DIP2 = 0 ; } plot1(DIP2); 즐거운 하루되세요
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-09-17 14:56:22

안녕하세요 예스스탁입니다. diplus와 diminus가 같이 그려지도록 작성했습니다. Inputs: Length(14) ; Var : cnt1(0), TRange1(0), MyRange1(0), PDM1(0), PlusDM1(0), MinusDM1(0),DIP1(0); Var : cnt2(0), TRange2(0), MyRange2(0), PDM2(0), PlusDM2(0), MinusDM2(0),DIP2(0); var : TH(0),TL(0),TR(0),idx(0); var : DIM1(0),MDM1(0),MTH(0),MTL(0),MTR(0),idx1(0); var : DIM2(0),MDM2(0),Trange3(0); If index == Length+2 Then { MyRange1 = Length; DIP1 = 0; PDM1 = 0; DIM1 = 0; MDM1 = 0; TRange1 = 0; For cnt1 = 0 To MyRange1 - 1 { If High[cnt1] - High[cnt1+1] < 0 Then PlusDM1 = 0; Else PlusDM1 = High[cnt1] - High[cnt1+1]; if Low[cnt1+1] - Low[cnt1] < 0 Then MinusDM1 = 0; Else MinusDM1 = Low[cnt1+1] - Low[cnt1]; If MinusDM1 >= PlusDM1 Then PlusDM1 = 0; If PlusDM1 >= MinusDM1 Then MinusDM1 = 0; TRange1 = TRange1 + TrueRange[cnt1]; PDM1 = PDM1 + PlusDM1; MDM1 = MDM1 + MinusDM1; } If TRange1 <> 0 Then DIP1 = 100 * PDM1 / TRange1; Else DIP1 = 0 ; If TRange1 <> 0 Then DIM1 = 100 * MDM1 / TRange1; Else DIM1 = 0 ; } Else If index > Length+2 Then { If High[0] - High[1] < 0 Then PlusDM1 = 0; Else PlusDM1 = High[0] - High[1]; If Low [1] - Low [0] < 0 Then MinusDM1 = 0; Else MinusDM1 = Low[1] - Low[0]; If MinusDM1 >= PlusDM1 Then PlusDM1 = 0; If PlusDM1 >= MinusDM1 Then MinusDM1 = 0 ; If MyRange1 > 0 Then { TRange1 = TRange1[1] - (TRange1[1] / MyRange1) + TrueRange; PDM1 = PDM1[1] - (PDM1[1] / MyRange1) + PlusDM1; MDM1 = MDM1[1] - (MDM1[1] / MyRange1) + MinusDM1; } If TRange1 <> 0 Then DIP1 = 100 * PDM1 / TRange1; Else DIP1 = 0 ; If TRange1 <> 0 Then DIM1 = 100 * MDM1 / TRange1; Else DIM1 = 0 ; } if DIP1 > 0 Then idx = idx+1; if idx >= 2 Then{ If DIP1[1] > DIP1 then TH = DIP1[1]; else TH = DIP1; If DIP1[1] < DIP1 then TL = DIP1[1]; else TL = DIP1; TR = TH-TL; } if DIM1 > 0 Then idx1 = idx1+1; if idx1 >= 2 Then{ If DIM1[1] > DIM1 then MTH = DIM1[1]; else MTH = DIM1; If DIM1[1] < DIM1 then MTL = DIM1[1]; else MTL = DIM1; MTR = MTH-MTL; } If idx == Length+2 Then { MyRange2 = Length; DIP2 = 0; PDM2 = 0; DIM2 = 0; MDM2 = 0; TRange2 = 0; TRange3 = 0; For cnt2 = 0 To MyRange2 - 1 { If DIP1[cnt2] - DIP1[cnt2+1] < 0 Then PlusDM2 = 0; Else PlusDM2 = DIP1[cnt2] - DIP1[cnt2+1]; If DIP1[cnt2+1] - DIP1[cnt2] < 0 Then MinusDM2 = 0; Else MinusDM2 = DIP1[cnt2+1] - DIP1[cnt2]; If MinusDM2 >= PlusDM2 Then PlusDM2 = 0; If MinusDM2 <= PlusDM2 Then MinusDM2 = 0; TRange2 = TRange2 + TR[cnt2]; TRange3 = TRange3 + MTR[cnt2]; PDM2 = PDM2 + PlusDM2; MDM2 = MDM2 + MinusDM2; } If TRange2 <> 0 Then DIP2 = 100 * PDM2 / TRange2; Else DIP2 = 0 ; If TRange3 <> 0 Then DIM2 = 100 * MDM2 / TRange3; Else DIM2 = 0 ; } Else If idx > Length+2 Then { If DIP1[0] - DIP1[1] < 0 Then PlusDM2 = 0; Else PlusDM2 = DIP1[0] - DIP1[1]; If DIP1[1] - DIP1[0] < 0 Then MinusDM2 = 0; Else MinusDM2 = DIP1[1] - DIP1[0]; If MinusDM2 >= PlusDM2 Then PlusDM2 = 0; If MinusDM2 <= PlusDM2 Then MinusDM2 = 0; If MyRange2 > 0 Then { TRange2 = TRange2[1] - (TRange2[1] / MyRange2) + TR; PDM2 = PDM2[1] - (PDM2[1] / MyRange2) + PlusDM2; } If MyRange2 > 0 Then { TRange3 = TRange3[1] - (TRange3[1] / MyRange2) + MTR; MDM2 = MDM2[1] - (MDM2[1] / MyRange2) + MinusDM2; } If TRange2 <> 0 Then DIP2 = 100 * PDM2 / TRange2; Else DIP2 = 0 ; If TRange3 <> 0 Then DIM2 = 100 * MDM2 / TRange3; Else DIM2 = 0 ; } plot1(DIP2); plot2(DIM2); 즐거운 하루되세요 > 한글나라 님이 쓴 글입니다. > 제목 : 지표 문의 드립니다. > 한꺼번에 여쭤봐야 하는데 번거롭게 해드려 죄송합니다. ADX에서 DIMINUS값의 DIMINUS값을 출력하는 지표 문의드립니다. 즉 주가의 DIMINUS값을 다시 DIMINUS에 넣어서 나오는 값을 출력하는 겁니다. 사용자함수 보고 넣으려해도 어렵습니다. ------ ( diplus 출력문입니다.) 안녕하세요 예스스탁입니다. 식을 완전히 풀어서 작성하셔야 합니다. 아래식 참고하시기 바랍니다. Inputs: Length(14) ; Var : cnt1(0), TRange1(0), MyRange1(0), PlusDM1141(0), PlusDM1(0), MinusDM1(0),DIP1(0); Var : cnt2(0), TRange2(0), MyRange2(0), PlusDM2142(0), PlusDM2(0), MinusDM2(0),DIP2(0); var : TH(0),TL(0),TR(0),idx(0); If index == Length+2 Then { MyRange1 = Length; DIP1 = 0; PlusDM1141 = 0; TRange1 = 0; For cnt1 = 0 To MyRange1 - 1 { If High[cnt1] - High[cnt1+1] < 0 Then PlusDM1 = 0; Else PlusDM1 = High[cnt1] - High[cnt1+1]; If Low[cnt1+1] - Low[cnt1] < 0 Then MinusDM1 = 0; Else MinusDM1 = Low[cnt1+1] - Low[cnt1]; If MinusDM1 >= PlusDM1 Then PlusDM1 = 0; TRange1 = TRange1 + TrueRange[cnt1]; PlusDM1141 = PlusDM1141 + PlusDM1; } If TRange1 <> 0 Then DIP1 = 100 * PlusDM1141 / TRange1; Else DIP1 = 0 ; } Else If index > Length+2 Then { If High[0] - High[1] < 0 Then PlusDM1 = 0; Else PlusDM1 = High[0] - High[1]; If Low [1] - Low [0] < 0 Then MinusDM1 = 0; Else MinusDM1 = Low[1] - Low[0]; If MinusDM1 >= PlusDM1 Then PlusDM1 = 0; If MyRange1 > 0 Then { TRange1 = TRange1[1] - (TRange1[1] / MyRange1) + TrueRange; PlusDM1141 = PlusDM1141[1] - (PlusDM1141[1] / MyRange1) + PlusDM1; } If TRange1 <> 0 Then DIP1 = 100 * PlusDM1141 / TRange1; Else DIP1 = 0 ; } if DIP1 > 0 Then idx = idx+1; if idx >= 2 Then{ If DIP1[1] > DIP1 then TH = DIP1[1]; else TH = DIP1; If DIP1[1] < DIP1 then TL = DIP1[1]; else TL = DIP1; TR = TH-TL; } If idx == Length+2 Then { MyRange2 = Length; DIP2 = 0; PlusDM2142 = 0; TRange2 = 0; For cnt2 = 0 To MyRange2 - 1 { If DIP1[cnt2] - DIP1[cnt2+1] < 0 Then PlusDM2 = 0; Else PlusDM2 = DIP1[cnt2] - DIP1[cnt2+1]; If DIP1[cnt2+1] - DIP1[cnt2] < 0 Then MinusDM2 = 0; Else MinusDM2 = DIP1[cnt2+1] - DIP1[cnt2]; If MinusDM2 >= PlusDM2 Then PlusDM2 = 0; TRange2 = TRange2 + TR[cnt2]; PlusDM2142 = PlusDM2142 + PlusDM2; } If TRange2 <> 0 Then DIP2 = 100 * PlusDM2142 / TRange2; Else DIP2 = 0 ; } Else If idx > Length+2 Then { If DIP1[0] - DIP1[1] < 0 Then PlusDM2 = 0; Else PlusDM2 = DIP1[0] - DIP1[1]; If DIP1[1] - DIP1[0] < 0 Then MinusDM2 = 0; Else MinusDM2 = DIP1[1] - DIP1[0]; If MinusDM2 >= PlusDM2 Then PlusDM2 = 0; If MyRange2 > 0 Then { TRange2 = TRange2[1] - (TRange2[1] / MyRange2) + TR; PlusDM2142 = PlusDM2142[1] - (PlusDM2142[1] / MyRange2) + PlusDM2; } If TRange2 <> 0 Then DIP2 = 100 * PlusDM2142 / TRange2; Else DIP2 = 0 ; } plot1(DIP2); 즐거운 하루되세요