커뮤니티

수식 문의 드립니다. 정말 이해가 안가네요.

프로필 이미지
크루저
2008-03-22 10:57:37
1469
글번호 15073
답변완료
Var : min_t(0), sec_t(0), rem_t(0), bell_on(0); min_t = Int( (Time - sTime) / 100 ); // 분을 따로 구한다 sec_t = (Time - sTime) - (min_t * 100); // 초를 따로 구한다 rem_t = ( min_t * 60 ) + sec_t; // 총 시간을 초로 환산 If (rem_t < 3) and (bell_on == 0) Then { PlaySound( "C:₩₩리딩투자증권₩₩리딩스타₩₩data₩₩Sound₩₩alert.wav" ); bell_on = 1; } If (rem_t >= 3) and (bell_on == 1) Then bell_on = 0; ================================================================================ 위의 수식은 보시는 바와 같이 어떤 분봉이 새로 시작 되면 벨소리가 나도록 만든 겁니다. rem_t < 3 <- 이 수식은 2 보다 적게 하면 어떨땐 소리가 안나는 경우가 있더군요. 알고보니, 항상 수식을 수행하는게 아니고 시세가 한번 들어오는 경우만 수식을 수행하는 터라 이런일이 있을 수 있더군요. 그런데, 제가 궁금한 것은 위에서 분명히 bell_on 이라는 변수를 1 로 바꾸어 주었는데도 시장이 급격히 움직일때가 아니면 벨소리가 3번 울린다는 겁니다. 어떨때는 2번, 어떨때는 1번... 어째서 이럴까요 ? bell_on 이라는 변수가 0 이 아니면 벨소리가 울리지 말아야 할텐데, 분명히 벨을 울린 후 바로 bell_on 이라는 변수를 다른 값으로 바꾸어 주었는데도 상관없이 도로 그 조건문으로 들어가는 이유가 뭔가요 ? 그렇다고, rem_t 를 3 이하로 주면 벨소리가 아예 안나는 경우가 있어서 그렇게 하지도 못하고요. 질문을 다시 한번 정리 하자면 이렇습니다. 분봉이 완성되는 시점이던, 아니면 분봉이 새로 생긴 시점이던 그때에 벨소리가 한번만 울렸으면 한다는 것입니다. 물론, 벨소리가 안울리는 경우가 있으면 안되구요. 꼭 좀 부탁 드립니다. 수고 하세요 ~~
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2008-03-24 13:18:27

안녕하세요 예스스탁입니다. 문의하신 부분은 그 이상 컨트롤이 힘들것 같습니다. 소리가 몇번 울리는 것은 해당시간내에 시세를 받는 횟수만큼 울리는 것입니다. 다른 방법을 올려드립니다. 1틱 차트에 아래의 식을 적용하시고 원하시는 주기에 한번만 소리가 울립니다. TimeFrame 변수에 원하시는 주기를 넣으시면 됩니다. input : TimeFrame(1); var1 = TimeToMinutes(stime); var2 = TimeToMinutes(stime)%TimeFrame; if TimeFrame == 1 then{ if var1 != var1[1] Then PlaySound( "C:₩₩리딩투자증권₩₩리딩스타₩₩data₩₩Sound₩₩alert.wav" ); } if TimeFrame > 1 Then{ if var2 == 0 and var2[1] != 0 Then PlaySound( "C:₩₩리딩투자증권₩₩리딩스타₩₩data₩₩Sound₩₩alert.wav" ); } 즐거운 하루되세요 > 크루저 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다. 정말 이해가 안가네요. > Var : min_t(0), sec_t(0), rem_t(0), bell_on(0); min_t = Int( (Time - sTime) / 100 ); // 분을 따로 구한다 sec_t = (Time - sTime) - (min_t * 100); // 초를 따로 구한다 rem_t = ( min_t * 60 ) + sec_t; // 총 시간을 초로 환산 If (rem_t < 3) and (bell_on == 0) Then { PlaySound( "C:₩₩리딩투자증권₩₩리딩스타₩₩data₩₩Sound₩₩alert.wav" ); bell_on = 1; } If (rem_t >= 3) and (bell_on == 1) Then bell_on = 0; ================================================================================ 위의 수식은 보시는 바와 같이 어떤 분봉이 새로 시작 되면 벨소리가 나도록 만든 겁니다. rem_t < 3 <- 이 수식은 2 보다 적게 하면 어떨땐 소리가 안나는 경우가 있더군요. 알고보니, 항상 수식을 수행하는게 아니고 시세가 한번 들어오는 경우만 수식을 수행하는 터라 이런일이 있을 수 있더군요. 그런데, 제가 궁금한 것은 위에서 분명히 bell_on 이라는 변수를 1 로 바꾸어 주었는데도 시장이 급격히 움직일때가 아니면 벨소리가 3번 울린다는 겁니다. 어떨때는 2번, 어떨때는 1번... 어째서 이럴까요 ? bell_on 이라는 변수가 0 이 아니면 벨소리가 울리지 말아야 할텐데, 분명히 벨을 울린 후 바로 bell_on 이라는 변수를 다른 값으로 바꾸어 주었는데도 상관없이 도로 그 조건문으로 들어가는 이유가 뭔가요 ? 그렇다고, rem_t 를 3 이하로 주면 벨소리가 아예 안나는 경우가 있어서 그렇게 하지도 못하고요. 질문을 다시 한번 정리 하자면 이렇습니다. 분봉이 완성되는 시점이던, 아니면 분봉이 새로 생긴 시점이던 그때에 벨소리가 한번만 울렸으면 한다는 것입니다. 물론, 벨소리가 안울리는 경우가 있으면 안되구요. 꼭 좀 부탁 드립니다. 수고 하세요 ~~