지표식 문의드립니다.
특정값의 adx를 구하는 지표식을 만들고 싶습니다.
즉 adx는 당일고가 당일저가 전일고가 전일저가를 var1,2,3,4로 대체한 식을
알고 싶습니다.
답변 1
예스스탁
예스스탁 답변
2020-03-24 11:01:25
안녕하세요
예스스탁입니다.
수식을 모두 풀어서 고가는 var1, 저가는 var2, 종가는 var3으로 대체해 드립니다.
var1~var3에 값 지정하시면 됩니다.
Input : Length(14) ;
Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0),MinusDM14(0),PlusDM(0), MinusDM(0);
var : DP(0),DM(0),DMIv(0),ADXV(0);
Var : CummDMI(0), Return(0);
var : TH(0),TL(0),TR(0);
var1 = h;
var2 = L;
var3 = c;
If var3[1] > var1 then
TH = var3[1];
else
TH = var1;
If var3[1] < var2[0] then
TL = var3[1];
else
TL = var2[0];
TR = TH-TL;
If CurrentBar == 1 Then Begin
MyRange = Length;
DP = 0;
PlusDM14 = 0;
DM = 0;
MinusDM14 = 0;
TRange = 0;
For Counter = 0 To MyRange - 1 Begin
If var1[Counter] - var1[Counter+1] < 0 Then
PlusDM = 0;
Else
PlusDM = var1[Counter] - var1[Counter+1];
If var2[Counter+1] - var2[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = var2[Counter+1] - var2[Counter];
value1 = PlusDM;
value2 = MinusDM;
If value1 >= value2 Then
MinusDM = 0;
If value2 >= value1 Then
PlusDM = 0;
TRange = TRange + TR[Counter];
PlusDM14 = PlusDM14 + PlusDM;
MinusDM14 = MinusDM14 + MinusDM;
End;
If TRange <> 0 Then
DP = 100 * PlusDM14 / TRange;
Else
DP = 0 ;
If TRange <> 0 Then
DM = 100 * MinusDM14 / TRange;
Else
DM = 0;
End
Else If CurrentBar > 1 Then {
If var1[0] - var1[1] < 0 Then
PlusDM = 0;
Else
PlusDM = var1[0] - var1[1];
If var2[1] - var2[0] < 0 Then
MinusDM = 0;
Else
MinusDM = var2[1] - var2[0];
value1 = PlusDM;
value2 = MinusDM;
If value1 >= value2 Then
MinusDM = 0;
If value2 >= value1 Then
PlusDM = 0;
If MyRange > 0 Then Begin
TRange = TRange[1] - (TRange[1] / MyRange) + TrueRange;
PlusDM14 = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM;
MinusDM14 = MinusDM14[1] - (MinusDM14[1] / MyRange) + MinusDM;
End;
If TRange <> 0 Then
DP = 100 * PlusDM14 / TRange;
Else
DP = 0 ;
If TRange <> 0 Then
DM = 100 * MinusDM14 / TRange;
Else
DM = 0;
}
If DP + DM == 0 Then
DMIv = 0;
Else
DMIv = 100 * AbsValue(DP - DM) / (DP + DM);
If CurrentBar >= 1 AND Length > 0 Then Begin
If CurrentBar < Length Then begin
CummDMI = 0;
for Counter = 0 To CurrentBar - 1 Begin
CummDMI = CummDMI + DMIV[Counter];
End;
Return = CummDMI / CurrentBar;
End
Else
Return = (ADXv[1] * (Length - 1) + DMIv) / Length;
End;
ADXv = Return;
plot1(DP);
plot2(DM);
plot3(DMIV);
plot4(ADXv);
즐거운 하루되세요
> 한글나라 님이 쓴 글입니다.
> 제목 : 지표식 문의
> 지표식 문의드립니다.
특정값의 adx를 구하는 지표식을 만들고 싶습니다.
즉 adx는 당일고가 당일저가 전일고가 전일저가를 var1,2,3,4로 대체한 식을
알고 싶습니다.