커뮤니티
수식문의 드립니다^^;
2012-07-12 10:29:35
421
글번호 52828
안녕하세요~
틱봉에서 1분봉의 ADX값을 참조하는 수식 문의 드립니다.
배우면서 시스템을 만들어 가는데. 아직은 서툴러서 문의가 많습니다.^^;
답변 2
예스스탁 예스스탁 답변
2012-07-12 19:03:26
안녕하세요
예스스탁입니다.
틱봉에서 분봉의 지표를 구현하는 것은 가능하지 않습니다.
봉하나에서 시간을 기준으로 데이터를 분리가 가능하지 않으므로
시간을 구분짓는 시세가 틱봉의 중간에 끼면
구분을 하지 못하게 됩니다.
위내용 감안하시면 아래식이용하시면 됩니다.
1분봉과 같이 완전히 같게 작성될수는 없습니다.
input : TT(240),Length(14);
var : TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),DMinus(0),MinusDM14(0),TRange1(0),preMinusDM14(0);
Variables: Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),Dplus(0),preADX(0),ADXv(0);
Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0);
var1 = TimeToMinutes(stime)%TT;
if dayindex == 0 or (var1 < var1[1] and stime > stime[1]) Then{
Dcnt = Dcnt+1;
HH[0] = H;
LL[0] = L;
CC[0] = C;
preTRange = TRange[1];
prePlusDM14 = PlusDM14[1];
preMinusDM14 = MinusDM14[1];
preADX = ADXv[1];
for cnt = 1 to 60{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
TR[cnt] = TR[cnt-1][1];
DMIv[cnt] = DMIv[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if CC[1] > 0 Then{
If CC[1] > HH[0] then
TH = CC[1];
else
TH = HH[0];
If CC[1] < LL[0] then
TL = CC[1];
else
TL = LL[0];
TR[0] = TH-TL;
}
If Dcnt == Length+1 Then {
MyRange = Length;
DPlus = 0;
PlusDM14 = 0;
TRange = 0;
DMinus = 0;
MinusDM14 = 0;
TRange1 = 0;
For Counter = 0 To MyRange - 1 {
If HH[Counter] - HH[Counter+1] < 0 Then
PlusDM = 0 ;
Else
PlusDM = HH[Counter] - HH[Counter+1];
If LL[Counter+1] - LL[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[Counter+1] - LL[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;
}
Else If Dcnt > Length+1 Then {
If HH[0] - HH[1] < 0 Then
PlusDM = 0;
Else
PlusDM = HH[0] - HH[1];
If LL[1] - LL[0] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[1] - LL[0];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0 ;
If MyRange > 0 Then {
TRange = preTRange - (preTRange / MyRange) + TR[0];
PlusDM14 = prePlusDM14 - (prePlusDM14 / MyRange) + PlusDM;
MinusDM14 = preMinusDM14 - (preMinusDM14 / MyRange) + MinusDM;
}
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] = 0;
Else
DMIv[0] = 100 * Abs(DPlus - DMinus) / (DPlus + DMinus);
Variables: CummDMI(0), Return(0);
Return = 0;
If dcnt >= Length AND Length > 0 Then Begin
If CurrentBar < Length+1 Then begin
CummDMI = 0;
for Counter = 0 To CurrentBar - 1 Begin
CummDMI = CummDMI + DMIV[Counter];
End;
Return = CummDMI / CurrentBar;
End
Else
Return = (preADX[1] * (Length - 1) + DMIv[0]) / Length;
End;
ADXv = Return;
plot1(ADXv);
plot2(Dplus);
plot3(Dminus);
도움을 드리지 못해 죄송합니다.
> 하얀모래 님이 쓴 글입니다.
> 제목 : 수식문의 드립니다^^;
> 안녕하세요~
틱봉에서 1분봉의 ADX값을 참조하는 수식 문의 드립니다.
배우면서 시스템을 만들어 가는데. 아직은 서툴러서 문의가 많습니다.^^;
하얀모래
2012-07-12 19:20:41
^^;
다음글
이전글