커뮤니티

수식이 작동하지 않습니다.

프로필 이미지
길게가자
2025-09-16 13:03:37.0
70
글번호 194053
답변완료
어제 만들어 주신 수식을 적용해봤는데 아무것도 나타나지 않습니다. 재확인 부탁드립니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 부탁드립니다. > 안녕하세요 예스스탁입니다. 1 지정하신 주기 모두 하나의 식으로 작성해 드리기는 어렵습니다. 타주기분을 외부변수로 지정하게 작성해 드립니다. 동일식 타주기분 변경하면서 여러번 적용하시면 됩니다. 2 수식은 차트의 데이터를 이용해 계산합니다. 현재 차트의 데이터에서 지정한 타주기의 지정한 기간의 이평을 계산할 만큼 데이터가 충분해야 지표가 출력됩니다. 3 input : 타주기분(3),P1(50),P2(300),P3(600); var : S1(0),D1(0),TM(0),TF(0),cnt(0); var : Hsum1(0),Hmav1(0),Lsum1(0),Lmav1(0); var : Hsum2(0),Hmav2(0),Lsum2(0),Lmav2(0); var : Hsum3(0),Hmav3(0),Lsum3(0),Lmav3(0); Array : HH[1000](0),LL[1000](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { for cnt = 999 downto 1 { HH[cnt] = HH[cnt-1]; LL[cnt] = LL[cnt-1]; } } if HH[0] > 0 and H > HH[0] Then HH[0] = H; if LL[0] > 0 and L < LL[0] Then LL[0] = L; if HH[P1-1] > 0 and LL[P1-1] > 0 then { Hsum1 = 0; Lsum1 = 0; for cnt = 0 to P1-1 { Hsum1 = Hsum1+HH[cnt]; Lsum1 = Lsum1+LL[cnt]; } Hmav1 = Hsum1/P1; Lmav1 = Lsum1/P1; plot1(Hmav1,"H이평1"); plot2(Lmav1,"L이평1"); } if HH[P2-1] > 0 and LL[P2-1] > 0 then { Hsum2 = 0; Lsum2 = 0; for cnt = 0 to P2-1 { Hsum2 = Hsum2+HH[cnt]; Lsum2 = Lsum2+LL[cnt]; } Hmav2 = Hsum2/P2; Lmav2 = Lsum2/P2; plot3(Hmav2,"H이평2"); plot4(Lmav2,"L이평2"); } if HH[P3-1] > 0 and LL[P3-1] > 0 then { Hsum3 = 0; Lsum3 = 0; for cnt = 0 to P3-1 { Hsum3 = Hsum3+HH[cnt]; Lsum3 = Lsum3+LL[cnt]; } Hmav3 = Hsum3/P3; Lmav3 = Lsum3/P3; plot5(Hmav3,"H이평3"); plot6(Lmav3,"L이평3"); } } 즐거운 하루되세요 > 길게가자 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다. > 안녕하세요. 늘 많은 도움 주셔서 감사합니다. 1분봉에 3, 5,10,15,30,60분봉의 50,300,600 이평선이 그려지게 하고 싶은데요. 종가를 기준으로 계산된 이평선이 아니라 3,5,10,15분봉의 고가 이평선과 저가 이평선이 그려지게 하고 싶습니다. 타주기별 이평선이 2개(고가기준, 저가기준) 만들어지도록요. 이평선이 타주기 차트와 동일하게 1분봉 차트에 나타나게 하려면 이평갯수만큼 묶어서 최고가와 최저가를 적용하여 계산되어야 할 것 같습니다. 혼자 해보려니 자꾸 실패해서 도움 요청드립니다. 감사합니다!
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-09-16 14:21:07.0

안녕하세요 예스스탁입니다. 변수 초기값 처리가 없었습니다. 수정한 식입니다. input : 타주기분(3),P1(50),P2(300),P3(600); var : S1(0),D1(0),TM(0),TF(0),cnt(0); var : Hsum1(0),Hmav1(0),Lsum1(0),Lmav1(0); var : Hsum2(0),Hmav2(0),Lsum2(0),Lmav2(0); var : Hsum3(0),Hmav3(0),Lsum3(0),Lmav3(0); Array : HH[1000](0),LL[1000](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { for cnt = 999 downto 1 { HH[cnt] = HH[cnt-1]; LL[cnt] = LL[cnt-1]; } HH[0] = H; LL[0] = L; } if HH[0] > 0 and H > HH[0] Then HH[0] = H; if LL[0] > 0 and L < LL[0] Then LL[0] = L; if HH[P1-1] > 0 and LL[P1-1] > 0 then { Hsum1 = 0; Lsum1 = 0; for cnt = 0 to P1-1 { Hsum1 = Hsum1+HH[cnt]; Lsum1 = Lsum1+LL[cnt]; } Hmav1 = Hsum1/P1; Lmav1 = Lsum1/P1; plot1(Hmav1,"H이평1"); plot2(Lmav1,"L이평1"); } if HH[P2-1] > 0 and LL[P2-1] > 0 then { Hsum2 = 0; Lsum2 = 0; for cnt = 0 to P2-1 { Hsum2 = Hsum2+HH[cnt]; Lsum2 = Lsum2+LL[cnt]; } Hmav2 = Hsum2/P2; Lmav2 = Lsum2/P2; plot3(Hmav2,"H이평2"); plot4(Lmav2,"L이평2"); } if HH[P3-1] > 0 and LL[P3-1] > 0 then { Hsum3 = 0; Lsum3 = 0; for cnt = 0 to P3-1 { Hsum3 = Hsum3+HH[cnt]; Lsum3 = Lsum3+LL[cnt]; } Hmav3 = Hsum3/P3; Lmav3 = Lsum3/P3; plot5(Hmav3,"H이평3"); plot6(Lmav3,"L이평3"); } } 즐거운 하루되세요 > 길게가자 님이 쓴 글입니다. > 제목 : 수식이 작동하지 않습니다. > 어제 만들어 주신 수식을 적용해봤는데 아무것도 나타나지 않습니다. 재확인 부탁드립니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 부탁드립니다. > 안녕하세요 예스스탁입니다. 1 지정하신 주기 모두 하나의 식으로 작성해 드리기는 어렵습니다. 타주기분을 외부변수로 지정하게 작성해 드립니다. 동일식 타주기분 변경하면서 여러번 적용하시면 됩니다. 2 수식은 차트의 데이터를 이용해 계산합니다. 현재 차트의 데이터에서 지정한 타주기의 지정한 기간의 이평을 계산할 만큼 데이터가 충분해야 지표가 출력됩니다. 3 input : 타주기분(3),P1(50),P2(300),P3(600); var : S1(0),D1(0),TM(0),TF(0),cnt(0); var : Hsum1(0),Hmav1(0),Lsum1(0),Lmav1(0); var : Hsum2(0),Hmav2(0),Lsum2(0),Lmav2(0); var : Hsum3(0),Hmav3(0),Lsum3(0),Lmav3(0); Array : HH[1000](0),LL[1000](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { for cnt = 999 downto 1 { HH[cnt] = HH[cnt-1]; LL[cnt] = LL[cnt-1]; } } if HH[0] > 0 and H > HH[0] Then HH[0] = H; if LL[0] > 0 and L < LL[0] Then LL[0] = L; if HH[P1-1] > 0 and LL[P1-1] > 0 then { Hsum1 = 0; Lsum1 = 0; for cnt = 0 to P1-1 { Hsum1 = Hsum1+HH[cnt]; Lsum1 = Lsum1+LL[cnt]; } Hmav1 = Hsum1/P1; Lmav1 = Lsum1/P1; plot1(Hmav1,"H이평1"); plot2(Lmav1,"L이평1"); } if HH[P2-1] > 0 and LL[P2-1] > 0 then { Hsum2 = 0; Lsum2 = 0; for cnt = 0 to P2-1 { Hsum2 = Hsum2+HH[cnt]; Lsum2 = Lsum2+LL[cnt]; } Hmav2 = Hsum2/P2; Lmav2 = Lsum2/P2; plot3(Hmav2,"H이평2"); plot4(Lmav2,"L이평2"); } if HH[P3-1] > 0 and LL[P3-1] > 0 then { Hsum3 = 0; Lsum3 = 0; for cnt = 0 to P3-1 { Hsum3 = Hsum3+HH[cnt]; Lsum3 = Lsum3+LL[cnt]; } Hmav3 = Hsum3/P3; Lmav3 = Lsum3/P3; plot5(Hmav3,"H이평3"); plot6(Lmav3,"L이평3"); } } 즐거운 하루되세요 > 길게가자 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다. > 안녕하세요. 늘 많은 도움 주셔서 감사합니다. 1분봉에 3, 5,10,15,30,60분봉의 50,300,600 이평선이 그려지게 하고 싶은데요. 종가를 기준으로 계산된 이평선이 아니라 3,5,10,15분봉의 고가 이평선과 저가 이평선이 그려지게 하고 싶습니다. 타주기별 이평선이 2개(고가기준, 저가기준) 만들어지도록요. 이평선이 타주기 차트와 동일하게 1분봉 차트에 나타나게 하려면 이평갯수만큼 묶어서 최고가와 최저가를 적용하여 계산되어야 할 것 같습니다. 혼자 해보려니 자꾸 실패해서 도움 요청드립니다. 감사합니다!