커뮤니티

재질문...오류나네요

프로필 이미지
회원
2015-03-05 10:38:51
218
글번호 83723
답변완료

첨부 이미지

input : P(60); >>>> 의미 ? var : sumV1(0,data1), maV1(0,data1),count1(0,data1),dis1(0,data1); var : sumV2(0,data2), maV2(0,data2),count2(0,data2),dis2(0,data2); Array : D2[100](0,data2); sumV1 = 0; for count1 = 0 to P-1 { sumV1 = sumV1+DayClose(count1); } maV1 = sumV1 / P; dis1 = data1(C)/mav1*100; plot1(dis1,"분봉에서일봉이격"); if data2(date != date[1]) Then{ for count2 = 1 to 99{ D2[count2] = D2[count2-1][1]; } } D2[0] = data2(c); if D2[P-1] > 0 Then{ sumV2 = 0; for count2 = 0 to P-1{ sumV2= sumV2+D2[count2]; } maV2 = sumV2 / P; dis2 = data2(C)/mav2*100; plot2(dis2,"data2분봉에서일봉이격"); } 질문에 위와같이 답변을 달아주셨는데요...data1, data2 데이타가 둘다 일봉일 경우는 맞는데 둘다 분봉이면 data2의 지표가 그려지지 않습니다 아울러 위 내용은 이격도였는데 몇가지 지표 더 그렇게 하고 싶습니다 그리고 data1,data2에 3분 차트이고 지표는 3분보다 큰 분봉의 지표를 그리고 또 큰 분봉뿐 아니라 일봉의 데이타로서 만들어 data1,data2 3분봉에 그리고 싶습니다 그리고 싶은 지표는 1. 이동평균선 : 일봉, 차트표시 분봉보다 큰 분봉 2. 이격도 : 일봉, 차트표시 분봉보다 큰 분봉 3. Energy지표 : 일봉, 차트표시 분봉보다 큰 분봉 4. RSI지표 : 일봉, 차트표시 분봉보다 큰 분봉
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-03-05 13:19:18

안녕하세요 예스스탁입니다. input의 P는 이격도 기간입니다. 첨부된 그림과 같이 모두 그려지는 식입니다. 수식은 차트의 데이터를 이용해 그리게 됩니다. 주종목(data1)의 경우에는 차트의 첫봉+99일치의 데이터가 추가로 제공이 되어 dayclose함수를 이용해 차트에 없는 날짜이지만 그 이전의 일봉값을 불러와 사용할수 있지만 참조데이터(data~)부터는 오직 차트의 데이터만 사용가능합니다. 즉 차트데이터에 지저한 일수만큰 데이터가 없으면 그려지지 않습니다. 차트의 봉의 조회갯수를 최대로 조회하시기 바랍니다. 참조데이터는 각 참조데이터의 봉을 더블클릭하시면 기본차트속성이 나타납니다. 해당 화면에서 조회건수를 크게 잡으시기 바랍니다. 전략실행차트에서 최대 10000봉 까지 조회가능합니다. 추가로 문의하신 내용입니다. 현재 차트에서 타주기를 그리는 내용은 지표의 계산방법에 따라 가능하지 않은 지표도 있고 봉갯수에 영향을 받는 계산내용은 실제 보시는 차트와 값차이가 있을수 있습니다. 이용에 참고하시기 바랍니다. 1 data1 분봉에서 일봉이평 input : P(20); var : sumV1(0), maV1(0),count1(0); sumV1 = 0; for count1 = 0 to P-1 { sumV1 = sumV1+DayClose(count1); } maV1 = sumV1 / P; plot1(maV1) 2 data1 분봉에서 타분봉 이평 input : Atime(10),P(20); var : cnt(0),count(0),sum1(0),mav1(0); Array : CC[130](0); var1 = TimeToMinutes(stime)%Atime; if dayindex() == 0 or (var1 < var1[1] and stime > stime[1]) Then{ for cnt = 1 to 99{ CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; if CC[P] > 0 then{ sum1 = 0; for count = 0 to P-1{ sum1 = sum1+CC[count]; } mav1 = sum1/P; plot1(mav1); } 3 data2 분봉에서 일봉이평 input : P(20); var : sumV2(0,data2), maV2(0,data2),count2(0,data2); Array : D2[100](0,data2); if data2(date != date[1]) Then{ for count2 = 1 to 99{ D2[count2] = D2[count2-1][1]; } } D2[0] = data2(c); if D2[P-1] > 0 Then{ sumV2 = 0; for count2 = 0 to P-1{ sumV2= sumV2+D2[count2]; } maV2 = sumV2 / P; plot2(maV2); } 4. data2 분봉에서 타분봉이평 input : Atime(10),P(20); var : sumV2(0,data2), maV2(0,data2),count2(0,data2),TF(0); Array : D2[100](0,data2); TF = TimeToMinutes(stime)%Atime; if data1(dayindex() == 0 or (TF < TF[1] and stime > stime[1])) Then{ for count2 = 1 to 99{ D2[count2] = D2[count2-1][1]; } } D2[0] = data2(c); if D2[P-1] > 0 Then{ sumV2 = 0; for count2 = 0 to P-1{ sumV2= sumV2+D2[count2]; } maV2 = sumV2 / P; plot2(maV2); } 5 이격도(data1,data2 일봉이격은 이전답변내용이 있으므로 해당식 참고하시기 바랍니다) 6. data1 타분봉 이격도 input : Atime(10),P(20); var : cnt(0),count(0),sum1(0),mav1(0),dis1(0); Array : CC[130](0); var1 = TimeToMinutes(stime)%Atime; if dayindex() == 0 or (var1 < var1[1] and stime > stime[1]) Then{ for cnt = 1 to 99{ CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; if CC[P] > 0 then{ sum1 = 0; for count = 0 to P-1{ sum1 = sum1+CC[count]; } mav1 = sum1/P; dis1 = c/mav1*100; plot1(dis1); } 7. data2 타분봉 이격도 input : Atime(10),P(20); var : sumV2(0,data2), maV2(0,data2),count2(0,data2),TF(0,data2),dis2(0,data2); Array : D2[100](0,data2); TF = TimeToMinutes(stime)%Atime; if data1(dayindex() == 0 or (TF < TF[1] and stime > stime[1])) Then{ for count2 = 1 to 99{ D2[count2] = D2[count2-1][1]; } } D2[0] = data2(c); if D2[P-1] > 0 Then{ sumV2 = 0; for count2 = 0 to P-1{ sumV2= sumV2+D2[count2]; } maV2 = sumV2 / P; dis2 = data2(c)/mav2*100; plot2(dis2); } 8. data1 일봉 Energy input : N(20); var : cnt(0),sum1(0),sum2(0),sum3(0),sum4(0); sum1 = 0; sum2 = 0; sum3 = 0; sum4 = 0; for cnt = 0 to N-1{ sum1 = sum1+(dayhigh(cnt)-dayopen(cnt)); sum2 = sum2+(DayOpen(cnt)-daylow(cnt)); sum3 = sum3+(dayhigh(cnt)-DayClose(cnt)); sum4 = sum4+(DayClose(cnt)-DayLow(cnt)); } plot1(sum1/sum2*100, "Energy1"); plot2(sum3/sum4*100, "Energy1"); 9 data1 타분봉 Energy input : Atime(10),N(20); var : cnt(0),TF(0); var : sum1(0),sum2(0),sum3(0),sum4(0); Array : CC[100](0),HH[100](0),LL[100](0),OO[100](0); TF = TimeToMinutes(stime)%Atime; if dayindex() == 0 or (TF < TF[1] and stime > stime[1]) Then{ OO[0] = O; HH[0] = H; LL[0] = L; for cnt = 1 to 129{ OO[cnt] = OO[cnt-1][1]; HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; if CC[N-1] > 0 then{ sum1 = 0; sum2 = 0; sum3 = 0; sum4 = 0; for cnt = 0 to N-1{ sum1 = sum1+(HH[cnt]-OO[cnt]); sum2 = sum2+(OO[cnt]-LL[cnt]); sum3 = sum3+(HH[cnt]-CC[cnt]); sum4 = sum4+(CC[cnt]-LL[cnt]); } plot1(sum1/sum2*100, "Energy1"); plot2(sum3/sum4*100, "Energy1"); } 10 data2 일봉 Energy input : N(20); var : cnt(0,data2); var : sum1(0,data2),sum2(0,data2),sum3(0,data2),sum4(0,data2); Array : CC[100](0,data2),HH[100](0,data2),LL[100](0,data2),OO[100](0,data2); if data2(date != date[1]) Then{ OO[0] = data2(O); HH[0] = data2(H); LL[0] = data2(L); for cnt = 1 to 99{ OO[cnt] = OO[cnt-1][1]; HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; } } CC[0] = data2(C); if data2(H) > HH[0] Then HH[0] = data2(H); if data2(L) < LL[0] Then LL[0] = data2(L); if CC[N-1] > 0 then{ sum1 = 0; sum2 = 0; sum3 = 0; sum4 = 0; for cnt = 0 to N-1{ sum1 = sum1+(HH[cnt]-OO[cnt]); sum2 = sum2+(OO[cnt]-LL[cnt]); sum3 = sum3+(HH[cnt]-CC[cnt]); sum4 = sum4+(CC[cnt]-LL[cnt]); } plot1(sum1/sum2*100, "Energy1"); plot2(sum3/sum4*100, "Energy1"); } 11 data2 타분봉 Energy input : Atime(10),N(20); var : cnt(0,data2),TF(0,data2); var : sum1(0,data2),sum2(0,data2),sum3(0,data2),sum4(0,data2); Array : CC[100](0,data2),HH[100](0,data2),LL[100](0,data2),OO[100](0,data2); TF = data2(TimeToMinutes(stime)%Atime); if data2(dayindex() == 0 or (TF < TF[1] and stime > stime[1])) Then{ OO[0] = data2(O); HH[0] = data2(H); LL[0] = data2(L); for cnt = 1 to 129{ OO[cnt] = OO[cnt-1][1]; HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; } } CC[0] = data2(C); if data2(H) > HH[0] Then HH[0] = data2(H); if data2(L) < LL[0] Then LL[0] = data2(L); if CC[N-1] > 0 then{ sum1 = 0; sum2 = 0; sum3 = 0; sum4 = 0; for cnt = 0 to N-1{ sum1 = sum1+(HH[cnt]-OO[cnt]); sum2 = sum2+(OO[cnt]-LL[cnt]); sum3 = sum3+(HH[cnt]-CC[cnt]); sum4 = sum4+(CC[cnt]-LL[cnt]); } plot1(sum1/sum2*100, "Energy1"); plot2(sum3/sum4*100, "Energy1"); } 12 data1 일봉 RSI Inputs: Length(14); 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 date != date[1] Then{ didx = didx+1; UpAvg1 = UpAvg[1]; DownAvg1 = DownAvg[1]; } If Didx == Length 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 > Length 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"); 13 data1 타분봉 RSI Input : Atime(10), Length(14); var : SigSum(0),count2(0),RSIsig(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0); var : Dindex(0), PreUpAvg(0), preDownAvg(0),cnt1(0),TF(0),RSIV(0); Array : CC[100](0); TF = TimeToMinutes(stime)%Atime; if dayindex() == 0 or (TF < TF[1] and stime > stime[1]) Then{ for cnt1 = 1 to 99{ CC[cnt1] = CC[cnt1-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; Dindex = dindex + 1; } CC[0] = C; If Dindex == Length Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = C[Counter] - C[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 If Dindex > Length Then { UpAmt = CC[0]-Cc[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } if Dindex <=1 Then { UpAvg = 1; DownAvg = 1; } Else { UpAvg = (PreUpAvg * (Length - 1) + UpAmt) / Length; DownAvg = (preDownAvg * (Length - 1) + DownAmt) / Length; } } If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; plot1(RSIv,"RSI"); PlotBaseLine1(30, "기준선 30"); PlotBaseLine2(70, "기준선 70"); 14 data2 일봉 RSI Input : Atime(10), Length(14); var : SigSum(0,data2),count2(0,data2),RSIsig(0,data2); Var : Counter(0,data2), DownAmt(0,data2), UpAmt(0,data2); var : UpSum(0,data2), DownSum(0,data2), UpAvg(0,data2), DownAvg(0,data2); var : Dindex(0,data2), PreUpAvg(0,data2), preDownAvg(0,data2),cnt1(0,data2),RSIV(0,data2); Array : CC[100](0,data2); if data2(date != date[1]) Then{ for cnt1 = 1 to 99{ CC[cnt1] = CC[cnt1-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; Dindex = dindex + 1; } CC[0] = data2(C); If Dindex == Length+1 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = CC[Counter] - CC[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 If Dindex > Length+1 Then { UpAmt = CC[0]-CC[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } if Dindex <=1 Then { UpAvg = 1; DownAvg = 1; } Else { UpAvg = (PreUpAvg * (Length - 1) + UpAmt) / Length; DownAvg = (preDownAvg * (Length - 1) + DownAmt) / Length; } } If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; plot1(RSIv,"RSI"); PlotBaseLine1(30, "기준선 30"); PlotBaseLine2(70, "기준선 70"); 15 data2 타분봉 RSI Input : Atime(10), Length(14); var : SigSum(0,data2),count2(0,data2),RSIsig(0,data2); Var : Counter(0,data2), DownAmt(0,data2), UpAmt(0,data2); var : UpSum(0,data2), DownSum(0,data2), UpAvg(0,data2), DownAvg(0,data2),RSIV(0,data2); var : Dindex(0,data2), PreUpAvg(0,data2), preDownAvg(0,data2),cnt1(0,data2),TF(0,data2); Array : CC[100](0,data2); TF = data2(TimeToMinutes(stime)%Atime); if data2(dayindex() == 0 or (TF < TF[1] and stime > stime[1])) Then{ for cnt1 = 1 to 99{ CC[cnt1] = CC[cnt1-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; Dindex = dindex + 1; } CC[0] = data2(C); If Dindex == Length+1 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = CC[Counter] - CC[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 If Dindex > Length+1 Then { UpAmt = CC[0]-CC[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } if Dindex <=1 Then { UpAvg = 1; DownAvg = 1; } Else { UpAvg = (PreUpAvg * (Length - 1) + UpAmt) / Length; DownAvg = (preDownAvg * (Length - 1) + DownAmt) / Length; } } If UpAvg + DownAvg <> 0 Then RSIv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIv = 0; plot1(RSIv,"RSI"); PlotBaseLine1(30, "기준선 30"); PlotBaseLine2(70, "기준선 70"); 즐거운 하루되세요 > HI_ll****** 님이 쓴 글입니다. > 제목 : 재질문...오류나네요 > input : P(60); >>>> 의미 ? var : sumV1(0,data1), maV1(0,data1),count1(0,data1),dis1(0,data1); var : sumV2(0,data2), maV2(0,data2),count2(0,data2),dis2(0,data2); Array : D2[100](0,data2); sumV1 = 0; for count1 = 0 to P-1 { sumV1 = sumV1+DayClose(count1); } maV1 = sumV1 / P; dis1 = data1(C)/mav1*100; plot1(dis1,"분봉에서일봉이격"); if data2(date != date[1]) Then{ for count2 = 1 to 99{ D2[count2] = D2[count2-1][1]; } } D2[0] = data2(c); if D2[P-1] > 0 Then{ sumV2 = 0; for count2 = 0 to P-1{ sumV2= sumV2+D2[count2]; } maV2 = sumV2 / P; dis2 = data2(C)/mav2*100; plot2(dis2,"data2분봉에서일봉이격"); } 질문에 위와같이 답변을 달아주셨는데요...data1, data2 데이타가 둘다 일봉일 경우는 맞는데 둘다 분봉이면 data2의 지표가 그려지지 않습니다 아울러 위 내용은 이격도였는데 몇가지 지표 더 그렇게 하고 싶습니다 그리고 data1,data2에 3분 차트이고 지표는 3분보다 큰 분봉의 지표를 그리고 또 큰 분봉뿐 아니라 일봉의 데이타로서 만들어 data1,data2 3분봉에 그리고 싶습니다 그리고 싶은 지표는 1. 이동평균선 : 일봉, 차트표시 분봉보다 큰 분봉 2. 이격도 : 일봉, 차트표시 분봉보다 큰 분봉 3. Energy지표 : 일봉, 차트표시 분봉보다 큰 분봉 4. RSI지표 : 일봉, 차트표시 분봉보다 큰 분봉