커뮤니티
수식문의
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;
이전글