커뮤니티

부탁드립니다

프로필 이미지
갈랑교
2025-05-22 06:37:43
161
글번호 191059
답변완료
수식이 맞는지 확인 부탁합니다 input : len(100), th(3.0); // ZigZag 기준 변동폭(%) var : i(0), dir(0), ptCnt(0), zzIdx(0), zzPrice(0), zzDir(0), rise1(0), rise2(0), valid(false); // 배열 변수는 'Array :' 키워드를 사용하여 별도로 선언해야 합니다. // 여기서 100은 배열의 최대 크기입니다. len의 최대값에 따라 적절히 조정하세요. Array : zigzagPt[100](0); Array : zigzagIdx[100](0); // ZigZag 포인트 탐지 for i = 1 to len - 1 begin if dir = 0 then begin // 초기 방향 설정 if H[i] > H[0] * (1 + th / 100.0) then begin // 상승 방향 시작 dir = 1; zzPrice = H[i]; zzIdx = i; zzDir = 1; // 상승 zigzagPt[0] = zzPrice; zigzagIdx[0] = zzIdx; ptCnt = 1; end else if L[i] < L[0] * (1 - th / 100.0) then begin // 하락 방향 시작 dir = -1; zzPrice = L[i]; zzIdx = i; zzDir = -1; // 하락 zigzagPt[0] = zzPrice; zigzagIdx[0] = zzIdx; ptCnt = 1; end; end else if dir = 1 then begin // 현재 상승 중 if L[i] < zzPrice * (1 - th / 100.0) then begin // 하락 반전 dir = -1; zzPrice = L[i]; zzIdx = i; zzDir = -1; if ptCnt < 100 then begin // 배열 범위 체크: 100은 zigzagPt 배열의 최대 크기 zigzagPt[ptCnt] = zzPrice; zigzagIdx[ptCnt] = zzIdx; ptCnt = ptCnt + 1; // <-- 이 부분을 수정했습니다. (이전 49줄 에러 관련) end; end; end else if dir = -1 then begin // 현재 하락 중 if H[i] > zzPrice * (1 + th / 100.0) then begin // 상승 반전 dir = 1; zzPrice = H[i]; zzIdx = i; zzDir = 1; if ptCnt < 100 then begin // 배열 범위 체크: 100은 zigzagPt 배열의 최대 크기 zigzagPt[ptCnt] = zzPrice; zigzagIdx[ptCnt] = zzIdx; ptCnt = ptCnt + 1; // <-- 이 부분을 수정했습니다. (이전 62줄 에러 관련) end; end; end; end; // 5파 시작점 (4파 저점) 탐색 조건 // 최소 5개의 ZigZag 포인트가 있어야 조건 검증 가능 (ptCnt >= 5) // zigzagPt[0], zigzagPt[1], zigzagPt[2], zigzagPt[3], zigzagPt[4]까지 필요 if ptCnt >= 5 then begin // 상승 5파동 구조 검증 if zigzagPt[0] < zigzagPt[1] and zigzagPt[1] > zigzagPt[2] and zigzagPt[2] < zigzagPt[3] and zigzagPt[3] > zigzagPt[4] then begin // 주어진 조건 1, 2, 3 적용 if (zigzagPt[1] < zigzagPt[2] and // 조건 1a (1파 고점 < 2파 저점 - 사용자 조건) zigzagPt[2] < zigzagPt[3] and // 조건 1b (2파 저점 < 3파 고점) zigzagPt[2] > zigzagPt[0] and // 조건 2 (2파 저점 > 1파 시작점) zigzagPt[1] <= zigzagPt[4]) then begin // 조건 3 (1파 고점 <= 4파 저점) valid = true; end; end; end; if valid then find(1); // 조건 만족 시 검색
종목검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-05-22 10:59:07

안녕하세요 예스스탁입니다. if dir = 0 then if dir = 1 then if dir = -1 then 예스랭귀지에서 같다라는 표현은 == 입니다. A == B --> A와 B가 같다 A = B --> A에 B를 저장 올리신 수식에서 다른 부분은 문법상 에러가 없고 위 부분만 수정해 드립니다. input : len(100), th(3.0); // ZigZag 기준 변동폭(%) var : i(0), dir(0), ptCnt(0), zzIdx(0), zzPrice(0), zzDir(0), rise1(0), rise2(0), valid(false); // 배열 변수는 'Array :' 키워드를 사용하여 별도로 선언해야 합니다. // 여기서 100은 배열의 최대 크기입니다. len의 최대값에 따라 적절히 조정하세요. Array : zigzagPt[100](0); Array : zigzagIdx[100](0); // ZigZag 포인트 탐지 for i = 1 to len - 1 begin if dir == 0 then begin // 초기 방향 설정 if H[i] > H[0] * (1 + th / 100.0) then begin // 상승 방향 시작 dir = 1; zzPrice = H[i]; zzIdx = i; zzDir = 1; // 상승 zigzagPt[0] = zzPrice; zigzagIdx[0] = zzIdx; ptCnt = 1; end else if L[i] < L[0] * (1 - th / 100.0) then begin // 하락 방향 시작 dir = -1; zzPrice = L[i]; zzIdx = i; zzDir = -1; // 하락 zigzagPt[0] = zzPrice; zigzagIdx[0] = zzIdx; ptCnt = 1; end; end else if dir == 1 then begin // 현재 상승 중 if L[i] < zzPrice * (1 - th / 100.0) then begin // 하락 반전 dir = -1; zzPrice = L[i]; zzIdx = i; zzDir = -1; if ptCnt < 100 then begin // 배열 범위 체크: 100은 zigzagPt 배열의 최대 크기 zigzagPt[ptCnt] = zzPrice; zigzagIdx[ptCnt] = zzIdx; ptCnt = ptCnt + 1; // <-- 이 부분을 수정했습니다. (이전 49줄 에러 관련) end; end; end else if dir == -1 then begin // 현재 하락 중 if H[i] > zzPrice * (1 + th / 100.0) then begin // 상승 반전 dir = 1; zzPrice = H[i]; zzIdx = i; zzDir = 1; if ptCnt < 100 then begin // 배열 범위 체크: 100은 zigzagPt 배열의 최대 크기 zigzagPt[ptCnt] = zzPrice; zigzagIdx[ptCnt] = zzIdx; ptCnt = ptCnt + 1; // <-- 이 부분을 수정했습니다. (이전 62줄 에러 관련) end; end; end; end; // 5파 시작점 (4파 저점) 탐색 조건 // 최소 5개의 ZigZag 포인트가 있어야 조건 검증 가능 (ptCnt >= 5) // zigzagPt[0], zigzagPt[1], zigzagPt[2], zigzagPt[3], zigzagPt[4]까지 필요 if ptCnt >= 5 then begin // 상승 5파동 구조 검증 if zigzagPt[0] < zigzagPt[1] and zigzagPt[1] > zigzagPt[2] and zigzagPt[2] < zigzagPt[3] and zigzagPt[3] > zigzagPt[4] then begin // 주어진 조건 1, 2, 3 적용 if (zigzagPt[1] < zigzagPt[2] and // 조건 1a (1파 고점 < 2파 저점 - 사용자 조건) zigzagPt[2] < zigzagPt[3] and // 조건 1b (2파 저점 < 3파 고점) zigzagPt[2] > zigzagPt[0] and // 조건 2 (2파 저점 > 1파 시작점) zigzagPt[1] <= zigzagPt[4]) then begin // 조건 3 (1파 고점 <= 4파 저점) valid = true; end; end; end; if valid then find(1); // 조건 만족 시 검색 즐거운 하루되세요 > 갈랑교 님이 쓴 글입니다. > 제목 : 부탁드립니다 > 수식이 맞는지 확인 부탁합니다 input : len(100), th(3.0); // ZigZag 기준 변동폭(%) var : i(0), dir(0), ptCnt(0), zzIdx(0), zzPrice(0), zzDir(0), rise1(0), rise2(0), valid(false); // 배열 변수는 'Array :' 키워드를 사용하여 별도로 선언해야 합니다. // 여기서 100은 배열의 최대 크기입니다. len의 최대값에 따라 적절히 조정하세요. Array : zigzagPt[100](0); Array : zigzagIdx[100](0); // ZigZag 포인트 탐지 for i = 1 to len - 1 begin if dir = 0 then begin // 초기 방향 설정 if H[i] > H[0] * (1 + th / 100.0) then begin // 상승 방향 시작 dir = 1; zzPrice = H[i]; zzIdx = i; zzDir = 1; // 상승 zigzagPt[0] = zzPrice; zigzagIdx[0] = zzIdx; ptCnt = 1; end else if L[i] < L[0] * (1 - th / 100.0) then begin // 하락 방향 시작 dir = -1; zzPrice = L[i]; zzIdx = i; zzDir = -1; // 하락 zigzagPt[0] = zzPrice; zigzagIdx[0] = zzIdx; ptCnt = 1; end; end else if dir = 1 then begin // 현재 상승 중 if L[i] < zzPrice * (1 - th / 100.0) then begin // 하락 반전 dir = -1; zzPrice = L[i]; zzIdx = i; zzDir = -1; if ptCnt < 100 then begin // 배열 범위 체크: 100은 zigzagPt 배열의 최대 크기 zigzagPt[ptCnt] = zzPrice; zigzagIdx[ptCnt] = zzIdx; ptCnt = ptCnt + 1; // <-- 이 부분을 수정했습니다. (이전 49줄 에러 관련) end; end; end else if dir = -1 then begin // 현재 하락 중 if H[i] > zzPrice * (1 + th / 100.0) then begin // 상승 반전 dir = 1; zzPrice = H[i]; zzIdx = i; zzDir = 1; if ptCnt < 100 then begin // 배열 범위 체크: 100은 zigzagPt 배열의 최대 크기 zigzagPt[ptCnt] = zzPrice; zigzagIdx[ptCnt] = zzIdx; ptCnt = ptCnt + 1; // <-- 이 부분을 수정했습니다. (이전 62줄 에러 관련) end; end; end; end; // 5파 시작점 (4파 저점) 탐색 조건 // 최소 5개의 ZigZag 포인트가 있어야 조건 검증 가능 (ptCnt >= 5) // zigzagPt[0], zigzagPt[1], zigzagPt[2], zigzagPt[3], zigzagPt[4]까지 필요 if ptCnt >= 5 then begin // 상승 5파동 구조 검증 if zigzagPt[0] < zigzagPt[1] and zigzagPt[1] > zigzagPt[2] and zigzagPt[2] < zigzagPt[3] and zigzagPt[3] > zigzagPt[4] then begin // 주어진 조건 1, 2, 3 적용 if (zigzagPt[1] < zigzagPt[2] and // 조건 1a (1파 고점 < 2파 저점 - 사용자 조건) zigzagPt[2] < zigzagPt[3] and // 조건 1b (2파 저점 < 3파 고점) zigzagPt[2] > zigzagPt[0] and // 조건 2 (2파 저점 > 1파 시작점) zigzagPt[1] <= zigzagPt[4]) then begin // 조건 3 (1파 고점 <= 4파 저점) valid = true; end; end; end; if valid then find(1); // 조건 만족 시 검색