커뮤니티
지표 계산식 문의드립니다.
2026-02-10 07:32:32
87
글번호 230482
DMI 지표 내에 있는
Diplus와 Diminus 함수를 변형하려고 하는데 ylhelp를 보고 수식을 짜려고 했더니 잘 안되네요.
14일 기준으로 만들고 있는데, 코드를 부탁드립니다.
감사합니다. 즐거운 하루 보내세요.
답변 1
예스스탁 예스스탁 답변
2026-02-10 10:58:54
안녕하세요
예스스탁입니다.
지표식으로 풀어서 작성해 드립니다.
Input : Length(14) ;
Var : Counter(0), TRange(0), MyRange(Length);
var : PlusDM14(0),MinusDM14(0),PlusDM(0), MinusDM(0);
var : DP(0),DM(0);
If CurrentBar == 1 Then
{
MyRange = Length;
DP = 0;
PlusDM14 = 0;
MinusDM14 = 0;
TRange = 0;
For Counter = 0 To MyRange - 1
{
If High[Counter] - High[Counter+1] < 0 Then
PlusDM = 0;
Else
PlusDM = High[Counter] - High[Counter+1];
If Low[Counter+1] - Low[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = Low[Counter+1] - Low[Counter];
var1 = PlusDM;
var2 = MinusDM;
If var2 >= var1 Then
PlusDM = 0;
If var1 >= var2 Then
MinusDM = 0;
TRange = TRange + TrueRange[Counter];
PlusDM14 = PlusDM14 + PlusDM;
MinusDM14 = MinusDM14 + MinusDM;
}
If TRange <> 0 Then
{
DP = 100 * PlusDM14 / TRange;
DM = 100 * MinusDM14 / TRange;
}
Else
{
DP = 0 ;
DM = 0;
}
}
Else If CurrentBar > 1 Then
{
If High[0] - High[1] < 0 Then
PlusDM = 0;
Else
PlusDM = High[0] - High[1];
If Low [1] - Low [0] < 0 Then
MinusDM = 0;
Else
MinusDM = Low[1] - Low[0];
var1 = PlusDM;
var2 = MinusDM;
If var2 >= var1 Then
PlusDM = 0;
If var1 >= var2 Then
MinusDM = 0;
If MyRange > 0 Then
{
TRange = TRange[1] - (TRange[1] / MyRange) + TrueRange;
PlusDM14 = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM;
MinusDM14 = MinusDM14[1] - (MinusDM14[1] / MyRange) + MinusDM;
}
If TRange <> 0 Then
{
DP = 100 * PlusDM14 / TRange;
DM = 100 * MinusDM14 / TRange;
}
Else
{
DP = 0;
DM = 0;
}
}
Plot1(DP,"DI+");
Plot2(DM,"DI-");
새해 복 많이 받으시고 즐거운 명절 보내시기 바랍니다.
다음글