커뮤니티

지표 수정 부탁드립니다.

프로필 이미지
maker
2020-01-28 14:34:06
214
글번호 135434
답변완료
틱봉에서 N분봉으로 변환 후 N분간 고/저점을 나타내는 수식을 이전에 부탁드려 받은 적이 있습니다. 현재 봉이 고가나 저가를 갱신하면 해당 지표의 고/저점도 같이 갱신되므로 사용하지 못하고 있습니다. 1봉 전의 N분간 고/저점을 나타내고 싶은데 수식을 봐도 어디에 [1]을 넣어야 할지 몰라 이렇게 문의 드립니다. 수정 부탁드립니다. 감사합니다. 아래는 이전에 받았던 수식 입니다. input : n(3),CC(10),CF(3),Per1(25),Per2(50),Per3(75); input : 굵기1(1),굵기2(1),굵기3(1),굵기4(1),굵기5(1),굵기6(1); input : 색상1(RED),색상2(MAGENTA),색상3(GREEN),색상4(CYAN),색상5(BLUE),색상6(BLACK); var : TF(0),S1(0),D1(0),TM(0),cnt(0),T1(0),HH(0),LL(0),ii(0),TT(0); var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0); var : O1(0),H1(0),L1(0),C1(0),sum(0),mav(0),VD(0),VT(0),VM(0),VP(0); Array : V1[100](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; TT = stime; ii = 0; } Else ii = ii+1; if D1 > 0 then { #영업일변경 기준으로 경과된 분 if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; //n분 미만 if TM < n then { //당일최고와 최저가를 기준으로 선 출력 hh = DayHigh; ll = daylow; TL_Delete(TL1); TL_Delete(TL2); TL_Delete(TL3); TL_Delete(TL4); TL_Delete(TL5); TL1 = TL_New(D1,TT,HH,Sdate,stime,HH); TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*(Per1/100)); TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*(Per2/100)); TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*(Per3/100)); TL5 = TL_New(D1,TT,LL,Sdate,stime,LL); } else //분이상 경과 { //최근 n분 이내에서 최고가와 최저가 계산해서 선 출력 HH = H; LL = L; for cnt = 0 to ii { if TM[cnt] > TM-N then { if H[cnt] > HH Then HH = H[cnt]; if L[cnt] < LL Then LL = L[cnt]; TT = stime[cnt]; } if TM[cnt] < TM-N Then cnt = ii+1; } TL_Delete(TL1); TL_Delete(TL2); TL_Delete(TL3); TL_Delete(TL4); TL_Delete(TL5); TL1 = TL_New(D1,TT,HH,Sdate,stime,HH); TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*(Per1/100)); TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*(Per2/100)); TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*(Per3/100)); TL5 = TL_New(D1,TT,LL,Sdate,stime,LL); } TL_SetColor(TL1,RED); TL_SetColor(TL2,MAGENTA); TL_SetColor(TL3,GREEN); TL_SetColor(TL4,CYAN); TL_SetColor(TL5,BLUE); TL_SetSize(TL1, 굵기1); TL_SetSize(TL2, 굵기2); TL_SetSize(TL3, 굵기3); TL_SetSize(TL4, 굵기4); TL_SetSize(TL5, 굵기5); #1분봉 기준(시,고,저,종,거래량 계산) if bdate != bdate[1] or (Bdate == bdate[1] and TM > TM[1]) Then { O1 = O; H1 = H; L1 = L; V1[0] = 0 ; for cnt = 1 to 99 { V1[cnt] = v1[cnt-1][1]; } } if H > H1 Then H1 = H; if L < L1 Then L1 = L; C1 = C; V1[0] = V1[0]+V; TL_Delete(TL6); if V1[cc] > 0 then { sum = 0; for cnt = 1 to CC { sum = sum + V1[cnt]; } mav = sum/CC; //최근 1분거래량이 이전 cc봉 평균대비 CF배 이상이면 if V1[0] >= mav*CF Then { //날짜,시간,TM값, 평균값 저장 VD = sdate; VT = stime; VM = TM; VP = (O1+H1+L1+C1)/4; } //오늘 거래량조건이 발생한적 있고 현재부터 20분 이내이면 출력 if VD == sdate and VM > TM-n Then { TL6 = TL_new(D1,TT,VP,Sdate,stime,VP); TL_SetColor(TL6,BLACK); TL_SetSize(TL6,굵기6); } } }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-01-28 17:09:46

안녕하세요 예스스탁입니다. 1 수식에서 hh와 LL은 현재봉 기준최근 n분간 최고가, 최저가입니다. 해당 변수는 hh[1],LL[1]로 전봉값 가져오시면 됩니다. O1,H1,L1,C1은 오늘 1분봉 단위 시고저종가입니다. 배열변수로 처리해서 n봉전 값을 가져오게 수정해 드립니다. O1[1],H1[1],L1[1],C1[1]과 같이 이전봉 값을 가져오게 수정해 드립니다. 2 input : n(3),CC(10),CF(3),Per1(25),Per2(50),Per3(75); input : 굵기1(1),굵기2(1),굵기3(1),굵기4(1),굵기5(1),굵기6(1); input : 색상1(RED),색상2(MAGENTA),색상3(GREEN),색상4(CYAN),색상5(BLUE),색상6(BLACK); var : TF(0),S1(0),D1(0),TM(0),cnt(0),T1(0),HH(0),LL(0),ii(0),TT(0); var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0); var : sum(0),mav(0),VD(0),VT(0),VM(0),VP(0); Array : O1[100](0),H1[100](0),L1[100](0),C1[100](0),V1[100](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; TT = stime; ii = 0; } Else ii = ii+1; if D1 > 0 then { #영업일변경 기준으로 경과된 분 if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; //n분 미만 if TM < n then { //당일최고와 최저가를 기준으로 선 출력 hh = DayHigh; ll = daylow; TL_Delete(TL1); TL_Delete(TL2); TL_Delete(TL3); TL_Delete(TL4); TL_Delete(TL5); TL1 = TL_New(D1,TT,HH,Sdate,stime,HH); TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*(Per1/100)); TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*(Per2/100)); TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*(Per3/100)); TL5 = TL_New(D1,TT,LL,Sdate,stime,LL); } else //분이상 경과 { //최근 n분 이내에서 최고가와 최저가 계산해서 선 출력 HH = H; LL = L; for cnt = 0 to ii { if TM[cnt] > TM-N then { if H[cnt] > HH Then HH = H[cnt]; if L[cnt] < LL Then LL = L[cnt]; TT = stime[cnt]; } if TM[cnt] < TM-N Then cnt = ii+1; } TL_Delete(TL1); TL_Delete(TL2); TL_Delete(TL3); TL_Delete(TL4); TL_Delete(TL5); TL1 = TL_New(D1,TT,HH[1],Sdate,stime,HH[1]); TL2 = TL_New(D1,TT,HH[1]-(HH[1]-LL[1])*0.25,Sdate,stime,HH[1]-(HH[1]-LL[1])*(Per1/100)); TL3 = TL_New(D1,TT,HH[1]-(HH-LL[1])*0.50,Sdate,stime,HH[1]-(HH[1]-LL[1])*(Per2/100)); TL4 = TL_New(D1,TT,HH[1]-(HH-LL[1])*0.75,Sdate,stime,HH[1]-(HH[1]-LL[1])*(Per3/100)); TL5 = TL_New(D1,TT,LL[1],Sdate,stime,LL[1]); } TL_SetColor(TL1,RED); TL_SetColor(TL2,MAGENTA); TL_SetColor(TL3,GREEN); TL_SetColor(TL4,CYAN); TL_SetColor(TL5,BLUE); TL_SetSize(TL1, 굵기1); TL_SetSize(TL2, 굵기2); TL_SetSize(TL3, 굵기3); TL_SetSize(TL4, 굵기4); TL_SetSize(TL5, 굵기5); #1분봉 기준(시,고,저,종,거래량 계산) if bdate != bdate[1] or (Bdate == bdate[1] and TM > TM[1]) Then { O1[0] = O; H1[0] = H; L1[0] = L; V1[0] = 0 ; for cnt = 1 to 99 { O1[cnt] = O1[cnt-1][1]; H1[cnt] = H1[cnt-1][1]; L1[cnt] = L1[cnt-1][1]; C1[cnt] = C1[cnt-1][1]; V1[cnt] = v1[cnt-1][1]; } } if H > H1[0] Then H1[0] = H; if L < L1[0] Then L1[0] = L; C1[0] = C; V1[0] = V1[0]+V; TL_Delete(TL6); if V1[cc] > 0 then { sum = 0; for cnt = 1 to CC { sum = sum + V1[cnt]; } mav = sum/CC; //최근 1분거래량이 이전 cc봉 평균대비 CF배 이상이면 if V1[0] >= mav*CF Then { //날짜,시간,TM값, 평균값 저장 VD = sdate; VT = stime; VM = TM; VP = (O1[0]+H1[0]+L1[0]+C1[0])/4; } //오늘 거래량조건이 발생한적 있고 현재부터 20분 이내이면 출력 if VD == sdate and VM > TM-n Then { TL6 = TL_new(D1,TT,VP,Sdate,stime,VP); TL_SetColor(TL6,BLACK); TL_SetSize(TL6,굵기6); } } } 즐거운 하루되세요 > maker 님이 쓴 글입니다. > 제목 : 지표 수정 부탁드립니다. > 틱봉에서 N분봉으로 변환 후 N분간 고/저점을 나타내는 수식을 이전에 부탁드려 받은 적이 있습니다. 현재 봉이 고가나 저가를 갱신하면 해당 지표의 고/저점도 같이 갱신되므로 사용하지 못하고 있습니다. 1봉 전의 N분간 고/저점을 나타내고 싶은데 수식을 봐도 어디에 [1]을 넣어야 할지 몰라 이렇게 문의 드립니다. 수정 부탁드립니다. 감사합니다. 아래는 이전에 받았던 수식 입니다. input : n(3),CC(10),CF(3),Per1(25),Per2(50),Per3(75); input : 굵기1(1),굵기2(1),굵기3(1),굵기4(1),굵기5(1),굵기6(1); input : 색상1(RED),색상2(MAGENTA),색상3(GREEN),색상4(CYAN),색상5(BLUE),색상6(BLACK); var : TF(0),S1(0),D1(0),TM(0),cnt(0),T1(0),HH(0),LL(0),ii(0),TT(0); var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0); var : O1(0),H1(0),L1(0),C1(0),sum(0),mav(0),VD(0),VT(0),VM(0),VP(0); Array : V1[100](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; TT = stime; ii = 0; } Else ii = ii+1; if D1 > 0 then { #영업일변경 기준으로 경과된 분 if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; //n분 미만 if TM < n then { //당일최고와 최저가를 기준으로 선 출력 hh = DayHigh; ll = daylow; TL_Delete(TL1); TL_Delete(TL2); TL_Delete(TL3); TL_Delete(TL4); TL_Delete(TL5); TL1 = TL_New(D1,TT,HH,Sdate,stime,HH); TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*(Per1/100)); TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*(Per2/100)); TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*(Per3/100)); TL5 = TL_New(D1,TT,LL,Sdate,stime,LL); } else //분이상 경과 { //최근 n분 이내에서 최고가와 최저가 계산해서 선 출력 HH = H; LL = L; for cnt = 0 to ii { if TM[cnt] > TM-N then { if H[cnt] > HH Then HH = H[cnt]; if L[cnt] < LL Then LL = L[cnt]; TT = stime[cnt]; } if TM[cnt] < TM-N Then cnt = ii+1; } TL_Delete(TL1); TL_Delete(TL2); TL_Delete(TL3); TL_Delete(TL4); TL_Delete(TL5); TL1 = TL_New(D1,TT,HH,Sdate,stime,HH); TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*(Per1/100)); TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*(Per2/100)); TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*(Per3/100)); TL5 = TL_New(D1,TT,LL,Sdate,stime,LL); } TL_SetColor(TL1,RED); TL_SetColor(TL2,MAGENTA); TL_SetColor(TL3,GREEN); TL_SetColor(TL4,CYAN); TL_SetColor(TL5,BLUE); TL_SetSize(TL1, 굵기1); TL_SetSize(TL2, 굵기2); TL_SetSize(TL3, 굵기3); TL_SetSize(TL4, 굵기4); TL_SetSize(TL5, 굵기5); #1분봉 기준(시,고,저,종,거래량 계산) if bdate != bdate[1] or (Bdate == bdate[1] and TM > TM[1]) Then { O1 = O; H1 = H; L1 = L; V1[0] = 0 ; for cnt = 1 to 99 { V1[cnt] = v1[cnt-1][1]; } } if H > H1 Then H1 = H; if L < L1 Then L1 = L; C1 = C; V1[0] = V1[0]+V; TL_Delete(TL6); if V1[cc] > 0 then { sum = 0; for cnt = 1 to CC { sum = sum + V1[cnt]; } mav = sum/CC; //최근 1분거래량이 이전 cc봉 평균대비 CF배 이상이면 if V1[0] >= mav*CF Then { //날짜,시간,TM값, 평균값 저장 VD = sdate; VT = stime; VM = TM; VP = (O1+H1+L1+C1)/4; } //오늘 거래량조건이 발생한적 있고 현재부터 20분 이내이면 출력 if VD == sdate and VM > TM-n Then { TL6 = TL_new(D1,TT,VP,Sdate,stime,VP); TL_SetColor(TL6,BLACK); TL_SetSize(TL6,굵기6); } } }