커뮤니티

분봉이나 일봉에서 주봉의 종가값을 계산하기 위해 작성된 식의 오류(메뉴얼)

프로필 이미지
월사천
2025-12-04 17:37:14
75
글번호 228683
답변완료

메뉴얼을 보다가 아래 수식을 보았습니다

--------------------발췌

일봉또는 분봉에서


사용자함수는 시스템식과 지표식등 일반 수식을 만드는 방법과 크게 2가지 차이가 있다.


첫번째 사용자함수 이름과 관련이 있고, 두번째는 외부변수의 선언과 관련된 내용이다.




위의 수식은 분봉이나 일봉에서 주봉의 종가값을 계산하기 위해 작성된 식이다.

WeekC라는 배열변수를 만들어 방의 갯수는 넉넉히 99개로 만든 후에 이번주의 종가는 WeekC[0]에

저장하고 주가 변경될 때마다 지금까지 저장된 값을 다음 방으로 순차적으로 옮겨 이전 주의 값도

사용할 수 있게 만든 식 이다.

--------------------발췌



WeekC[cnt] = WeekC[cnt-1][1];

그런데 위 수식에서 의문이있습니다

위수식은

주가 새롭게 시작되는 첫봉에서 로직이 수행되는 로직인데

시장이 월화수목금 9시 00분 부터 열린다고한다면

월요일 9:00 이 위 로직이 돌것입니다

그리고 주봉의 값을 저장하는 WeekC 를 한칸씩 시프트해서 새로운 주봉의 값은 WeekC[0] 에 저장하고

직전주봉의 값을 WeekC[1] 에 저장합니다


그런데 첫번째 루프에서

Week[1] = WeekC[0][1] 값으로 저장을하고있습니다

제 생각에는 저 시점에, WeekC[0] 값에 아직 새로 업데이트된 값이 없기때문에, WeekC[0] 값에 직전 주의 마지막 봉의 종가가 저장되어있고 WeekC[0][1] 에는 직전 주의 마지막봉 -1 봉의 종가가 저장되어있는것으로보이는데


그래서

Week[1] = WeekC[0] 값이 저장되어야한다고 보는데

로직에 버그가있는건지 제가 잘못이해한건지 알려주시면 감사하겠습니다




사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-12-05 09:17:03

안녕하세요 예스스탁입니다. 1 수식에 문제는 없습니다. 해당 수식 구조에서 for 문 수행시에 WeeKC[0]과 Week[0][1]은 같은 값입니다. WeekC[0], WeekC[0][1]은 모두 전주의 마지막봉의 종가입니다. WeekC[0]는 매봉의 종가이고 해당 시점에 WeekC[0]값은 아직 주첫봉의 종가를 저장하지 않아 WeeKC[0]과 WeeKC[0][1]은 같은 값이지만 WeekC[1]에 WeekC[1]값을 저장한 것 뿐입니다. 아래와 같이 지표식 작성해서 2개의 월 첫봉값 확인하시기 바랍니다. var : cnt(0); Array : WeekC[99](0); if DayOfWeek(date) < DayOfWeek(sDate)[1] Then { For cnt = 0 to 98 { WeekC[cnt] = WeekC[cnt-1][1]; } } Plot1(WeekC[0]); Plot2(WeekC[0][1]); WeekC[0] = C; 2 최근 추석과 같이 연휴가 길어 목요일 장종료 후 다음주 금요일에 시작하는 경우가 있습니다. DayOfWeek(date) < DayOfWeek(sDate)[1]로는 해당 날짜는 체크가 되지 않으므로 아래와 같이 if조건을 변경해 사용해 주셔야 합니다. var : cnt(0); Array : WeekC[99](0); if Bdate != Bdate[1] and ((DayOfWeek(bdate) <= DayOfWeek(bDate)[1]) or (DateToJulian(Bdate) >= DateToJulian(Bdate[1])+7)) Then { TL_New(sDate,stime,0,sDate,sTime,99999999); For cnt = 0 to 98 { WeekC[cnt] = WeekC[cnt-1][1]; } } WeekC[0] = C; Plot1(WeekC[0]); Plot2(WeekC[1]); 즐거운 하루되세요