커뮤니티

수식수정

프로필 이미지
회원
2008-11-24 13:23:52
1288
글번호 18327
답변완료
수고많으십니다 아래수식(ADX)을 예스로 수정부탁드립니다(응용할려고합니다) [코딩] 1. 함수 가. PlusDM (+DM) IF (High >= High[1]) And (High - High[1] >Low[1] - Low) Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlusDM = High - High[1] Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlusDM = 0 End If 나. MinusDM (-DM) If (Low <= Low[1]) And (High - High[1] <Low[1] - Low) Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinusDM = Low[1] - Low Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinusDm = 0 End If 다. TrueRange TrueRange = Max( High - Low, Abs(High - Close[1]), Abs(Low - Close[1])) &nbsp; 라. PlusDI (+DI) Parameter: Length(Numeric) Variables: SumPDM(0), SumTR(0), Counter(0), PDM(0), TRange(0) &nbsp; PDM = PlusDM() TRange = TrueRange() &nbsp; If CurrentBar <= 1 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumPDM = 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR = 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Counter = 0 To Length - 1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumPDM += PDM[Counter] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR&nbsp; += TRange[Counter] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End For &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlusDI = SumPDM / SumTR * 100.0 &nbsp; Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumPDM = SumPDM[1] - (SumPDM[1] / Length) + PDM &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR = SumTR[1]&nbsp; - (SumTR[1]&nbsp; / Length) + TRange &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlusDI = SumPDM / SumTR * 100.0 &nbsp; End If &nbsp; 마. MinusDI (-DI) Parameter: Length(Numeric) Variables: SumMDM(0), SumTR(0), Counter(0), MDM(0), TRange(0) &nbsp; MDM = MinusDM() TRange = TrueRange() &nbsp; If CurrentBar <= 1 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumMDM = 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR = 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Counter = 0 To Length - 1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumMDM += MDM[Counter] // += 는 SumMDM = SumMDM + MDM[Counter]의 약어 표시입니다. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR&nbsp; += TRange[Counter] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End For &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinusDI = SumMDM / SumTR * 100.0 &nbsp; Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumMDM = SumMDM[1] - (SumMDM[1] / Length) + MDM &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR&nbsp; = SumTR[1]&nbsp; - (SumTR[1]&nbsp; / Length) + TRange &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinusDI = SumMDM / SumTR * 100.0 &nbsp; End If &nbsp; 바. ADX Parameter: Length(Numeric) Variables: Summation(0), Counter(0), PDI(0), MDI(0), DMI(0) &nbsp; ADX = 0 &nbsp; PDI = PlusDI(Length) MDI = MinusDI(Length) If PDI + MDI = 0 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DMI = 0 Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DMI = 100 * Abs(PDI - MDI) / (PDI + MDI) End If&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; If CurrentBar >= 1 And Length >0 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If CurrentBar <=&nbsp; 1 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Summation&nbsp; = 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Counter = 0 To Length - 1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Summation += DMI[Counter] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End For &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADX = Summation / Counter&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADX = (Length - 1) * ADX[1] / Length + DMI / Length &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If End If &nbsp; [지표] &nbsp; DMS // DMS는 DMI와 ADX를 포함한 지표로 표기 합니다. Parameter: Length(14) Variables: SumDX(0), Counter(0) Draw2( Round( MinusDI(Length),3), "-DI", Blue) Draw1( Round( PlusDI(Length),3), "+DI", Red Draw3( Round( ADX(Length),3), "ADX") DrawBase1( 20, "20 Line", DarkGray )&nbsp;
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2008-11-24 14:31:49

안녕하세요 예스스탁입니다. 사용자함수 1. 함수 가. 사용자함수명 : PlusDM IF (High >= High[1]) And (High - High[1] >Low[1] - Low) Then PlusDM = High - High[1]; Else PlusDM = 0; 나. 사용자함수명 MinusDM If (Low <= Low[1]) And (High - High[1] <Low[1] - Low) Then MinusDM = Low[1] - Low; Else MinusDm = 0; 다. 사용자함수명 TrueR TrueR = Max( High - Low, Abs(High - Close[1]), Abs(Low - Close[1])); 라. 사용자함수명 PlusDI input : Length(Numeric); Vars : SumPDM(0), SumTR(0), Counter(0), PDM(0), TRange(0); PDM = PlusDM(); TRange = TrueR(); If CurrentBar <= 1 Then{ SumPDM = 0; SumTR = 0; For Counter = 0 To Length - 1{ SumPDM = SumPDM + PDM[Counter]; SumTR = SumTR + TRange[Counter]; } PlusDI = SumPDM / SumTR * 100.0; } Else{ SumPDM = SumPDM[1] - (SumPDM[1] / Length) + PDM; SumTR = SumTR[1] - (SumTR[1] / Length) + TRange; PlusDI = SumPDM / SumTR * 100.0; } 마. 사용자함수명 MinusDI INPUT: Length(Numeric); VARS: SumMDM(0), SumTR(0), Counter(0), MDM(0), TRange(0); MDM = MinusDM(); TRange = TrueRange(); If CurrentBar <= 1 Then{ SumMDM = 0; SumTR = 0; For Counter = 0 To Length - 1{ SumMDM = SumMDM + MDM[Counter] ; SumTR = SumTR + TRange[Counter]; } MinusDI = SumMDM / SumTR * 100.0; } Else{ SumMDM = SumMDM[1] - (SumMDM[1] / Length) + MDM ; SumTR = SumTR[1] - (SumTR[1] / Length) + TRange; MinusDI = SumMDM / SumTR * 100.0; } 바. 사용자함수명 ADXV INPUT: Length(Numeric); VARS: Summation(0), Counter(0), PDI(0), MDI(0), DMI(0); ADXV = 0; PDI = PlusDI(Length); MDI = MinusDI(Length); If (PDI + MDI) == 0 Then DMI = 0; Else DMI = 100 * Abs(PDI - MDI) / (PDI + MDI); If CurrentBar >= 1 And Length >0 Then{ If CurrentBar <= 1 Then{ Summation = 0; For Counter = 0 To Length - 1{ Summation = Summation+DMI[Counter]; } ADXV = Summation / Counter; } Else { ADXV = (Length - 1) * ADXV[1] / Length + DMI / Length; } } [지표] 지표식 INPUT: Length(14); Vars: SumDX(0), Counter(0); PLOT2( Round( MinusDI(Length),3), "-DI", Blue); Plot1( Round( PlusDI(Length),3), "+DI", Red ); PLOT3( Round( ADXV(Length),3), "ADX"); PlotBaseLine1( 20, "20 Line", Gray ) ; 즐거운 하루되세요 > CJ_kcw1954 님이 쓴 글입니다. > 제목 : 수식수정 > 수고많으십니다 아래수식(ADX)을 예스로 수정부탁드립니다(응용할려고합니다) [코딩] 1. 함수 가. PlusDM (+DM) IF (High >= High[1]) And (High - High[1] >Low[1] - Low) Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlusDM = High - High[1] Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlusDM = 0 End If 나. MinusDM (-DM) If (Low <= Low[1]) And (High - High[1] <Low[1] - Low) Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinusDM = Low[1] - Low Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinusDm = 0 End If 다. TrueRange TrueRange = Max( High - Low, Abs(High - Close[1]), Abs(Low - Close[1])) &nbsp; 라. PlusDI (+DI) Parameter: Length(Numeric) Variables: SumPDM(0), SumTR(0), Counter(0), PDM(0), TRange(0) &nbsp; PDM = PlusDM() TRange = TrueRange() &nbsp; If CurrentBar <= 1 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumPDM = 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR = 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Counter = 0 To Length - 1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumPDM += PDM[Counter] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR&nbsp; += TRange[Counter] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End For &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlusDI = SumPDM / SumTR * 100.0 &nbsp; Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumPDM = SumPDM[1] - (SumPDM[1] / Length) + PDM &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR = SumTR[1]&nbsp; - (SumTR[1]&nbsp; / Length) + TRange &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlusDI = SumPDM / SumTR * 100.0 &nbsp; End If &nbsp; 마. MinusDI (-DI) Parameter: Length(Numeric) Variables: SumMDM(0), SumTR(0), Counter(0), MDM(0), TRange(0) &nbsp; MDM = MinusDM() TRange = TrueRange() &nbsp; If CurrentBar <= 1 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumMDM = 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR = 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Counter = 0 To Length - 1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumMDM += MDM[Counter] // += 는 SumMDM = SumMDM + MDM[Counter]의 약어 표시입니다. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR&nbsp; += TRange[Counter] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End For &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinusDI = SumMDM / SumTR * 100.0 &nbsp; Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumMDM = SumMDM[1] - (SumMDM[1] / Length) + MDM &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SumTR&nbsp; = SumTR[1]&nbsp; - (SumTR[1]&nbsp; / Length) + TRange &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MinusDI = SumMDM / SumTR * 100.0 &nbsp; End If &nbsp; 바. ADX Parameter: Length(Numeric) Variables: Summation(0), Counter(0), PDI(0), MDI(0), DMI(0) &nbsp; ADX = 0 &nbsp; PDI = PlusDI(Length) MDI = MinusDI(Length) If PDI + MDI = 0 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DMI = 0 Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DMI = 100 * Abs(PDI - MDI) / (PDI + MDI) End If&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; If CurrentBar >= 1 And Length >0 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If CurrentBar <=&nbsp; 1 Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Summation&nbsp; = 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Counter = 0 To Length - 1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Summation += DMI[Counter] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End For &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADX = Summation / Counter&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADX = (Length - 1) * ADX[1] / Length + DMI / Length &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If End If &nbsp; [지표] &nbsp; DMS // DMS는 DMI와 ADX를 포함한 지표로 표기 합니다. Parameter: Length(14) Variables: SumDX(0), Counter(0) Draw2( Round( MinusDI(Length),3), "-DI", Blue) Draw1( Round( PlusDI(Length),3), "+DI", Red Draw3( Round( ADX(Length),3), "ADX") DrawBase1( 20, "20 Line", DarkGray )&nbsp;