커뮤니티

변수에 대해서

프로필 이미지
나무아래
2011-08-14 14:58:45
666
글번호 41896
답변완료
원래 과거에 프로그래머였는데 YesLanguage메뉴얼을 공부하던중에 배열에 대한 부분에서 의문점이 생겨서 아래와 같이 해봤는데 1분봉에서 디버깅을해보니 AA값은 60분에 한번 바뀌는데 한번 바뀐 이후에는 AA값이 자동 복사 되는 것 같은데 맞나요? 자동 복사하는 것으로 생각해야 하나요 아니면 다른개념이 있나요 분명 AA값은 초기 값은 0이고 60분의 처음에는 AA=AA+1 가 실행되서 AA는 1이 되겠지만 2분째에는 AA=AA+1 문장이 있는 곳에 집입을 하지 않으니까 아무 값도 할당되지 않을 것이고 1분째에 AA가 현재 값이었지만 2분째에는 AA[1]이 1이 되고 AA는 아직 값을 할당 받지 못해서 0일거라 생각했는데 AA는 1이더군요... var : Frame(0),count(0),AA(0); Frame = TimeToMinutes(stime)%60; if dayindex == 0 or Frame < Frame[1] Then{ AA=AA+1; } MessageLog("%f %f",AA, AA[1]);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-08-16 11:51:51

안녕하세요 예스스탁입니다. 작성하신 식에서 AA값은 일반변수이고 60분 간격으로 1씩 증가하는 값입니다. 선언시에 (0)은 AA의 최초값이고 매봉 초기화되는 것은 아닙니다. AA에 한번 값이 할당되면 다른 값이 할당하기 전에는 그 값을 유지하게 됩니다. false --> false --> true --> false --> false --> true --> false --> false AA : 0 --> 0 --> 1 --> 1 --> 1 --> 2 --> 2 --> 2 AA[1] : X --> 0 --> 0 --> 1 --> 1 --> 1 --> 2 --> 2 AA[2] : X --> X --> 0 --> 0 --> 1 --> 1 --> 1 --> 2 AA[3] : X --> X --> X --> 0 --> 0 --> 1 --> 1 --> 1 true는 dayindex == 0 or Frame < Frame[1] 조건이 만족한 봉 false는 만족하지 않은 봉입니다. 수식의 변수값은 모두 이전봉들의 값을 자동으로 저장하고 사용할 수 있습니다. 현재봉의 값은 [0], 1봉전의 값은 [1], 2봉전의 값은 [2]에 저장이 되고 새로운 봉이 생기면 순차적으로 복사해서 가게 됩니다. dayindex == 0 or Frame < Frame[1]조건이 만족하면 AA에1 아니면 0을 할당하고자 하시면 아래와 같이 수식을 작성하셔야 합니다. var : Frame(0),count(0),AA(0); Frame = TimeToMinutes(stime)%60; if dayindex == 0 or Frame < Frame[1] Then{ AA = 1; else AA = 0; false --> false --> true --> false --> false --> true --> false --> false AA : 0 --> 0 --> 1 --> 0 --> 0 --> 1 --> 0 --> 0 AA[1] : X --> 0 --> 0 --> 1 --> 0 --> 0 --> 1 --> 0 AA[2] : X --> X --> 0 --> 0 --> 1 --> 0 --> 0 --> 1 AA[3] : X --> X --> X --> 0 --> 0 --> 1 --> 0 --> 0 즐거운 하루되세요 > 나무아래 님이 쓴 글입니다. > 제목 : 변수에 대해서 > 원래 과거에 프로그래머였는데 YesLanguage메뉴얼을 공부하던중에 배열에 대한 부분에서 의문점이 생겨서 아래와 같이 해봤는데 1분봉에서 디버깅을해보니 AA값은 60분에 한번 바뀌는데 한번 바뀐 이후에는 AA값이 자동 복사 되는 것 같은데 맞나요? 자동 복사하는 것으로 생각해야 하나요 아니면 다른개념이 있나요 분명 AA값은 초기 값은 0이고 60분의 처음에는 AA=AA+1 가 실행되서 AA는 1이 되겠지만 2분째에는 AA=AA+1 문장이 있는 곳에 집입을 하지 않으니까 아무 값도 할당되지 않을 것이고 1분째에 AA가 현재 값이었지만 2분째에는 AA[1]이 1이 되고 AA는 아직 값을 할당 받지 못해서 0일거라 생각했는데 AA는 1이더군요... var : Frame(0),count(0),AA(0); Frame = TimeToMinutes(stime)%60; if dayindex == 0 or Frame < Frame[1] Then{ AA=AA+1; } MessageLog("%f %f",AA, AA[1]);