커뮤니티

yt3.0에서는 작동되는데, 3.1에서는 안됩니다.

프로필 이미지
회원
2008-11-05 16:32:37
703
글번호 17918
답변완료
var: cnt(0), 저점(0), 고점(0), 이평(0); cnt = 0; 이평 = ma(c,10); for var1=0 to 10{ if sdate==entrydate(var1) Then cnt = cnt+1; } if cnt==0 then{ if 저점==0 or 저점>이평 Then{ 저점=이평; If 저점*1.05< c then buy("매수", atmarket,def, 1); } } if cnt > 0 then{ if entryprice(1) < c Then buy("22222", AtMarket,def, 1); } if CrossDown(ma(c,5),ma(c,20)) Then ExitLong("매수 청산", AtMarket,1); 아까 문의 드린건데요...버전을 바꾸면 실행이 안되네요, 옵션에다 적용해 보는데 yt3.0에서는 작동되는데, 3.1에서는 안됩니다. 설명좀 해주세요
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2008-11-06 09:27:42

안녕하세요 예스스탁입니다. 3.0버전에서는 어떤 값이 N/A면 그 값을 할당하지 않았습니다. 3.1버전은 그 부분을 체킹하고 수식에서 이용가능한 체계이므로 그 부분이 할당이 됩니다. 식상에서 if 저점==0 or 저점>이평 Then{ 저점=이평; 이평값은 10이평이므로 10봉이후에 계산됩니다. 첫봉에서 보면 저점은 0값이고 이평은 N/A로 저점값에 N/A가 할당이 됩니다. 그리고 봉이 계속 흘러 이평값이 계산되며 N/A > 이평값으로 비교가 되므로 서로 비교 불가한 항목이므로 저점에 계산 N/A가 저장되어 이후 계속 그 값을 유지하게 됩니다. 식을 수정해 드립니다. if cnt==0 and index >= 10 then{ 이동평균이 10이평이므로 index가 10이후부터 계산되게 변경했습니다. 이렇게 작성하시면 3.0, 3.1에서 동일한 결과를 가져옵니다. input : P(10); var: cnt(0), 저점(0), 고점(0), 이평(0); 이평 = ma(c,P); if date != date[1] Then 저점 = 이평; cnt = 0; for var1=0 to 10{ if sdate==entrydate(var1) Then cnt = cnt+1; } if cnt==0 and index >= P then{ if 저점==0 or 저점>이평 Then{ 저점=이평; If 저점*1.05< c then buy("매수", atmarket,def, 1); } } if cnt > 0 then{ if entryprice(1) < c Then buy("22222", AtMarket,def, 1); } 즐거운 하루되세요 > CJ_coco 님이 쓴 글입니다. > 제목 : yt3.0에서는 작동되는데, 3.1에서는 안됩니다. > var: cnt(0), 저점(0), 고점(0), 이평(0); cnt = 0; 이평 = ma(c,10); for var1=0 to 10{ if sdate==entrydate(var1) Then cnt = cnt+1; } if cnt==0 then{ if 저점==0 or 저점>이평 Then{ 저점=이평; If 저점*1.05< c then buy("매수", atmarket,def, 1); } } if cnt > 0 then{ if entryprice(1) < c Then buy("22222", AtMarket,def, 1); } if CrossDown(ma(c,5),ma(c,20)) Then ExitLong("매수 청산", AtMarket,1); 아까 문의 드린건데요...버전을 바꾸면 실행이 안되네요, 옵션에다 적용해 보는데 yt3.0에서는 작동되는데, 3.1에서는 안됩니다. 설명좀 해주세요