안녕하십니까. 예스랭귀지를 사용하여 기술적 지표 수식을 작성하던 중, 변수의 상태 관리 동작과 관련하여 예상치 못한 현상을 경험하여 문의드립니다.
저희는 지표 수식 내에서 특정 조건에 따라 변수의 값을 변경하고, 해당 조건들이 만족되지 않을 경우에는 변수가 이전 봉의 자신의 값을 유지하도록 하는 로직을 구현하고 있습니다. 이를 위해 일반적으로 프로그래밍에서 상태 관리에 사용되는 if/else if/else 구조를 활용했습니다.
예상했던 로직 구조는 다음과 유사합니다.
if (특정 조건 A) then 상태 변수 = 값 1;
else if (특정 조건 B) then 상태 변수 = 값 0;
else 상태 변수 = 상태 변수[1]; // 이전 봉의 값을 유지
이 구조는 논리적으로 '특정 조건 A'가 만족하면 '상태 변수'가 '값 1'로, '특정 조건 B'가 만족하면 '값 0'으로 설정되고, 두 조건 모두 만족하지 않을 때는 이전 봉의 값을 유지해야 합니다.
하지만 테스트 결과, '특정 조건 A'가 명확히 만족되는 상황에서도 예상과 달리 '상태 변수'가 '값 1'로 제대로 업데이트되지 않거나 상태 유지가 정상적으로 이루어지지 않는 현상을 관찰했습니다. 이로 인해 해당 변수에 의존하는 후행 로직들이 작동하지 않았습니다.
흥미로운 점은, 동일한 상황에서 else 구문 없이 단순히 두 개의 if 문만을 사용하여 유사한 상태 변화를 시도했을 때 (예: if (특정 조건 A) then 상태 변수 = 값 1; if (특정 조건 B) then 상태 변수 = 값 0;), 이 구조는 의도한 대로 '상태 변수'가 정상적으로 업데이트되고 상태가 유지되는 것처럼 작동했습니다.
논리적으로 변수의 상태를 안정적으로 관리하기 위해서는 첫 번째 구조(if/else if/else)가 더 적합할 것으로 예상되지만, 실제 테스트에서는 다르게 나타나 혼란이 있습니다.
예스랭귀지 기술적 지표 수식 작성 시, 복합적인 조건문 (if/else if/else) 내에서의 변수 할당 및 상태 유지와 관련하여 특별히 유의해야 할 점이나 권장되는 코딩 패턴이 있는지 알고 싶습니다. 또한, 특정 조건에서 변수 할당이 예상대로 이루어지지 않는 현상이 발생하는 잠재적인 원인이 무엇인지 기술적인 관점에서 설명을 부탁드립니다.
바쁘시겠지만 답변 주시면 예스랭귀지를 활용하는 데 큰 도움이 될 것 같습니다.
감사합니다.
답변 2
상수리나무
2025-05-05 10:18:02.0
추가 자료 첨부합니다.
예스스탁
예스스탁 답변
2025-05-13 09:31:43.0
> 상수리나무 님이 쓴 글입니다.
> 제목 : Re : if 문과 관련하여..
> 추가 자료 첨부합니다.