커뮤니티

수식문의

프로필 이미지
stereo
2011-04-19 23:21:09
827
글번호 37771
답변완료
30분봉 차트를 열어놓고 시가 기준으로 일봉의 90일 이평선이나 120일 이평선을 읽어들이는데 아무런 문제가 없습니다. 그러나 20분봉 차트를 열어 놓고 진행하면 90일 이평선은 제데로 읽어들이는데 120일 이평선 값은 -1로 나옵니다. 프로그램상은 문제가 없는 것 같은데 아래 프로그램 실행해봐 주시고 어느 부분을 수정해야 하는지 조언 부탁 드립니다. Var:i(0),SUM90(0),MALINE90(0),SUM120(0),MALINE120(0); //이평선 90; if sdate==20110419 and date==20110419 Then {For i=0 to 89 Begin SUM90=SUM90+DayOpen(i); End}; MALINE90=SUM90/90; //이평선 120; if sdate==20110419 and date==20110419 Then {For i=0 to 119 Begin SUM120=SUM120+DayOpen(i); End}; MALINE120=SUM120/120; if crossup(C,MALINE90) or crossup(C,MALINE120) then Buy(); if sdate==20110419 and date==20110419 then MessageLog("%.0f,%.0f,%.0f",dayindex,MALINE90,MALINE120); i=0; Sum90=0; SUM120=0;
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-04-20 14:57:32

안녕하세요 예스스탁입니다. 분봉차트에 일봉데이터는 차트의 첫봉의 날짜에 +99치의 일봉데이터가 제공됩니다. 그러므로 기본차트를 최대한 많이 조회하셔야 합니다. 5000개로 조회하신 후 적용하시면 됩니다. 테스트 결과 값이 정확히 발생합니다. 수식을 조금 수정했습니다. 값을 모으는 변수의 경우 모으는 작업이전에 0으로 셋팅하셔야 합니다. Var:i(0),SUM90(0),MALINE90(0),SUM120(0),MALINE120(0); Sum90=0; SUM120=0; if sdate==20110419 and date==20110419 Then{ For i=0 to 89 Begin SUM90=SUM90+DayOpen(i); End; } MALINE90=SUM90/90; if sdate==20110419 and date==20110419 Then{ For i=0 to 119 Begin SUM120=SUM120+DayOpen(i); End; } MALINE120=SUM120/120; if crossup(C,MALINE90) or crossup(C,MALINE120) then Buy(); if sdate==20110419 and date==20110419 then MessageLog("%.0f,%.0f,%.0f",dayindex,MALINE90,MALINE120); 즐거운 하루되세요 > stereo 님이 쓴 글입니다. > 제목 : 수식문의 > 30분봉 차트를 열어놓고 시가 기준으로 일봉의 90일 이평선이나 120일 이평선을 읽어들이는데 아무런 문제가 없습니다. 그러나 20분봉 차트를 열어 놓고 진행하면 90일 이평선은 제데로 읽어들이는데 120일 이평선 값은 -1로 나옵니다. 프로그램상은 문제가 없는 것 같은데 아래 프로그램 실행해봐 주시고 어느 부분을 수정해야 하는지 조언 부탁 드립니다. Var:i(0),SUM90(0),MALINE90(0),SUM120(0),MALINE120(0); //이평선 90; if sdate==20110419 and date==20110419 Then {For i=0 to 89 Begin SUM90=SUM90+DayOpen(i); End}; MALINE90=SUM90/90; //이평선 120; if sdate==20110419 and date==20110419 Then {For i=0 to 119 Begin SUM120=SUM120+DayOpen(i); End}; MALINE120=SUM120/120; if crossup(C,MALINE90) or crossup(C,MALINE120) then Buy(); if sdate==20110419 and date==20110419 then MessageLog("%.0f,%.0f,%.0f",dayindex,MALINE90,MALINE120); i=0; Sum90=0; SUM120=0;