커뮤니티
문의드립니다.
2011-01-05 15:32:21
738
글번호 34722
안녕하세요!
갭보정한 RSI
Inputs: RSIPeriod(14);
Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(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; // 갭보정 종가
If CurrentBar == 1 AND RSIPeriod > 0 Then Begin
UpSum = 0;
DownSum = 0;
For RSIcount = 0 To RSIPeriod - 1 Begin
UpAmt = GC[RSIcount] - GC[RSIcount+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
End
Else
If CurrentBar > 1 AND RSIPeriod > 0 Then Begin
UpAmt = GC[0] - GC[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if RSIV > 50 Then
plot1(RSIv,"1",red);
Else
plot1(RSIv,"1",blue);
PlotBaseLine1(50, "기준선1");
갭보정한 RSI식을 막대그래프로 표현한 겁니다.
그런데 그림-1과 같이 됩니다.
제 의도는 그림-2와 같이 지표가 나타났으면 하는데... ㅜ.ㅜ
그림-2와 같이 나타나는 갭보정한 RSI 지표식 부탁드립니다.
그리고 갭보정한 ADX도 그림-2와 같이
DI+가 DI-를 상향 돌파할때 빨간색 막대그래프
DI+가 DI-를 하향 돌파할때 파란색 막대그래프로 지표가 나타나게 지표식 부탁드립니다.
행복한 하루되세요*^^*
- 1. 34998_1.jpg (0.06 MB)
답변 3
예스스탁 예스스탁 답변
2011-01-06 13:51:23
안녕하세요
예스스탁입니다.
1.
그림만으로는 정확히 어떤 식을 원하시는지 잘 모르겠습니다.
해당 그림 내용을 구현할 만한 계산 내용을 정확히 언급해 주셔야 합니다.
50을 기준으로 초과나 미달한 만큼의 수치를 표현하기를
원하시면 아래식을 사용하시면 됩니다.
Inputs: RSIPeriod(14);
Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(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; // 갭보정 종가
If CurrentBar == 1 AND RSIPeriod > 0 Then Begin
UpSum = 0;
DownSum = 0;
For RSIcount = 0 To RSIPeriod - 1 Begin
UpAmt = GC[RSIcount] - GC[RSIcount+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
End
Else
If CurrentBar > 1 AND RSIPeriod > 0 Then Begin
UpAmt = GC[0] - GC[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if RSIV > 50 Then
plot1(RSIv-50,"1",red);
Else
plot1(RSIv-50,"1",blue);
2.
Inputs: Length(10);
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);
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;
if Dplus-Dminus > 0 Then
plot1(Dplus-Dminus,"1",red);
Else
plot1(Dplus-Dminus,"1",blue);
즐거운 하루되세요
> 마린187 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요!
갭보정한 RSI
Inputs: RSIPeriod(14);
Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(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; // 갭보정 종가
If CurrentBar == 1 AND RSIPeriod > 0 Then Begin
UpSum = 0;
DownSum = 0;
For RSIcount = 0 To RSIPeriod - 1 Begin
UpAmt = GC[RSIcount] - GC[RSIcount+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
End
Else
If CurrentBar > 1 AND RSIPeriod > 0 Then Begin
UpAmt = GC[0] - GC[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if RSIV > 50 Then
plot1(RSIv,"1",red);
Else
plot1(RSIv,"1",blue);
PlotBaseLine1(50, "기준선1");
갭보정한 RSI식을 막대그래프로 표현한 겁니다.
그런데 그림-1과 같이 됩니다.
제 의도는 그림-2와 같이 지표가 나타났으면 하는데... ㅜ.ㅜ
그림-2와 같이 나타나는 갭보정한 RSI 지표식 부탁드립니다.
그리고 갭보정한 ADX도 그림-2와 같이
DI+가 DI-를 상향 돌파할때 빨간색 막대그래프
DI+가 DI-를 하향 돌파할때 파란색 막대그래프로 지표가 나타나게 지표식 부탁드립니다.
행복한 하루되세요*^^*
회원
2012-05-07 07:32:52
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
> 안녕하세요
예스스탁입니다.
1.
그림만으로는 정확히 어떤 식을 원하시는지 잘 모르겠습니다.
해당 그림 내용을 구현할 만한 계산 내용을 정확히 언급해 주셔야 합니다.
50을 기준으로 초과나 미달한 만큼의 수치를 표현하기를
원하시면 아래식을 사용하시면 됩니다.
Inputs: RSIPeriod(14);
Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(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; // 갭보정 종가
If CurrentBar == 1 AND RSIPeriod > 0 Then Begin
UpSum = 0;
DownSum = 0;
For RSIcount = 0 To RSIPeriod - 1 Begin
UpAmt = GC[RSIcount] - GC[RSIcount+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
End
Else
If CurrentBar > 1 AND RSIPeriod > 0 Then Begin
UpAmt = GC[0] - GC[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if RSIV > 50 Then
plot1(RSIv-50,"1",red);
Else
plot1(RSIv-50,"1",blue);
2.
Inputs: Length(10);
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);
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;
if Dplus-Dminus > 0 Then
plot1(Dplus-Dminus,"1",red);
Else
plot1(Dplus-Dminus,"1",blue);
즐거운 하루되세요
> 마린187 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요!
갭보정한 RSI
Inputs: RSIPeriod(14);
Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(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; // 갭보정 종가
If CurrentBar == 1 AND RSIPeriod > 0 Then Begin
UpSum = 0;
DownSum = 0;
For RSIcount = 0 To RSIPeriod - 1 Begin
UpAmt = GC[RSIcount] - GC[RSIcount+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
End
Else
If CurrentBar > 1 AND RSIPeriod > 0 Then Begin
UpAmt = GC[0] - GC[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if RSIV > 50 Then
plot1(RSIv,"1",red);
Else
plot1(RSIv,"1",blue);
PlotBaseLine1(50, "기준선1");
갭보정한 RSI식을 막대그래프로 표현한 겁니다.
그런데 그림-1과 같이 됩니다.
제 의도는 그림-2와 같이 지표가 나타났으면 하는데... ㅜ.ㅜ
그림-2와 같이 나타나는 갭보정한 RSI 지표식 부탁드립니다.
그리고 갭보정한 ADX도 그림-2와 같이
DI+가 DI-를 상향 돌파할때 빨간색 막대그래프
DI+가 DI-를 하향 돌파할때 파란색 막대그래프로 지표가 나타나게 지표식 부탁드립니다.
행복한 하루되세요*^^*
회원
2012-05-13 16:05:02
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
> 안녕하세요
예스스탁입니다.
1.
그림만으로는 정확히 어떤 식을 원하시는지 잘 모르겠습니다.
해당 그림 내용을 구현할 만한 계산 내용을 정확히 언급해 주셔야 합니다.
50을 기준으로 초과나 미달한 만큼의 수치를 표현하기를
원하시면 아래식을 사용하시면 됩니다.
Inputs: RSIPeriod(14);
Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(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; // 갭보정 종가
If CurrentBar == 1 AND RSIPeriod > 0 Then Begin
UpSum = 0;
DownSum = 0;
For RSIcount = 0 To RSIPeriod - 1 Begin
UpAmt = GC[RSIcount] - GC[RSIcount+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
End
Else
If CurrentBar > 1 AND RSIPeriod > 0 Then Begin
UpAmt = GC[0] - GC[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if RSIV > 50 Then
plot1(RSIv-50,"1",red);
Else
plot1(RSIv-50,"1",blue);
2.
Inputs: Length(10);
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);
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;
if Dplus-Dminus > 0 Then
plot1(Dplus-Dminus,"1",red);
Else
plot1(Dplus-Dminus,"1",blue);
즐거운 하루되세요
> 마린187 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요!
갭보정한 RSI
Inputs: RSIPeriod(14);
Variables: RSIcount(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),RSIv(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; // 갭보정 종가
If CurrentBar == 1 AND RSIPeriod > 0 Then Begin
UpSum = 0;
DownSum = 0;
For RSIcount = 0 To RSIPeriod - 1 Begin
UpAmt = GC[RSIcount] - GC[RSIcount+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
End
Else
If CurrentBar > 1 AND RSIPeriod > 0 Then Begin
UpAmt = GC[0] - GC[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg[1] * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (DownAvg[1] * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if RSIV > 50 Then
plot1(RSIv,"1",red);
Else
plot1(RSIv,"1",blue);
PlotBaseLine1(50, "기준선1");
갭보정한 RSI식을 막대그래프로 표현한 겁니다.
그런데 그림-1과 같이 됩니다.
제 의도는 그림-2와 같이 지표가 나타났으면 하는데... ㅜ.ㅜ
그림-2와 같이 나타나는 갭보정한 RSI 지표식 부탁드립니다.
그리고 갭보정한 ADX도 그림-2와 같이
DI+가 DI-를 상향 돌파할때 빨간색 막대그래프
DI+가 DI-를 하향 돌파할때 파란색 막대그래프로 지표가 나타나게 지표식 부탁드립니다.
행복한 하루되세요*^^*
다음글