커뮤니티
수식수정
2008-11-24 13:23:52
1288
글번호 18327
수고많으십니다
아래수식(ADX)을 예스로 수정부탁드립니다(응용할려고합니다)
[코딩]
1. 함수
가. PlusDM (+DM)
IF (High >= High[1]) And (High - High[1] >Low[1] - Low) Then
PlusDM = High - High[1]
Else
PlusDM = 0
End If
나. MinusDM (-DM)
If (Low <= Low[1]) And (High - High[1] <Low[1] - Low) Then
MinusDM = Low[1] - Low
Else
MinusDm = 0
End If
다. TrueRange
TrueRange = Max( High - Low, Abs(High - Close[1]), Abs(Low - Close[1]))
라. PlusDI (+DI)
Parameter: Length(Numeric)
Variables: SumPDM(0), SumTR(0), Counter(0), PDM(0), TRange(0)
PDM = PlusDM()
TRange = TrueRange()
If CurrentBar <= 1 Then
SumPDM = 0
SumTR = 0
For Counter = 0 To Length - 1
SumPDM += PDM[Counter]
SumTR += TRange[Counter]
End For
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
End If
마. MinusDI (-DI)
Parameter: Length(Numeric)
Variables: 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 += MDM[Counter]
// += 는 SumMDM = SumMDM + MDM[Counter]의 약어 표시입니다.
SumTR += TRange[Counter]
End For
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
End If
바. ADX
Parameter: Length(Numeric)
Variables: Summation(0), Counter(0), PDI(0), MDI(0), DMI(0)
ADX = 0
PDI = PlusDI(Length)
MDI = MinusDI(Length)
If PDI + MDI = 0 Then
DMI = 0
Else
DMI = 100 * Abs(PDI - MDI) / (PDI + MDI)
End If
If CurrentBar >= 1 And Length >0 Then
If CurrentBar <= 1 Then
Summation = 0
For Counter = 0 To Length - 1
Summation += DMI[Counter]
End For
ADX = Summation / Counter
Else
ADX = (Length - 1) * ADX[1] / Length + DMI / Length
End If
End If
[지표]
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 )
답변 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
PlusDM = High - High[1]
Else
PlusDM = 0
End If
나. MinusDM (-DM)
If (Low <= Low[1]) And (High - High[1] <Low[1] - Low) Then
MinusDM = Low[1] - Low
Else
MinusDm = 0
End If
다. TrueRange
TrueRange = Max( High - Low, Abs(High - Close[1]), Abs(Low - Close[1]))
라. PlusDI (+DI)
Parameter: Length(Numeric)
Variables: SumPDM(0), SumTR(0), Counter(0), PDM(0), TRange(0)
PDM = PlusDM()
TRange = TrueRange()
If CurrentBar <= 1 Then
SumPDM = 0
SumTR = 0
For Counter = 0 To Length - 1
SumPDM += PDM[Counter]
SumTR += TRange[Counter]
End For
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
End If
마. MinusDI (-DI)
Parameter: Length(Numeric)
Variables: 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 += MDM[Counter]
// += 는 SumMDM = SumMDM + MDM[Counter]의 약어 표시입니다.
SumTR += TRange[Counter]
End For
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
End If
바. ADX
Parameter: Length(Numeric)
Variables: Summation(0), Counter(0), PDI(0), MDI(0), DMI(0)
ADX = 0
PDI = PlusDI(Length)
MDI = MinusDI(Length)
If PDI + MDI = 0 Then
DMI = 0
Else
DMI = 100 * Abs(PDI - MDI) / (PDI + MDI)
End If
If CurrentBar >= 1 And Length >0 Then
If CurrentBar <= 1 Then
Summation = 0
For Counter = 0 To Length - 1
Summation += DMI[Counter]
End For
ADX = Summation / Counter
Else
ADX = (Length - 1) * ADX[1] / Length + DMI / Length
End If
End If
[지표]
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 )
다음글
이전글