커뮤니티

For문 관련 문의

프로필 이미지
콩형
2015-12-29 14:55:19
130
글번호 93901
답변완료
예스랭귀지 도움말 69페이지에 있는 for문 관련 질문드립니다. 여기서 Vaule1을 for문을 돌리는 이유를 알지를 못하겠네요. 0 to 9로 해도, 0 to 2로 해도 0 to 100으로 해도 결과는 똑같이 나오는데 vaule1값 을 for문에 넣어서 돌리는 이유가 먼지요? Messagelog를 찍어봐도 value1에는 그냥 for문의 마지막 숫자+1이 찍히는 이유는 무엇인가요? 감사합니다. Var: Entry(0); Entry = 0; for Value1 = 0 to 9 { if EntryDate(Value1) == sDate then Entry = Entry+1; } if L<L[1] and Entry<1 Then Buy("B", AtLimit,L-PriceScale); If H>H[1] Then Exitlong("EX", AtLimit, H+PriceScale); Messagelog("%.f, %.f, %.f,%.2f,%.2f,%.2f,%.2f", value1, Entry, EntryDate, L,L[1], H, H[1]);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-12-29 15:53:12

안녕하세요 예스스탁입니다. Entry = 0; for Value1 = 0 to 9{ if EntryDate(Value1) == sDate then Entry = Entry+1; } 위 문장은 당일 진입횟수를 카운트하는 식입니다. for Value1 = 0 to 9 위 문장은 0부터 9까지 1씩 증가하면서 value1에 해당값을 저장한다는 내용입니다. value1에 값이 한번 저장되면 아래 문장이 수행됩니다. if EntryDate(Value1) == sDate then Entry = Entry+1; Entrydate는 진입날짜입니다 Entrydate(0)은 현재 진입중인 포지션이 있으면 해당 진입의 날짜를 Entrydate(1)은 이전의 거래완료(청산완료)된 거래 중 현재봉에서 가장 가까운 진입의 날짜를 Entrydate(2)은 이전의 거래완료(청산완료)된 거래 중 현재봉에서 두번째 가까운 진입의 날짜를 Entrydate(3)은 이전의 거래완료(청산완료)된 거래 중 현재봉에서 세번째 가까운 진입의 날짜를 순서대로 가져옵니다. 그러므로 위 식은 0~9 즉 가장최근의 10개의 진입의 날짜를 가져와 현재봉의 날짜와 비교해 오늘 진입이 몇번인지 카운트 합니다. 0 to 9를 0 to 2로 해도 0 to 100으로 해도 결과가 같은것은 진입식이 하루에 한번만(Entry < 1) 발생하게 되어 있기 때문입니다. if L<L[1] and Entry < 1 Then Buy("B", AtLimit,L-PriceScale); 당일 진입횟수를 지정할 때 for문의 최종값은 진입횟수 이상으로만 지정하면 됩니다. 즉 0 to 9에서 9는 큰 의미가 있는 값은 아니고 당일진입횟수가 1이면 0 to 1이상으로만 지정하면 되는데 수식에서 당일진입횟수를 조절할수 있으므로 넉넉히 9로 지정한 내용입니다. 진입식에서 entry < 1을 entry < 2나 entry < 3으로 변경해 적용해 보시면 메세지로그에 2나 3의 값을 보실수 있습니다. 즐거운 하루되세요 > 콩형 님이 쓴 글입니다. > 제목 : For문 관련 문의 > 예스랭귀지 도움말 69페이지에 있는 for문 관련 질문드립니다. 여기서 Vaule1을 for문을 돌리는 이유를 알지를 못하겠네요. 0 to 9로 해도, 0 to 2로 해도 0 to 100으로 해도 결과는 똑같이 나오는데 vaule1값 을 for문에 넣어서 돌리는 이유가 먼지요? Messagelog를 찍어봐도 value1에는 그냥 for문의 마지막 숫자+1이 찍히는 이유는 무엇인가요? 감사합니다. Var: Entry(0); Entry = 0; for Value1 = 0 to 9 { if EntryDate(Value1) == sDate then Entry = Entry+1; } if L<L[1] and Entry<1 Then Buy("B", AtLimit,L-PriceScale); If H>H[1] Then Exitlong("EX", AtLimit, H+PriceScale); Messagelog("%.f, %.f, %.f,%.2f,%.2f,%.2f,%.2f", value1, Entry, EntryDate, L,L[1], H, H[1]);