커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[재질문드립니다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합");
프로필 이미지
퀀트드래곤
2021-08-10
1548
글번호 151420
지표
답변완료

부탁드립니다

$,안녕하세요 답변질문 73580 확인바랍니다. 감사합니다.
프로필 이미지
크라켄
2021-08-10
1498
글번호 151416
지표
답변완료

[재질문드립니다]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합");
프로필 이미지
퀀트드래곤
2021-08-10
1181
글번호 151415
지표
답변완료

시스템식 문의 드립니다.

지수선물 적용예정입니다 당일 A1번째봉 종가 > 당일 A2번째봉 종가 > 당일 A3번째봉 종가 조건이 성립되는 경우 NN번째봉 종가에서 매수청산 하라 당일 A1번째봉 종가 < 당일 A2번째봉 종가 < 당일 A3번째봉 종가 조건이 성립되는 경우 MM번째봉 종가에서 매도청산 하라 그럼 신속한 답변 바랍니다
프로필 이미지
우리상향
2021-08-10
1059
글번호 151413
시스템
답변완료

부탁드립니다.

안녕하세요...거래량지표의 라인부탁드립니다. 거래량지표의 장시작첫봉의 종가(고점)라인 첫봉의70% 라인 첫봉의50%라인 첫봉의20%라인 plot 1 첫봉의종가(고점)라인 plot 2 첫봉의70% 라인 plot 3 첫봉의50% 라인 plot 4 첫봉의20% 라인 수고하세요...꾸벅
프로필 이미지
보인다
2021-08-10
1133
글번호 151410
지표
답변완료

수정부탁드립니다

안녕하세요! 아래수식은 지난번에 만들어 주신건데 일봉에서 사용할 수 있도록 수정을 부탁드립니다! 다시 한번 감사드립니다! Input : Af(0.02), MaxAf(0.2); Var : direction(0), sar1(0), afval(0), ep(0),lowval(0),highval(0),count(0); if count == 0 or Bdate != Bdate[1] then //변수들의 초기화 { highval = High; lowval = Low; direction = 0; sar1 = c; afval = af; ep = 0; count = 1; } if(ep != 0 ) then // 추세가 진행중 { if(direction == 1) then // 상승추세이면 { ep = highval; sar1 = sar1 + afval*(ep-sar1); // 상승추세에서 SAR값 계산 if(high > highval) then // 신고가 발생 { highval = high; afval = afval+Af; // 상승추세에서 신고가가 발생했으므로 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } if( low < sar1) then // 추세변경(상승->하락) { // 다음 SAR값을 계산할 때 필요한 전SAR값은 하락추세로 전환되기 직전의 direction = -1; // 최고가를 사용하므로 sar1 = ep (ep에는 highval 들어있다) sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화 afval = 0; ep = 0; lowval = low; } } else // 하락 추세 { ep = lowval; // 하락추세에서는 EP로 저가 사용 sar1 = sar1 + afval*(ep-sar1); if(low < lowval) then // 신저가 발생 { lowval = low; afval = afval + Af; if( afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } if(high > sar1) then // 추세 변경(하락->상승) { // 다음 SAR 값을 계산할 때 필요한 전SAR값은 상승추세로 전환되기 직전의 direction = 1; // 최저가를 사용하므로 sar1 = ep (ep에는 lowval값이 들어있다) sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화 afval = 0; ep = 0; highval = high; } } } else if(sar1 != 0 && ep == 0) then //추세가 변경된후 첫번째 SAR계산 { if(direction == 1) then // 상승 추세 { ep = highval; // 상승추세에서는 신고가를 EP로 사용하므로 afval = Af; // 가속변수의 초기값인 AF(0.02) 적용 sar1 = sar1 + afval*(ep-sar1); if ( high > highval) then // 신고가가 발생 { Highval = high; afval = afval + Af; // 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } } else // 하락추세 { ep = lowval; afval = Af; // 가속변수의 초기값인 AF(0.02) 적용 sar1 = sar1 + afval*(ep-sar1);// 하락추세에서 SAR 계산 if(low < lowval) then // 신저가 발생 { lowval = low; afval = afval + Af; // 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } } } else // SAR 첨 시작 { if direction == 0 then // 추세가 없으므로 { if(c > c[1]) then // 상승추세로 시작 direction = 1; else if( c < c[1]) then // 하락추세로 시작 direction = -1; } else if direction == 1 then // 상승추세(추세변경이 일어날 경우 SAR 계산하기 시작) { if(c < c[1]) then // 추세 변경 (상승->하락) SAR 계산하기 시작 { direction = -1; sar1 = highval; // 하락추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최고가를 사용하므로 } } else if direction == -1 then // 하락추세(추세변경이 일어날 경우 SAR 계산하기 시작) { if( c > c[1]) then // 추세 변경 (하락->상승) SAR 계산하기 시작 { direction = 1; sar1 = lowval; // 상승추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최저가를 사용하므로 } } lowval = min(low, lowval); // 추세 변경시 전 SAR값으로 최고가나 최저가가 필요하므로 highval = max(high,highval); // low, high를 전의 최고가, 최저가와 비교하여 최고가, 최저가를 저장 } //처음 시작할 때 다음 추세 변경이 일어날 때까지 SAR는 invalid #if(sar1 != 0) then # User_Func_Sar = sar1; if sar1 > sar1[1] Then plot1(sar1,"파리볼릭",BLUE); else plot1(sar1,"파리볼릭",blue); Plot2(C,"종가");
프로필 이미지
qha71
2021-08-10
1317
글번호 151408
지표
답변완료

부탁 드립니다.

도움에 감사 드립니다. 체결강도, 매수체결합(또는 매수 체결량), 매도체결합(또는 매도 체결량)을 수식으로 나타 낼수 있는지요?
프로필 이미지
yes
2021-08-10
1259
글번호 151405
지표
답변완료

수식작성 부탁드립니다.

//Var 매수Ma3(0), 매도Ma3(0); //매수Ma3 = Iff(MA(Close, 5)[1] <MA(Close, 20)[1] OR MA(Close, 20)[1] < MA(Close, 60)[1]) AND (MA(Close, 5) > MA(Close, 20) AND MA(Close, 20) > MA(Close, 60) ); //매도Ma3 = Iff(MA(Close, 5)[1] > MA(Close, 20)[1] OR MA(Close, 20)[1] > MA(Close, 60)[1]) AND (MA(Close, 5) < MA(Close, 20) AND MA(Close, 20) < MA(Close, 60) ); 수고많으십니다 오류수정 부탁드립니다
프로필 이미지
ksh003
2021-08-10
1002
글번호 151404
시스템
답변완료

문의드립니다.

아래조건의 수식 좀 부탁드립니다. 감사합니다. 매수 청산 후 10봉이네 매수조건으로 매수 재진입시 청산가격에서 0.5% 이상 가격에서만 진입 가능.(단 매도조건 발생시 10봉이네라도 다른 추가조건없이 진입가능) 매도 청산 후 10봉이네 매도조건으로 매도 재진입시 청산가격에서 -0.5% 이하 가격에서만 진입 가능.(단 매수조건 발생시 10봉이네라도 다른 추가조건없이 진입가능)
프로필 이미지
풍경
2021-08-10
1261
글번호 151403
시스템
답변완료

목표청산오류문의

목표청산수익을 이용하여 차트상에는 목표수익에 도달하여 청산된것으로 나오는데 성능보고서상에는 다 손실로 기록되어있어 문의드립니다. 수식을 사용하지 않았고 MACD 기준선 시스템을 사용했으며 설장상 강제청산 탭에서 목표수익은 50Pt로 체크하였습니다.
프로필 이미지
도미
2021-08-09
1432
글번호 151399
시스템