커뮤니티

[재질문드립니다2]BASIS 차트

프로필 이미지
퀀트드래곤
2021-08-10 15:05:14
1549
글번호 151420
답변완료

첨부 이미지

안녕하세요 번번히 죄송합니다. 아래 답변과 같이 고쳤는데도 전혀 무관한 수치가 찍히고있네요ㅜㅜ (우선 콘탱고 부분만 PLOT으로 찍어보고 있습니다) 검증은 plot1(C-data2(C),"베이시스"); PlotBaseLine1(0); 이렇게 지표를 따로 만들어서 하나하나 계산해보고있습니다. <<<<<<<<<<<<<<<<<<<<<<<<<<<답변>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 안녕하세요 예스스탁입니다. 해당 수식에서 if BASIS > 0 Then 내용은 불필요합니다. 해당 내용을 (data1(dayclose(cnt))-data2(CloseD(cnt))) > 0 로 대체하시면 됩니다. Var : cnt(0); var : 콘탱고BS합(0), 콘탱고BS갯수(0), 콘탱고BS평균(0); var : 백워데이션BS합(0), 백워데이션BS갯수(0), 백워데이션BS평균(0); Input : 기간(3); 콘탱고BS합 = 0; 콘탱고BS평균 = 0; 콘탱고BS갯수 = 0; 백워데이션BS합 = 0; 백워데이션BS평균 = 0; 백워데이션BS갯수 = 0; For cnt = 0 to 기간-1 //설정 기간동안 for문 돌림 (input에 3입력하면 0부터 포문이 돌기때문에 4가 됨. 그래서 -1해줌) { if (data1(dayclose(cnt))-data2(CloseD(cnt))) > 0 Then // 베이시스가 0 초과면 (콘탱고가 나오면) { 콘탱고BS합 = 콘탱고BS합 + (data1(dayclose(cnt))-data2(CloseD(cnt))); // 기간 내 콘탱고 수치를 누적해줌 콘탱고BS갯수 = 콘탱고BS갯수 +1; // 기간 내 콘탱고 횟수 카운트 콘탱고BS평균 = 콘탱고BS합/콘탱고BS갯수; // 기간 내 콘탱고 평균 } Else { 백워데이션BS합 = 백워데이션BS합 + (data1(dayclose(cnt))-data2(CloseD(cnt))); // 기간 내 백워데이션 수치를 누적해줌 백워데이션BS갯수 = 백워데이션BS갯수 +1; // 기간 내 백워데이션 횟수 카운트 백워데이션BS평균 = 백워데이션BS합/백워데이션BS갯수; // 기간 내 백워데이션 평균 } } Plot1(콘탱고BS합,"콘탱고BS합"); plot2(콘탱고BS갯수, "콘탱고BS갯수"); plot3(콘탱고BS평균, "콘탱고BS평균"); Plot4(백워데이션BS합,"백워데이션BS합"); Plot5(백워데이션BS갯수,"백워데이션BS합"); Plot6(백워데이션BS평균,"백워데이션BS합"); 즐거운 하루되세요 > 퀀트드래곤 님이 쓴 글입니다. > 제목 : [재질문드립니다]BASIS 차트 > 아래와같이 답변을 받아서 수정해보았는데도 아직 제대로 구현이 안되고있습니다. // 3일 동안, 베이시스 0 초과하는 날만의 평균 // 3일 동안, 베이시스 0 미만하는 날만의 평균 이렇게 만들려고 하는데 답변해주신대로 돌려봐도 잘 안되고 있습니다. 똑같은 논리로 3일간의 양봉, 음봉 숫자, 평균을 구하는건 잘 됐습니다. 답변해주신 수식도 아래의 예시와 같이 정정 부탁드립니다ㅜㅜ 감사합니다! <<<<<<<<<<<<<<<<<<<( 예시 )양봉 음봉 3일간 종가 평균, 횟수>>>>>>>>>>>>>>>>>>>> Var : cnt(0); var : 양봉합(0), 양봉갯수(0), 양봉평균(0); var : 음봉합(0), 음봉갯수(0), 음봉평균(0); var : 기간(3); 양봉합 = 0; 양봉평균 = 0; 양봉갯수 = 0; 음봉합 = 0; 음봉평균 = 0; 음봉갯수 = 0; For cnt = 0 to 기간 - 1 // 0부터 for문 돌리니까 3일을 기준으로 하고싶으면 input에 3을 넣고, 여기서 -1을 해줌 if DayClose(cnt) > DayOpen(cnt) Then { 양봉합 = 양봉합 + DayClose(cnt); 양봉갯수 = 양봉갯수 +1; 양봉평균 = 양봉합/양봉갯수; } Else { 음봉합 = 음봉합 + DayClose(cnt); 음봉갯수 = 음봉갯수 +1; 음봉평균 = 음봉합/음봉갯수; } Plot1(양봉합,"양봉합"); plot2(양봉갯수, "양봉갯수"); plot3(양봉평균, "양봉평균"); //Plot2(음봉합[0],"음봉합"); <<<<<<<<<<<<<<<<답변수식 정정 부탁드립니다.>>>>>>>>>>>>>>> DayClose,dayhigh,daylow,dayopen 함수는 기본차트 값만 리턴하는 함수입니다. 참조데이타에서는 closed,highd,lowD,openD함수를 이용하셔야 합니다. Var : cnt(0); var : 콘탱고BS합(0), 콘탱고BS갯수(0), 콘탱고BS평균(0); var : 백워데이션BS합(0), 백워데이션BS갯수(0), 백워데이션BS평균(0); Var : BASIS(0); Input : 기간(3); 콘탱고BS합 = 0; 콘탱고BS평균 = 0; 콘탱고BS갯수 = 0; 백워데이션BS합 = 0; 백워데이션BS평균 = 0; 백워데이션BS갯수 = 0; BASIS = C-data2(C); For cnt = 0 to 기간-1 //설정 기간동안 for문 돌림 (input에 3입력하면 0부터 포문이 돌기때문에 4가 됨. 그래서 -1해줌) { if BASIS > 0 Then // 베이시스가 0 초과면 (콘탱고가 나오면) { 콘탱고BS합 = 콘탱고BS합 + (data1(dayclose(cnt))-data2(CloseD(cnt))); // 기간 내 콘탱고 수치를 누적해줌 콘탱고BS갯수 = 콘탱고BS갯수 +1; // 기간 내 콘탱고 횟수 카운트 콘탱고BS평균 = 콘탱고BS합/콘탱고BS갯수; // 기간 내 콘탱고 평균 } Else { 백워데이션BS합 = 백워데이션BS합 + (data1(dayclose(cnt))-data2(CloseD(cnt))); // 기간 내 백워데이션 수치를 누적해줌 백워데이션BS갯수 = 백워데이션BS갯수 +1; // 기간 내 백워데이션 횟수 카운트 백워데이션BS평균 = 백워데이션BS합/백워데이션BS갯수; // 기간 내 백워데이션 평균 } } Plot1(콘탱고BS합,"콘탱고BS합"); plot2(콘탱고BS갯수, "콘탱고BS갯수"); plot3(콘탱고BS평균, "콘탱고BS평균"); //Plot4(백워데이션BS합,"백워데이션BS합"); 즐거운 하루되세요 > 퀀트드래곤 님이 쓴 글입니다. > 제목 : 특정일간의 베이시스 참조 지표 > // 베이시스의 평균을 표시해주는 차트를 만들었는데 잘 안되네요. // 3일 동안, 베이시스 0 초과하는 날만의 평균 // 3일 동안, 베이시스 0 미만하는 날만의 평균 // 수식은 아래와 같습니다. // 논리는 맞는거같은데 문법이 틀린거같아요. 데이터를 불러오지 못하네요. // 특히 "콘탱고BS합"에 데이터2의 전일자(혹은 이전 봉들)의 데이터를 포문으로도 못 불러오는거같아요. // 정정 부탁드립니다. Var : cnt(0); var : 콘탱고BS합(0), 콘탱고BS갯수(0), 콘탱고BS평균(0); var : 백워데이션BS합(0), 백워데이션BS갯수(0), 백워데이션BS평균(0); Var : BASIS(0); Input : 기간(3); 콘탱고BS합 = 0; 콘탱고BS평균 = 0; 콘탱고BS갯수 = 0; 백워데이션BS합 = 0; 백워데이션BS평균 = 0; 백워데이션BS갯수 = 0; BASIS = C-data2(C); For cnt = 0 to 기간-1 //설정 기간동안 for문 돌림 (input에 3입력하면 0부터 포문이 돌기때문에 4가 됨. 그래서 -1해줌) if BASIS > 0 Then // 베이시스가 0 초과면 (콘탱고가 나오면) { 콘탱고BS합 = 콘탱고BS합 + (data1(dayclose(cnt))-data2(DayClose(cnt))); // 기간 내 콘탱고 수치를 누적해줌 콘탱고BS갯수 = 콘탱고BS갯수 +1; // 기간 내 콘탱고 횟수 카운트 콘탱고BS평균 = 콘탱고BS합/콘탱고BS갯수; // 기간 내 콘탱고 평균 } Else { 백워데이션BS합 = 백워데이션BS합 + (data1(dayclose(cnt))-data2(DayClose(cnt))); // 기간 내 백워데이션 수치를 누적해줌 백워데이션BS갯수 = 백워데이션BS갯수 +1; // 기간 내 백워데이션 횟수 카운트 백워데이션BS평균 = 백워데이션BS합/백워데이션BS갯수; // 기간 내 백워데이션 평균 } Plot1(콘탱고BS합,"콘탱고BS합"); plot2(콘탱고BS갯수, "콘탱고BS갯수"); plot3(콘탱고BS평균, "콘탱고BS평균"); //Plot4(백워데이션BS합,"백워데이션BS합");
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-08-11 09:27:38

안녕하세요 예스스탁입니다. 올리신 내용은 3일이 아닌 3봉 기준입니다. 기존에 답변드린 수식은 3일기준이고 처음에 올리신 내용도 각 데이타의 일간값을 이용하는 수식이었습니다. N개봉을 기준으로 하시면 아래와 같이 작성하시면 됩니다. Var : cnt(0); var : 콘탱고BS합(0), 콘탱고BS갯수(0), 콘탱고BS평균(0); var : 백워데이션BS합(0), 백워데이션BS갯수(0), 백워데이션BS평균(0); var : Basis(0); Input : 기간(3); 콘탱고BS합 = 0; 콘탱고BS평균 = 0; 콘탱고BS갯수 = 0; 백워데이션BS합 = 0; 백워데이션BS평균 = 0; 백워데이션BS갯수 = 0; Basis = C-data2(C); For cnt = 0 to 기간-1 //설정 기간동안 for문 돌림 (input에 3입력하면 0부터 포문이 돌기때문에 4가 됨. 그래서 -1해줌) { if Basis[cnt] > 0 Then // 베이시스가 0 초과면 (콘탱고가 나오면) { 콘탱고BS합 = 콘탱고BS합 + basis[cnt]; // 기간 내 콘탱고 수치를 누적해줌 콘탱고BS갯수 = 콘탱고BS갯수 +1; // 기간 내 콘탱고 횟수 카운트 콘탱고BS평균 = 콘탱고BS합/콘탱고BS갯수; // 기간 내 콘탱고 평균 } Else { 백워데이션BS합 = 백워데이션BS합 + basis[cnt]; // 기간 내 백워데이션 수치를 누적해줌 백워데이션BS갯수 = 백워데이션BS갯수 +1; // 기간 내 백워데이션 횟수 카운트 백워데이션BS평균 = 백워데이션BS합/백워데이션BS갯수; // 기간 내 백워데이션 평균 } } Plot1(콘탱고BS합,"콘탱고BS합"); plot2(콘탱고BS갯수, "콘탱고BS갯수"); plot3(콘탱고BS평균, "콘탱고BS평균"); Plot4(백워데이션BS합,"백워데이션BS합"); Plot5(백워데이션BS갯수,"백워데이션BS합"); Plot6(백워데이션BS평균,"백워데이션BS합"); 즐거운 하루되세요 > 퀀트드래곤 님이 쓴 글입니다. > 제목 : [재질문드립니다2]BASIS 차트 > 안녕하세요 번번히 죄송합니다. 아래 답변과 같이 고쳤는데도 전혀 무관한 수치가 찍히고있네요ㅜㅜ (우선 콘탱고 부분만 PLOT으로 찍어보고 있습니다) 검증은 plot1(C-data2(C),"베이시스"); PlotBaseLine1(0); 이렇게 지표를 따로 만들어서 하나하나 계산해보고있습니다. <<<<<<<<<<<<<<<<<<<<<<<<<<<답변>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 안녕하세요 예스스탁입니다. 해당 수식에서 if BASIS > 0 Then 내용은 불필요합니다. 해당 내용을 (data1(dayclose(cnt))-data2(CloseD(cnt))) > 0 로 대체하시면 됩니다. Var : cnt(0); var : 콘탱고BS합(0), 콘탱고BS갯수(0), 콘탱고BS평균(0); var : 백워데이션BS합(0), 백워데이션BS갯수(0), 백워데이션BS평균(0); Input : 기간(3); 콘탱고BS합 = 0; 콘탱고BS평균 = 0; 콘탱고BS갯수 = 0; 백워데이션BS합 = 0; 백워데이션BS평균 = 0; 백워데이션BS갯수 = 0; For cnt = 0 to 기간-1 //설정 기간동안 for문 돌림 (input에 3입력하면 0부터 포문이 돌기때문에 4가 됨. 그래서 -1해줌) { if (data1(dayclose(cnt))-data2(CloseD(cnt))) > 0 Then // 베이시스가 0 초과면 (콘탱고가 나오면) { 콘탱고BS합 = 콘탱고BS합 + (data1(dayclose(cnt))-data2(CloseD(cnt))); // 기간 내 콘탱고 수치를 누적해줌 콘탱고BS갯수 = 콘탱고BS갯수 +1; // 기간 내 콘탱고 횟수 카운트 콘탱고BS평균 = 콘탱고BS합/콘탱고BS갯수; // 기간 내 콘탱고 평균 } Else { 백워데이션BS합 = 백워데이션BS합 + (data1(dayclose(cnt))-data2(CloseD(cnt))); // 기간 내 백워데이션 수치를 누적해줌 백워데이션BS갯수 = 백워데이션BS갯수 +1; // 기간 내 백워데이션 횟수 카운트 백워데이션BS평균 = 백워데이션BS합/백워데이션BS갯수; // 기간 내 백워데이션 평균 } } Plot1(콘탱고BS합,"콘탱고BS합"); plot2(콘탱고BS갯수, "콘탱고BS갯수"); plot3(콘탱고BS평균, "콘탱고BS평균"); Plot4(백워데이션BS합,"백워데이션BS합"); Plot5(백워데이션BS갯수,"백워데이션BS합"); Plot6(백워데이션BS평균,"백워데이션BS합"); 즐거운 하루되세요 > 퀀트드래곤 님이 쓴 글입니다. > 제목 : [재질문드립니다]BASIS 차트 > 아래와같이 답변을 받아서 수정해보았는데도 아직 제대로 구현이 안되고있습니다. // 3일 동안, 베이시스 0 초과하는 날만의 평균 // 3일 동안, 베이시스 0 미만하는 날만의 평균 이렇게 만들려고 하는데 답변해주신대로 돌려봐도 잘 안되고 있습니다. 똑같은 논리로 3일간의 양봉, 음봉 숫자, 평균을 구하는건 잘 됐습니다. 답변해주신 수식도 아래의 예시와 같이 정정 부탁드립니다ㅜㅜ 감사합니다! <<<<<<<<<<<<<<<<<<<( 예시 )양봉 음봉 3일간 종가 평균, 횟수>>>>>>>>>>>>>>>>>>>> Var : cnt(0); var : 양봉합(0), 양봉갯수(0), 양봉평균(0); var : 음봉합(0), 음봉갯수(0), 음봉평균(0); var : 기간(3); 양봉합 = 0; 양봉평균 = 0; 양봉갯수 = 0; 음봉합 = 0; 음봉평균 = 0; 음봉갯수 = 0; For cnt = 0 to 기간 - 1 // 0부터 for문 돌리니까 3일을 기준으로 하고싶으면 input에 3을 넣고, 여기서 -1을 해줌 if DayClose(cnt) > DayOpen(cnt) Then { 양봉합 = 양봉합 + DayClose(cnt); 양봉갯수 = 양봉갯수 +1; 양봉평균 = 양봉합/양봉갯수; } Else { 음봉합 = 음봉합 + DayClose(cnt); 음봉갯수 = 음봉갯수 +1; 음봉평균 = 음봉합/음봉갯수; } Plot1(양봉합,"양봉합"); plot2(양봉갯수, "양봉갯수"); plot3(양봉평균, "양봉평균"); //Plot2(음봉합[0],"음봉합"); <<<<<<<<<<<<<<<<답변수식 정정 부탁드립니다.>>>>>>>>>>>>>>> DayClose,dayhigh,daylow,dayopen 함수는 기본차트 값만 리턴하는 함수입니다. 참조데이타에서는 closed,highd,lowD,openD함수를 이용하셔야 합니다. Var : cnt(0); var : 콘탱고BS합(0), 콘탱고BS갯수(0), 콘탱고BS평균(0); var : 백워데이션BS합(0), 백워데이션BS갯수(0), 백워데이션BS평균(0); Var : BASIS(0); Input : 기간(3); 콘탱고BS합 = 0; 콘탱고BS평균 = 0; 콘탱고BS갯수 = 0; 백워데이션BS합 = 0; 백워데이션BS평균 = 0; 백워데이션BS갯수 = 0; BASIS = C-data2(C); For cnt = 0 to 기간-1 //설정 기간동안 for문 돌림 (input에 3입력하면 0부터 포문이 돌기때문에 4가 됨. 그래서 -1해줌) { if BASIS > 0 Then // 베이시스가 0 초과면 (콘탱고가 나오면) { 콘탱고BS합 = 콘탱고BS합 + (data1(dayclose(cnt))-data2(CloseD(cnt))); // 기간 내 콘탱고 수치를 누적해줌 콘탱고BS갯수 = 콘탱고BS갯수 +1; // 기간 내 콘탱고 횟수 카운트 콘탱고BS평균 = 콘탱고BS합/콘탱고BS갯수; // 기간 내 콘탱고 평균 } Else { 백워데이션BS합 = 백워데이션BS합 + (data1(dayclose(cnt))-data2(CloseD(cnt))); // 기간 내 백워데이션 수치를 누적해줌 백워데이션BS갯수 = 백워데이션BS갯수 +1; // 기간 내 백워데이션 횟수 카운트 백워데이션BS평균 = 백워데이션BS합/백워데이션BS갯수; // 기간 내 백워데이션 평균 } } Plot1(콘탱고BS합,"콘탱고BS합"); plot2(콘탱고BS갯수, "콘탱고BS갯수"); plot3(콘탱고BS평균, "콘탱고BS평균"); //Plot4(백워데이션BS합,"백워데이션BS합"); 즐거운 하루되세요 > 퀀트드래곤 님이 쓴 글입니다. > 제목 : 특정일간의 베이시스 참조 지표 > // 베이시스의 평균을 표시해주는 차트를 만들었는데 잘 안되네요. // 3일 동안, 베이시스 0 초과하는 날만의 평균 // 3일 동안, 베이시스 0 미만하는 날만의 평균 // 수식은 아래와 같습니다. // 논리는 맞는거같은데 문법이 틀린거같아요. 데이터를 불러오지 못하네요. // 특히 "콘탱고BS합"에 데이터2의 전일자(혹은 이전 봉들)의 데이터를 포문으로도 못 불러오는거같아요. // 정정 부탁드립니다. Var : cnt(0); var : 콘탱고BS합(0), 콘탱고BS갯수(0), 콘탱고BS평균(0); var : 백워데이션BS합(0), 백워데이션BS갯수(0), 백워데이션BS평균(0); Var : BASIS(0); Input : 기간(3); 콘탱고BS합 = 0; 콘탱고BS평균 = 0; 콘탱고BS갯수 = 0; 백워데이션BS합 = 0; 백워데이션BS평균 = 0; 백워데이션BS갯수 = 0; BASIS = C-data2(C); For cnt = 0 to 기간-1 //설정 기간동안 for문 돌림 (input에 3입력하면 0부터 포문이 돌기때문에 4가 됨. 그래서 -1해줌) if BASIS > 0 Then // 베이시스가 0 초과면 (콘탱고가 나오면) { 콘탱고BS합 = 콘탱고BS합 + (data1(dayclose(cnt))-data2(DayClose(cnt))); // 기간 내 콘탱고 수치를 누적해줌 콘탱고BS갯수 = 콘탱고BS갯수 +1; // 기간 내 콘탱고 횟수 카운트 콘탱고BS평균 = 콘탱고BS합/콘탱고BS갯수; // 기간 내 콘탱고 평균 } Else { 백워데이션BS합 = 백워데이션BS합 + (data1(dayclose(cnt))-data2(DayClose(cnt))); // 기간 내 백워데이션 수치를 누적해줌 백워데이션BS갯수 = 백워데이션BS갯수 +1; // 기간 내 백워데이션 횟수 카운트 백워데이션BS평균 = 백워데이션BS합/백워데이션BS갯수; // 기간 내 백워데이션 평균 } Plot1(콘탱고BS합,"콘탱고BS합"); plot2(콘탱고BS갯수, "콘탱고BS갯수"); plot3(콘탱고BS평균, "콘탱고BS평균"); //Plot4(백워데이션BS합,"백워데이션BS합");