커뮤니티
지표 문의 드립니다.
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);
즐거운 하루되세요
다음글