커뮤니티

리딩스타로 옮겼을 때의 오류에 관한 질문

프로필 이미지
sjmom
2007-08-19 09:59:53
1270
글번호 200447
답변완료
cj가 횡포를 부린다든지 수수료체계가 어쩐다든지 하고 왈가왈부해봐야 입만 아플테고 개미가 살려면 또 다른 개미굴을 팔수 밖에 없다고 판단해서 리딩스타로 옮겨봤습니다 문제는 예쓰트레이더 3에서 쓰던 식을 그대로 복사해서 붙였더니 쓸수가 없군요.. 이달안에 옮겨야 하니 정리 될때 까지 질문 하려 합니다.. 수고좀 합시다.. 오류 유형 1, If DataCompress()>2 Then 으로 된 문장에서 발생하는 오류에 대한 정정문장요청 오류메세지 -- 문번에러 잘못된 토큰 : '(' , 올수 있는것 : 'then' 2, 대괄호 용법 오류에 관한 정정문장요청 If (vDate != vDate[1] And DataCompress()>2 And DataCompress()<5) Or (yDate != yDate[1] And DataCompress()>4) Then {aCost = HighCost; bCost = LowCost; cCost = CloseCost; HighCost = High; LowCost = Low; CloseCost = Close; Pivot = (aCost+bCost+cCost)/3;} Else {HighCost = Max(High,HighCost); LowCost = Min(Low,LowCost);} -- DataCompress()>2 에 관한 오류는 지속적으로 지적되고 5번째 줄과 6번째 줄 끝의 대괄호는 잘못된 토큰으로 오류메세지가 납니다. 3-1, crossup (a,b)>0 문장의 오류에 관한 정정문장 요청 오류메세지 __ 숫자값이나 문자열 혹은 그 표현식이 와야 합니다 -- ? -- crossup 이나 crossdown 식은 사용이 안되는 건가요? 3-2, > 0 에서 부등호의 표시도 오류메세지 나옴 오류메세지 -- 연산자 앞뒤 두 데이터의 형태가 같아야 합니다 -- ? -- 이럴땐 어떻게 바꿔야 하는지요 ? 기본적인 것들이 조금씩 달라 진것 같네요.. 없는 넘이 누굴 씹고 앉아 있을 시간이 없습니다.. 살길을 찾아야지요.. 도와주세요..
기타
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2007-08-20 14:40:54

안녕하세요..예스스탁입니다. 문의하신 내용 답변드립니다. 오류 유형 1, If DataCompress()>2 Then 으로 된 문장에서 발생하는 오류에 대한 정정문장요청 오류메세지 -- 문번에러 잘못된 토큰 : '(' , 올수 있는것 : 'then' => If DataCompress >2 Then 위와 같이 수정해 주시면 됩니다. 2, 대괄호 용법 오류에 관한 정정문장요청 If (vDate != vDate[1] And DataCompress()>2 And DataCompress()<5) Or (yDate != yDate[1] And DataCompress()>4) Then {aCost = HighCost; bCost = LowCost; cCost = CloseCost; HighCost = High; LowCost = Low; CloseCost = Close; Pivot = (aCost+bCost+cCost)/3;} Else {HighCost = Max(High,HighCost); LowCost = Min(Low,LowCost);} => 위 식에서도 datacompress() 를 모두 datacompress 로 수정해 주시면 됩니다. 3-1, crossup (a,b)>0 문장의 오류에 관한 정정문장 요청 오류메세지 __ 숫자값이나 문자열 혹은 그 표현식이 와야 합니다 -- ? -- crossup 이나 crossdown 식은 사용이 안되는 건가요? 3-2, > 0 에서 부등호의 표시도 오류메세지 나옴 오류메세지 -- 연산자 앞뒤 두 데이터의 형태가 같아야 합니다 -- ? -- 이럴땐 어떻게 바꿔야 하는지요 ? => 3-1과 3-2는 변수선언을 이전 버전에서는 수치형과 논리형 구분없이 사용하였었는데 신버전에서는 수치형과 논리형을 구분하면서 발생하게 된 현상입니다. 예를들어서 아래와 같이 작성했을때 3.0버전에서는 정상적으로 처리되지만, 3.1이나 리딩스타에서는 처리하지 못합니다. 그 이유는 cond1 변수는 논리형 변수(참이나 거짓값을 리턴받는 변수)인데 수치형으로 선언되어 있기 때문입니다. var : cond1(0); cond1 = CrossUP(a,b); 아래와 같이 변경해 주시면 됩니다. var : cond1(false); cond1 = CrossUp(a,b); 또는 var : cond1(0); cond1 = iff(crossUp(a,b),1,0); 문장에서 부등호가 나오는 것도 마찬가지 입니다. 예를들어 아래와 같이 작성한 경우도 cond1은 논리형 변수인데 수치형으로 선언된 경우에 해당합니다. 따라서 위에서 작성한 문장처럼 바꿔 주시면 정상적으로 처리됩니다. var : cond1(0); cond1 = a > b; 랭귀지 변경에 관한 사항은 저희 예스스탁 홈페이지 첫화면의 공지사항(예스트레이더3.1 기능추가 및 변경사항) 글을 참고하시면 좀더 자세한 내용을 보실 수 있습니다. 감사합니다.