커뮤니티
MA는 어떻게 구해지나요?
2007-09-24 18:00:37
932
글번호 13638
이걸 수식 작성에 올려야 할지 프로그램 사용법에 올려야 할지 모르겠는데요.
현재 TS의 EL과 YesTrader의 YL을 병행사용하고 있습니다.
그런데 TS와 예스트레이더가 같은 Open, Close, High, Low값을 가짐에도 불구하고 계산되어 나오는 ADX 값이 서로 다릅니다-_-;;
예스트레이더의 ADX 로직을 그대로 TS에 옮겨심어봤는데 이번에는 또 다른 값이 나옵니다(?!) ADX로직은 _ADX라는 사용자함수를 참조했습니다. 예스에서 비교해보니 그대로더군요.
제 생각에 다른 점은 TS에서는 Average Function을 사용해서 MA를 구하는 반면, 예스트레이더에서는 MA라는 기능이 따로 있는 것이라고 생각됩니다만,
MA는 함수로 나와있지 않더군요.
그래서 예스트레이더에서 MA를 구하는 로직이 어떻게 짜여져 있는지 알고 싶어서 질문드립니다.
혹시 제가 옮겨심었다고 생각한 로직에 문제가 있을지도 모르니, 첨부해 봅니다.
Inputs : Period(NumericSimple);
Vars : value1(0), value2(0), value3(0), value4(0), value5(0);
value1 = iff(H-H[1]>0 and H-H[1]>L[1]-L,H-H[1],0);
value2 = iff(L[1]-L>0 and H-H[1]<L[1]-L,L[1]-L,0);
value3 = Average(value1,period);
value4 = Average(value2,period);
value5 = iff(value3 - value4 = 0, 0, absvalue(value3-value4)/(value3+value4)*100);
ADXyes = Average(value5,Period);
답변 1
예스스탁 예스스탁 답변
2007-09-27 10:22:19
안녕하세요
예스스탁입니다.
예스트레이더 3.1에서는 몇몇 지표함수의 지표값에
오류가 있어 함수의 계산식을 수정했습니다.
예스트레이더 3.1의 ADX함수식입니다.
Inputs: Length(Numeric);
Variables: Counter(0), CummDMI(0), Return(0), DMIV(0);
Return = 0;
DMIV = DMI(Length);
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 = (ADX[1] * (Length - 1) + DMI(Length)) / Length;
End;
ADX = Return;
참고하시기 바랍니다.
즐거운 하루되세요
> guest 님이 쓴 글입니다.
> 제목 : MA는 어떻게 구해지나요?
> 이걸 수식 작성에 올려야 할지 프로그램 사용법에 올려야 할지 모르겠는데요.
현재 TS의 EL과 YesTrader의 YL을 병행사용하고 있습니다.
그런데 TS와 예스트레이더가 같은 Open, Close, High, Low값을 가짐에도 불구하고 계산되어 나오는 ADX 값이 서로 다릅니다-_-;;
예스트레이더의 ADX 로직을 그대로 TS에 옮겨심어봤는데 이번에는 또 다른 값이 나옵니다(?!) ADX로직은 _ADX라는 사용자함수를 참조했습니다. 예스에서 비교해보니 그대로더군요.
제 생각에 다른 점은 TS에서는 Average Function을 사용해서 MA를 구하는 반면, 예스트레이더에서는 MA라는 기능이 따로 있는 것이라고 생각됩니다만,
MA는 함수로 나와있지 않더군요.
그래서 예스트레이더에서 MA를 구하는 로직이 어떻게 짜여져 있는지 알고 싶어서 질문드립니다.
혹시 제가 옮겨심었다고 생각한 로직에 문제가 있을지도 모르니, 첨부해 봅니다.
Inputs : Period(NumericSimple);
Vars : value1(0), value2(0), value3(0), value4(0), value5(0);
value1 = iff(H-H[1]>0 and H-H[1]>L[1]-L,H-H[1],0);
value2 = iff(L[1]-L>0 and H-H[1]<L[1]-L,L[1]-L,0);
value3 = Average(value1,period);
value4 = Average(value2,period);
value5 = iff(value3 - value4 = 0, 0, absvalue(value3-value4)/(value3+value4)*100);
ADXyes = Average(value5,Period);