커뮤니티
행복; 지표식 작성 바랍니다
2017-05-06 03:45:10
167
글번호 109345
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
지표식 관련입니다
기존에 있었던 Q&A 26266 번을 조회해보았습니다
일봉의 MACD를 분봉 차트에서 그리는 지표식이 아래와 같이 있었습니다
================< 아래 시작 >======================================
Input : Period1(12), Period2(26), Period3(9);
Var : Ep1(0), EP2(0), EP3(0), JISU1(0), JISU2(0), PreJISU1(0), PreJISU2(0);
Var : macdVal(0), preMacdVal(0), macdSig(0);
if date != date[1] then {
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreMacdVal = macdSig[1];
}
Ep1 = 2/(Period1+1);
EP2 = 2/(Period2+1);
EP3 = 2/(Period3+1);
JISU1 = C * Ep1 + PreJISU1 * (1-Ep1); //단기지수이동평균
JISU2 = C * Ep2 + PreJISU2 * (1-Ep2); //장기지수이동평균
macdVal = JISU1 - JISU2; //macd
macdSig = macdVal * Ep3 + PreMacdVal * (1-Ep3); //macd signal
var1 = macdVal - macdSig; // MACD_OSC
plot1(macdVal, "macd");
plot2(macdSig, "signal");
If Var1 >= 0 Then
Plot3(Var1, "osc양",RED);
Else
Plot4(Var1, "osc음", BLUE);
plot5(0, "기준선", BLACK);
================< 아래 끝 >======================================
< 질문 1 >
- 일봉의 RSI를 분봉 차트에서 그리는 지표식 작성 바랍니다
- 일봉의 RSI
-------------------------------------------
Input : Period(9);
var : Relative(0);
Relative = RSI(Period);
Plot1(Relative, "RSI");
PlotBaseLine1(30, "기준선 30");
PlotBaseLine2(70, "기준선 70");
-------------------------------------------
< 질문 2 >
- 일봉의 ADX를 분봉 차트에서 그리는 지표식 작성 바랍니다
- 일봉의 ADX
-------------------------------------------
input : Period(14);
var : ADXv(0),DP(0),DM(0);
ADXv = ADX(Period);
DP = DiPlus(Period);
DM = DiMinus(Period);
plot1(ADXv,"ADX");
plot2(DP,"+DI");
plot3(DM,"-DI");
-------------------------------------------
수고하십시요^^
답변 2
예스스탁 예스스탁 답변
2017-05-10 14:14:31
안녕하세요
예스스탁입니다.
문의하신 지표들 분봉에서 일봉의 정확한 값을 계산할수 없습니다.
최대한 근사값으로 계산되게 작성해 드립니다.
1.
Inputs: Length(9);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : RSIv(0),didx(0), UpAvg1(0), DownAvg1(0);
if bdate != bdate[1] Then{
didx = didx+1;
UpAvg1 = UpAvg[1];
DownAvg1 = DownAvg[1];
}
If didx <= 1 AND Length > 0 Then Begin
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1 Begin
UpAmt = DayClose(Counter) - DayClose(Counter+1);
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / Length;
DownAvg = DownSum / Length;
End
Else If didx > 1 AND Length > 0 Then Begin
UpAmt = DayClose(0) - DayClose(1);
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg1 * (Length - 1) + UpAmt) / Length;
DownAvg = (DownAvg1 * (Length - 1) + DownAmt) / Length;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
plot1(RSIV);
PlotBaseLine1(30, "기준선 30");
PlotBaseLine2(70, "기준선 70");
2
input : Length(14);
var : TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),DMinus(0),MinusDM14(0),TRange1(0),preMinusDM14(0);
Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),Dplus(0),preADX(0);
Var : CummDMI(0), Return(0);
Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0),ADXv[61](0);
if bdate != bdate[1] Then{
Dcnt = Dcnt+1;
HH[0] = H;
LL[0] = L;
CC[0] = C;
preTRange = TRange[1];
prePlusDM14 = PlusDM14[1];
preMinusDM14 = MinusDM14[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];
ADXv[cnt] = ADXv[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;
If Dplus + Dminus == 0 Then
DMIv[0] = 0;
Else
DMIv[0] = 100 * AbsValue(Dplus - Dminus) / (Dplus + Dminus);
}
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 * AbsValue(Dplus - Dminus) / (Dplus + Dminus);
}
If DMIV[Length] == 0 Then{
CummDMI = 0;
for Counter = 0 To Length-1 Begin
if DMiV[counter] > 0 Then
CummDMI = CummDMI + DMIV[Counter];
End;
ADXv[0] = CummDMI / CurrentBar;
}
Else
ADXv[0] = (ADXv[1] * (Length - 1) + DMIv[0]) / Length;
plot1(ADXv[0]);
plot2(DPlus);
plot3(DMinus);
즐거운 하루되세요
> 행복한가방 님이 쓴 글입니다.
> 제목 : 행복; 지표식 작성 바랍니다
> 한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
지표식 관련입니다
기존에 있었던 Q&A 26266 번을 조회해보았습니다
일봉의 MACD를 분봉 차트에서 그리는 지표식이 아래와 같이 있었습니다
================< 아래 시작 >======================================
Input : Period1(12), Period2(26), Period3(9);
Var : Ep1(0), EP2(0), EP3(0), JISU1(0), JISU2(0), PreJISU1(0), PreJISU2(0);
Var : macdVal(0), preMacdVal(0), macdSig(0);
if date != date[1] then {
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreMacdVal = macdSig[1];
}
Ep1 = 2/(Period1+1);
EP2 = 2/(Period2+1);
EP3 = 2/(Period3+1);
JISU1 = C * Ep1 + PreJISU1 * (1-Ep1); //단기지수이동평균
JISU2 = C * Ep2 + PreJISU2 * (1-Ep2); //장기지수이동평균
macdVal = JISU1 - JISU2; //macd
macdSig = macdVal * Ep3 + PreMacdVal * (1-Ep3); //macd signal
var1 = macdVal - macdSig; // MACD_OSC
plot1(macdVal, "macd");
plot2(macdSig, "signal");
If Var1 >= 0 Then
Plot3(Var1, "osc양",RED);
Else
Plot4(Var1, "osc음", BLUE);
plot5(0, "기준선", BLACK);
================< 아래 끝 >======================================
< 질문 1 >
- 일봉의 RSI를 분봉 차트에서 그리는 지표식 작성 바랍니다
- 일봉의 RSI
-------------------------------------------
Input : Period(9);
var : Relative(0);
Relative = RSI(Period);
Plot1(Relative, "RSI");
PlotBaseLine1(30, "기준선 30");
PlotBaseLine2(70, "기준선 70");
-------------------------------------------
< 질문 2 >
- 일봉의 ADX를 분봉 차트에서 그리는 지표식 작성 바랍니다
- 일봉의 ADX
-------------------------------------------
input : Period(14);
var : ADXv(0),DP(0),DM(0);
ADXv = ADX(Period);
DP = DiPlus(Period);
DM = DiMinus(Period);
plot1(ADXv,"ADX");
plot2(DP,"+DI");
plot3(DM,"-DI");
-------------------------------------------
수고하십시요^^
행복한가방
2017-05-12 01:53:40
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
지표식 관련입니다
보내주신 답변 잘 받았습니다
일봉RSI는 1분봉의 주가가 변할 때마다 수치가 변하는 것을 확인할 수 있습니다
근데,
일봉ADX, 일봉DPlus, 일봉DMinus 의 경우
5월 11일 주가 변동성이 매우 큰 성창오토텍을 1분봉 차트에 띄워놓고 적용하여 보았습니다
13시25분 6,150원에서 14시35분 5,630원으로 8.4% 하락하는데
일봉ADX, 일봉DPlus, 일봉DMinus 의 수치가 변하지 않습니다
혹시 봉의 개수에서 착오가 있는 것은 아닌가 하여
수식을 요리조리 살펴 보았는데
원인을 찾을 수가 없었습니다
확인 바랍니다
수고하십시요^^
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 행복; 지표식 작성 바랍니다
>
안녕하세요
예스스탁입니다.
문의하신 지표들 분봉에서 일봉의 정확한 값을 계산할수 없습니다.
최대한 근사값으로 계산되게 작성해 드립니다.
1.
Inputs: Length(9);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : RSIv(0),didx(0), UpAvg1(0), DownAvg1(0);
if bdate != bdate[1] Then{
didx = didx+1;
UpAvg1 = UpAvg[1];
DownAvg1 = DownAvg[1];
}
If didx <= 1 AND Length > 0 Then Begin
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1 Begin
UpAmt = DayClose(Counter) - DayClose(Counter+1);
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / Length;
DownAvg = DownSum / Length;
End
Else If didx > 1 AND Length > 0 Then Begin
UpAmt = DayClose(0) - DayClose(1);
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg1 * (Length - 1) + UpAmt) / Length;
DownAvg = (DownAvg1 * (Length - 1) + DownAmt) / Length;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
plot1(RSIV);
PlotBaseLine1(30, "기준선 30");
PlotBaseLine2(70, "기준선 70");
2
input : Length(14);
var : TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),DMinus(0),MinusDM14(0),TRange1(0),preMinusDM14(0);
Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),Dplus(0),preADX(0);
Var : CummDMI(0), Return(0);
Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0),ADXv[61](0);
if bdate != bdate[1] Then{
Dcnt = Dcnt+1;
HH[0] = H;
LL[0] = L;
CC[0] = C;
preTRange = TRange[1];
prePlusDM14 = PlusDM14[1];
preMinusDM14 = MinusDM14[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];
ADXv[cnt] = ADXv[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;
If Dplus + Dminus == 0 Then
DMIv[0] = 0;
Else
DMIv[0] = 100 * AbsValue(Dplus - Dminus) / (Dplus + Dminus);
}
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 * AbsValue(Dplus - Dminus) / (Dplus + Dminus);
}
If DMIV[Length] == 0 Then{
CummDMI = 0;
for Counter = 0 To Length-1 Begin
if DMiV[counter] > 0 Then
CummDMI = CummDMI + DMIV[Counter];
End;
ADXv[0] = CummDMI / CurrentBar;
}
Else
ADXv[0] = (ADXv[1] * (Length - 1) + DMIv[0]) / Length;
plot1(ADXv[0]);
plot2(DPlus);
plot3(DMinus);
즐거운 하루되세요
> 행복한가방 님이 쓴 글입니다.
> 제목 : 행복; 지표식 작성 바랍니다
> 한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
지표식 관련입니다
기존에 있었던 Q&A 26266 번을 조회해보았습니다
일봉의 MACD를 분봉 차트에서 그리는 지표식이 아래와 같이 있었습니다
================< 아래 시작 >======================================
Input : Period1(12), Period2(26), Period3(9);
Var : Ep1(0), EP2(0), EP3(0), JISU1(0), JISU2(0), PreJISU1(0), PreJISU2(0);
Var : macdVal(0), preMacdVal(0), macdSig(0);
if date != date[1] then {
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreMacdVal = macdSig[1];
}
Ep1 = 2/(Period1+1);
EP2 = 2/(Period2+1);
EP3 = 2/(Period3+1);
JISU1 = C * Ep1 + PreJISU1 * (1-Ep1); //단기지수이동평균
JISU2 = C * Ep2 + PreJISU2 * (1-Ep2); //장기지수이동평균
macdVal = JISU1 - JISU2; //macd
macdSig = macdVal * Ep3 + PreMacdVal * (1-Ep3); //macd signal
var1 = macdVal - macdSig; // MACD_OSC
plot1(macdVal, "macd");
plot2(macdSig, "signal");
If Var1 >= 0 Then
Plot3(Var1, "osc양",RED);
Else
Plot4(Var1, "osc음", BLUE);
plot5(0, "기준선", BLACK);
================< 아래 끝 >======================================
< 질문 1 >
- 일봉의 RSI를 분봉 차트에서 그리는 지표식 작성 바랍니다
- 일봉의 RSI
-------------------------------------------
Input : Period(9);
var : Relative(0);
Relative = RSI(Period);
Plot1(Relative, "RSI");
PlotBaseLine1(30, "기준선 30");
PlotBaseLine2(70, "기준선 70");
-------------------------------------------
< 질문 2 >
- 일봉의 ADX를 분봉 차트에서 그리는 지표식 작성 바랍니다
- 일봉의 ADX
-------------------------------------------
input : Period(14);
var : ADXv(0),DP(0),DM(0);
ADXv = ADX(Period);
DP = DiPlus(Period);
DM = DiMinus(Period);
plot1(ADXv,"ADX");
plot2(DP,"+DI");
plot3(DM,"-DI");
-------------------------------------------
수고하십시요^^
다음글