커뮤니티
문의드립니다.
2014-02-20 21:00:24
158
글번호 72771
300틱에서 900틱의 DMI(DiPlus와 DiMinus)를 수식으로 표현할 수 있을까요?
보조차트가 아니라 수식으로 구현할 수 있는지요?
답변 1
예스스탁 예스스탁 답변
2014-02-21 11:51:47
안녕하세요
예스스탁입니다.
실제 300틱 차트와 값이 조금 차이가 있을수 있습니다.
이용에 참고하시기 바랍니다.
input : Length(14);
var : TT(0),BarCnt(0),cnt(0),MyRange(0);
var : DP(0),PlusDM(0),MinusDM(0),TH(0),TL(0);
var : DM(0),DMIv(0);;
Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),TRange[61](0);
Array : PlusDM14[61](0),MinusDM14[61](0);
TT = dayindex%3;
if date != date[1] or (TT < TT[1]) Then{
BarCnt = BarCnt+1;
HH[0] = H;
LL[0] = L;
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];
TRange[cnt] = TRange[cnt-1][1];
PlusDM14[cnt] = PlusDM14[cnt-1][1];
MinusDM14[cnt] = MinusDM14[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 BarCnt == Length+2 Then {
MyRange = Length;
DP = 0;
DM = 0;
PlusDM14[0] = 0;
MinusDM14[0] = 0;
TRange[0] = 0;
For cnt = 0 To MyRange - 1 {
If HH[cnt] - HH[cnt+1] < 0 Then
PlusDM = 0;
Else
PlusDM = HH[cnt] - HH[cnt+1];
If LL[cnt+1] - LL[cnt] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[cnt+1] - LL[cnt];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0;
TRange[0] = TRange[0] + TR[cnt];
PlusDM14[0] = PlusDM14[0] + PlusDM;
MinusDM14[0] = MinusDM14[0] + MinusDM;
}
If TRange[0] <> 0 Then {
DP = 100 * PlusDM14[0] / TRange[0];
DM = 100 * MinusDM14[0] / TRange[0];
}
Else {
DP = 0 ;
DM = 0;
}
}
Else If BarCnt > Length+2 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[0] = TRange[1] - (TRange[1] / MyRange) + TR[0];
PlusDM14[0] = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM;
MinusDM14[0] = MinusDM14[1] - (MinusDM14[1] / MyRange) + MinusDM;
}
If TRange[0] <> 0 Then{
DP = 100 * PlusDM14[0] / TRange[0];
DM = 100 * MinusDM14[0] / TRange[0];
}
Else{
DP = 0;
DM = 0;
}
}
If DP + DM == 0 Then
DMIv = 0;
Else
DMIv = 100 * AbsValue(DP - DM) / (DP + DM);
plot1(DMIv);
plot2(DP);
plot3(DM);
즐거운 하루되세요
> 사이먼Lee 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 300틱에서 900틱의 DMI(DiPlus와 DiMinus)를 수식으로 표현할 수 있을까요?
보조차트가 아니라 수식으로 구현할 수 있는지요?
이전글