커뮤니티

수식 검토 부탁드리겠습니다

프로필 이미지
yamu
2024-11-20 16:29:39
695
글번호 185465
답변완료
질문 몇가지 부탁드리겠습니다 질문1. ARRV 배열의 이동평균을 ARRMA 로 작성했는데요, 값이 제대로 (작게 나오네요) 안나오네요 어디서 잘못 작성한건지 검토 좀 부탁 드리겠습니다 작성한 수식대로라면 ARRV 배열에 포함된 값들로만 3이동평균 한게 맞지 않나요?? VAR : P1(0),SUM1(0),ARRMA(0); var : m1(0),m2(0),T(0),HH(0),HH1(0),LL(0),CNT(0),HARR(0),hvi(0); VAR:TLUP(0); ARRAY : ARR[100](0),VII[100](0),ARRV[100](0); if H>L*1.11 Then { TLUP=TL_NEW(sDatE,sTimE,H,sDatE,sTimE,99999); TL_SetColoR(TLUP,CyaN); TL_SetSizE(TLUP,1); for cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; VII[CNT] = VII[CNT-1]; ARRV[CNT] = ARRV[CNT-1]; } ARR[0] = H; VII[0] = DayOpen*1.10; if ARR[4] > 0 Then { HARR = 0; HVI = 0; For cnt = 0 to 4 { if harr == 0 or (harr > 0 and ARR[cnt] > harr) Then { HARR = ARR[cnt]; HVI = VII[cnt]; } } if HVI > 0 Then { ARRV[0] = HVI; } } # Plot11(ARR[0]); # Plot12(HARR[0]); Plot13(ARRV[0]); P1=3; IF ARRV[P1-1]>0 TheN { SUM1=0; FoR CNT= 0 TO P1-1; { SUM1= SUM1+ARRV[CNT]; } ARRMA=SUM1/P1; PLOT22(ARRMA); } } 질문2. 아래 수식에서 배열 ARR의 5일간 최고값을 HARR에 대입하고 그 값들로 "ARRH 라는 배열"로 만들고 난뒤에, ARR 배열에 ARRH값을 삽입하고자 (0번에 ARRH 값이 오고 그다음에 H값이 오도록) 아래와 같이 작성했는데 잘 안나오네요 어디서 잘못됐는지 한번 봐주셨으면 합니다 ARR[1]을 출력했을때 HIGH 값이 잘 나오는데 ARR[0]으로 하면 5일간 최고 고가 값이 안나오네요.. VAR : P1(0),SUM1(0),ARRMA(0); var : m1(0),m2(0),T(0),HH(0),HH1(0),LL(0),CNT(0),HARR(0),hvi(0); VAR:TLUP(0); ARRAY : ARR[100](0),VII[100](0),ARRV[100](0),ARRH [100](0); if H>L*1.11 Then { TLUP=TL_NEW(sDatE,sTimE,H,sDatE,sTimE,99999); TL_SetColoR(TLUP,CyaN); TL_SetSizE(TLUP,1); for cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; VII[CNT] = VII[CNT-1]; ARRV[CNT] = ARRV[CNT-1]; ARRH[CNT]= ARRH[CNT-1]; } ARR[0] = H; VII[0] = DayOpen*1.10; if ARR[4] > 0 Then { HARR = 0; HVI = 0; For cnt = 0 to 4 { if HARR == 0 or (HARR > 0 and ARR[cnt] > HARR) Then { HARR = ARR[cnt]; HVI = VII[cnt]; } } if HVI > 0 AND HARR>0 Then { ARRV[0] = HVI; ARRH[0]=HARR; } } FoR cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; } ARR[0]=HARR[0]; Plot12(HARR); # Plot11(ARR[0]); } 질문3. arr 배열의 값들을 보고자 디버그 수식을 작성했는데요 혹시 각 봉에서의 모든 배열 값들을 외부로 추출해서 쓰려면 (PRINT) MessageLoG("%.1f,%.1f,%.1f",ARR[0],ARR[1],ARR[2]); 예를들어 50번 까지 보려면 이런식으로 모두 나열해서 쓰는 방법 밖에 없나요?? 범위 지정 할 수 있는 수식이 있는지 궁금합니다
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-11-21 10:16:45

안녕하세요 예스스탁입니다. 1 if ARRV[P1-1]>0 Then { SUM1 = 0; For cnt = 0 TO P1-1 { SUM1 = SUM1 + ARRV[CNT]; } ARRMA=SUM1/P1; PLOT22(sum1); } 위 for문에 보시면 마지막에 ;이 찍혀있습니다. 예스랭귀지에서 ;는 문장의 마침으로 for문뒤에 ;가 있으면 { }안의 내용과 분리가 되고 for문에 의해 cnt에 저장된 값이 최종 2값이므로 sum1에 ARRV[2]만 저장됩니다. ;를 제거하시면 됩니다. 2 작성하신 내용이면 ARR은 최종 HARR값의 배열이 됩니다. HARR은 최근 if H>L*1.11 Then 만족봉의 5개의 고가 중 최고가 이어야 하는데 FoR cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; } ARR[0]=HARR[0]; 위 내용에 의해 ARR은 조건만족시 마다 HARR을 저장하는 배열이 되고 새로운 조건이 만족하면 해당봉의 고가와 과거 4개의 HARR 중 큰값이 HARR값이 됩니다. 즉 위 내용에 의해 ARR에 초기에 저장하는 내용이 의미가 없게 됩니다. 메세지로그로 출력해서 각 조건만족시 ARR값 변경 확인하시기 바랍니다. 3 디버깅창에 한줄로 표시하시려면 나열해서 작성하셔야 합니다. 봉당 50회 출력한다면 for문 이용하시면 됩니다. for cnt = 0 to 49 { MessageLoG("%.f,%.1f",cnt, ARR[cnt]); } 즐거운 하루되세요 > yamu 님이 쓴 글입니다. > 제목 : 수식 검토 부탁드리겠습니다 > 질문 몇가지 부탁드리겠습니다 질문1. ARRV 배열의 이동평균을 ARRMA 로 작성했는데요, 값이 제대로 (작게 나오네요) 안나오네요 어디서 잘못 작성한건지 검토 좀 부탁 드리겠습니다 작성한 수식대로라면 ARRV 배열에 포함된 값들로만 3이동평균 한게 맞지 않나요?? VAR : P1(0),SUM1(0),ARRMA(0); var : m1(0),m2(0),T(0),HH(0),HH1(0),LL(0),CNT(0),HARR(0),hvi(0); VAR:TLUP(0); ARRAY : ARR[100](0),VII[100](0),ARRV[100](0); if H>L*1.11 Then { TLUP=TL_NEW(sDatE,sTimE,H,sDatE,sTimE,99999); TL_SetColoR(TLUP,CyaN); TL_SetSizE(TLUP,1); for cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; VII[CNT] = VII[CNT-1]; ARRV[CNT] = ARRV[CNT-1]; } ARR[0] = H; VII[0] = DayOpen*1.10; if ARR[4] > 0 Then { HARR = 0; HVI = 0; For cnt = 0 to 4 { if harr == 0 or (harr > 0 and ARR[cnt] > harr) Then { HARR = ARR[cnt]; HVI = VII[cnt]; } } if HVI > 0 Then { ARRV[0] = HVI; } } # Plot11(ARR[0]); # Plot12(HARR[0]); Plot13(ARRV[0]); P1=3; IF ARRV[P1-1]>0 TheN { SUM1=0; FoR CNT= 0 TO P1-1; { SUM1= SUM1+ARRV[CNT]; } ARRMA=SUM1/P1; PLOT22(ARRMA); } } 질문2. 아래 수식에서 배열 ARR의 5일간 최고값을 HARR에 대입하고 그 값들로 "ARRH 라는 배열"로 만들고 난뒤에, ARR 배열에 ARRH값을 삽입하고자 (0번에 ARRH 값이 오고 그다음에 H값이 오도록) 아래와 같이 작성했는데 잘 안나오네요 어디서 잘못됐는지 한번 봐주셨으면 합니다 ARR[1]을 출력했을때 HIGH 값이 잘 나오는데 ARR[0]으로 하면 5일간 최고 고가 값이 안나오네요.. VAR : P1(0),SUM1(0),ARRMA(0); var : m1(0),m2(0),T(0),HH(0),HH1(0),LL(0),CNT(0),HARR(0),hvi(0); VAR:TLUP(0); ARRAY : ARR[100](0),VII[100](0),ARRV[100](0),ARRH [100](0); if H>L*1.11 Then { TLUP=TL_NEW(sDatE,sTimE,H,sDatE,sTimE,99999); TL_SetColoR(TLUP,CyaN); TL_SetSizE(TLUP,1); for cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; VII[CNT] = VII[CNT-1]; ARRV[CNT] = ARRV[CNT-1]; ARRH[CNT]= ARRH[CNT-1]; } ARR[0] = H; VII[0] = DayOpen*1.10; if ARR[4] > 0 Then { HARR = 0; HVI = 0; For cnt = 0 to 4 { if HARR == 0 or (HARR > 0 and ARR[cnt] > HARR) Then { HARR = ARR[cnt]; HVI = VII[cnt]; } } if HVI > 0 AND HARR>0 Then { ARRV[0] = HVI; ARRH[0]=HARR; } } FoR cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; } ARR[0]=HARR[0]; Plot12(HARR); # Plot11(ARR[0]); } 질문3. arr 배열의 값들을 보고자 디버그 수식을 작성했는데요 혹시 각 봉에서의 모든 배열 값들을 외부로 추출해서 쓰려면 (PRINT) MessageLoG("%.1f,%.1f,%.1f",ARR[0],ARR[1],ARR[2]); 예를들어 50번 까지 보려면 이런식으로 모두 나열해서 쓰는 방법 밖에 없나요?? 범위 지정 할 수 있는 수식이 있는지 궁금합니다