커뮤니티
ADX와 DX 그리고 갭보정식 부탁드립니다.
2014-05-07 20:41:57
194
글번호 74905
늘 감사드립니다. ADX관련하여 질문이 있습니다.
DX기간에는 (14) / ADX기간에는 (25) / SIG기간에는 (20)
필요조건[1]
IF ADX>SIG , 상방진입 or 하방진입 유효
IF ADX<SIG , 모든 신호무시
필요조건[2]
갭보정을 하고 싶습니다. 예스스탁에 제공되는 함수식에 갭보정을 포함부탁드립니다.
필요조건[3]
다른분께서 올려주신 글 보니, 예스스탁의 ADX식과 이트레이드의 ADX식이 약간 다르고,
이에 따라, 답변으로 이트레이드ADX로 표현해서 올려주셨던데.
이트레이드ADX식으로 갭보정해서 부탁드립니다.
제가 두서없어, 첨부파일로 올려드립니다.
- 1. 이트레이드ADX.jpg (0.48 MB)
답변 1
예스스탁 예스스탁 답변
2014-05-08 14:34:17
안녕하세요
예스스탁입니다.
1.
Inputs: Length(25),Sig(20);
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0),TH(0),TL(0),TR(0);
Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),DPlus(0);
Var : MinusDM14(0), Dminus(0),DMIv(0), ADXCounter(0), ADXCummDMI(0), ADXReturn(0),Return(0),GADX(0),GADXsig(0);
if date!=date[1] then { // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉)
gap = Open-Close[1]; // 일간갭
sumGap = sumGap+gap; // 일간갭 누적
}
GO = O - sumGap;// 갭보정 시가
GH = H - sumGap;// 갭보정 고가
GL = L - sumGap;// 갭보정 저가
GC = C - sumGap; // 갭보정 종가
If GC[1] > GH then
TH = GC[1];
else
TH = GH;
If GC[1] < GL then
TL = GC[1];
else
TL = GL;
TR = TH - TL;
If CurrentBar == 1 Then {
MyRange = Length;
DPlus = 0;
PlusDM14 = 0;
MinusDM14 = 0;
TRange = 0;
For Counter = 0 To MyRange - 1 {
If GH[Counter] - GH[Counter+1] < 0 Then
PlusDM = 0;
Else
PlusDM = GH[Counter] - GH[Counter+1];
If GL[Counter+1] - GL[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = GL[Counter+1] - GL[Counter];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0;
TRange = TRange + TR[Counter];
PlusDM14 = PlusDM14 + PlusDM;
MinusDM14 = MinusDM14 + MinusDM;
}
If TRange <> 0 Then
DPlus = 100 * PlusDM14 / TRange;
Else
DPlus = 0 ;
If TRange <> 0 Then
DMinus = 100 * MinusDM14 / TRange;
Else
DMinus = 0;
}
##dp
Else
If CurrentBar > 1 Then {
If GH[0] - GH[1] < 0 Then
PlusDM = 0;
Else
PlusDM = GH[0] - GH[1];
If GL[1] - GL[0] < 0 Then
MinusDM = 0;
Else
MinusDM = GL[1] - GL[0];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0 ;
If MyRange > 0 Then Begin
TRange = TRange[1] - (TRange[1] / MyRange) + TR;
PlusDM14 = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM;
MinusDM14 = MinusDM14[1] - (MinusDM14[1] / MyRange) + MinusDM;
End;
If TRange <> 0 Then
DPlus = 100 * PlusDM14 / TRange;
Else
DPlus = 0 ;
If TRange <> 0 Then
DMinus = 100 * MinusDM14 / TRange;
Else
DMinus = 0;
}
If DPlus + DMinus == 0 Then
DMIv = 0;
Else
DMIv = 100 * AbsValue(DPlus - DMinus) / (DPlus + DMinus);
Return = 0;
If CurrentBar >= 1 AND Length > 0 Then Begin
If CurrentBar < Length Then begin
ADXCummDMI = 0;
for Counter = 0 To CurrentBar - 1 Begin
ADXCummDMI = ADxCummDMI + DMIV[Counter];
End;
Return = ADXCummDMI / CurrentBar;
End
Else
Return = (GADX[1] * (Length - 1) + DMIv) / Length;
End;
GADX = Return;
GADXsig = ma(GADX,Sig);
if GADX > GADXsig Then{
if 매수조건 Then
buy();
if 매도조건 Then
sell();
}
2.
input : Length(25),sig(20);
var : Plus(0),Minus(0),Gadx(0),GADXsig(0);
var : sumGap(0), gap(0), GO(0), GH(0), GL(0), GC(0);
if date!=date[1] then {
gap = Open-Close[1];
sumGap = sumGap+gap;
}
GO = O - sumGap;
GH = H - sumGap;
GL = L - sumGap;
GC = C - sumGap;
plus = Ema(iff(GH-GH[1]>0 && GH-GH[1]>GL[1]-GL,GH-GH[1],0),Length)/
Ema(max(max(GH-GL,abs(GC[1]-GH)),abs(GC[1]-GL)),Length)*100;
Minus = ema(iff(GL[1]-GL>0 && GH-GH[1]<GL[1]-GL,GL[1]-GL,0),Length)/
ema(max(max(GH-GL,abs(GC[1]-GH)),abs(GC[1]-GL)),Length)*100;
GADX = Ema(abs(plus-Minus)/(plus+Minus),Length)*100;
GADXsig = ma(GADX,sig);
if GADX > GADXsig Then{
if 매수조건 Then
buy();
if 매도조건 Then
sell();
}
즐거운 하루되세요
> fm20fm 님이 쓴 글입니다.
> 제목 : ADX와 DX 그리고 갭보정식 부탁드립니다.
> 늘 감사드립니다. ADX관련하여 질문이 있습니다.
DX기간에는 (14) / ADX기간에는 (25) / SIG기간에는 (20)
필요조건[1]
IF ADX>SIG , 상방진입 or 하방진입 유효
IF ADX<SIG , 모든 신호무시
필요조건[2]
갭보정을 하고 싶습니다. 예스스탁에 제공되는 함수식에 갭보정을 포함부탁드립니다.
필요조건[3]
다른분께서 올려주신 글 보니, 예스스탁의 ADX식과 이트레이드의 ADX식이 약간 다르고,
이에 따라, 답변으로 이트레이드ADX로 표현해서 올려주셨던데.
이트레이드ADX식으로 갭보정해서 부탁드립니다.
제가 두서없어, 첨부파일로 올려드립니다.
다음글
이전글