커뮤니티

이게 왜 ERROR 처리로 뛰는지요 ? (빠른답변 부탁드려요ㅡㅡ)

프로필 이미지
2010-03-29 18:16:26
708
글번호 29005
답변완료
뭔가 복잡한 지표식을 작성하다가 도대체 원하는대로 동작하지가 않아서 의심가는 부분을 조금씩 추려서 debugging을 해봤더니 변수 i가 재대로 적용되지가 않네요. 아래에서 MessageLog로 찍는 i값은 원하는대로 5가 찍히나, vari = MA(C[i], 2);에서의 i값은 0이 들어가는것 같네요. 이게 어찌된 일인가요? LastBarOnChart() 지우면 원하는데로 동작은하나 원하는 동작이 매봉마다 하면 안되고 다끝나고 한번만 해야합니다. (그리고 i값도 예를들어서 5를 넣은거구요. 실제로는 루프로 돌려야합니다) 사용환경은 하이투자증권의 예스트레이더 3.1 (예스랭귀지 편집기 3.0) 입니다. 급합니다 ㅡㅡ. 빠른 답신 부탁드립니다. ............................ vars : i(0), cons(0), vari(0); if( LastBarOnChart() ) then { i = 5; MessageLog("%.2f", i); cons = MA(C[5], 2); vari = MA(C[i], 2); if( cons != vari ) Then MessageLog("ERROR ==> cons %.4f, vari %.4f", cons, vari ); Else MessageLog("OK"); }
지표
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2010-03-30 09:18:59

안녕하세요 예스스탁입니다. vars : i(0), cons(0), vari(0); if( LastBarOnChart() ) then { i = 5; cons = MA(C[5], 2); vari = MA(C[i], 2); } plot1(cons); plot2(vari); cons = MA(C[5], 2); 수식에 ma(c[5],2)라고 작성하시면 해당 내용은 이평의 5개봉전값(명확한값)을 내부적으로 계산하고 있다가 차트의 마지막봉일때 값을 할당하고 출력하게 됩니다. vari = MA(C[i], 2); 하지만 ma(c[i],2)와 같은 경우는 i가 어떤 값인줄 모르고 자체 계산하고 있다가 마지막봉에 i가 할당되고 vari에 적용되므로 잘모된 값이 나오게 됩니다. 즉 어떤것인지 모르는 상태에서 자체계산하다고 나오는 값입니다 즐거운 하루되세요 > 얀 님이 쓴 글입니다. > 제목 : 이게 왜 ERROR 처리로 뛰는지요 ? (빠른답변 부탁드려요ㅡㅡ) > 뭔가 복잡한 지표식을 작성하다가 도대체 원하는대로 동작하지가 않아서 의심가는 부분을 조금씩 추려서 debugging을 해봤더니 변수 i가 재대로 적용되지가 않네요. 아래에서 MessageLog로 찍는 i값은 원하는대로 5가 찍히나, vari = MA(C[i], 2);에서의 i값은 0이 들어가는것 같네요. 이게 어찌된 일인가요? LastBarOnChart() 지우면 원하는데로 동작은하나 원하는 동작이 매봉마다 하면 안되고 다끝나고 한번만 해야합니다. (그리고 i값도 예를들어서 5를 넣은거구요. 실제로는 루프로 돌려야합니다) 사용환경은 하이투자증권의 예스트레이더 3.1 (예스랭귀지 편집기 3.0) 입니다. 급합니다 ㅡㅡ. 빠른 답신 부탁드립니다. ............................ vars : i(0), cons(0), vari(0); if( LastBarOnChart() ) then { i = 5; MessageLog("%.2f", i); cons = MA(C[5], 2); vari = MA(C[i], 2); if( cons != vari ) Then MessageLog("ERROR ==> cons %.4f, vari %.4f", cons, vari ); Else MessageLog("OK"); }
프로필 이미지

2010-03-30 09:45:54

예스랭귀지 내부의 상황이야 그렇다쳐도 사용자의 입장에서는 황당한데요. 그럼 예스랭귀지에서는 근본적으로 가변적인 시간의 과거값을 참조하는게 불가능하단 말인가요? 그렇다면 대단한 제약인데요. C언어나 PERL이나 다른 일반적인 프로그램언어를 봐도 저런 종류의 제약은 없는것 같았는데요. (time loop야 알아서 프로그래머가 바깥에 크게 한번 돌린다 치구요) 편법으로라도 어떻게 처리할 방법이 없는지요 ? C나 PERL처럼 프로그래머가 봉마다 과거값을 따로 저장해야 하나... 의견좀 부탁드립니다.
프로필 이미지

예스스탁 예스스탁 답변

2010-03-30 15:37:13

안녕하세요 예스스탁입니다. LastBarOnChart로 인해 발생되는 내용이므로 LastBarOnChart함수에 밖에 작성하셔야 합니다. 즐거운 하루되세요 > 얀 님이 쓴 글입니다. > 제목 : 그럼 예스랭귀지에서는 가변적인 과거값을 참조하는게 불가능하단 말인가요? > 예스랭귀지 내부의 상황이야 그렇다쳐도 사용자의 입장에서는 황당한데요. 그럼 예스랭귀지에서는 근본적으로 가변적인 시간의 과거값을 참조하는게 불가능하단 말인가요? 그렇다면 대단한 제약인데요. C언어나 PERL이나 다른 일반적인 프로그램언어를 봐도 저런 종류의 제약은 없는것 같았는데요. (time loop야 알아서 프로그래머가 바깥에 크게 한번 돌린다 치구요) 편법으로라도 어떻게 처리할 방법이 없는지요 ? C나 PERL처럼 프로그래머가 봉마다 과거값을 따로 저장해야 하나... 의견좀 부탁드립니다.