커뮤니티

행복; 지표식 작성 바랍니다

프로필 이미지
행복한가방
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"); ------------------------------------------- 수고하십시요^^