답변완료
3.1 함수호출에 관한 문의 및 기타사항들
3.1 베타에 관한 몇가지 의문사항에 관해 문의 및 건의 드리고자합니다.
지표에서 DayIndex()==0 인 경우만 함수를 호출하고자 다음과 같은 프로그램을 작성하였으나 DayIndex가 0 이 아닌 경우도 함수를 호출하는데 버그(지표의 경우는 봉의 데이터가 바뀌는 순간 동작되는 것으로 알고 있음, 함수는 지표, 강조 또는 시스템에서 호출할때만 동작되어야하는데 현재는 한번 호출된 함수가 지표처럼 데이터의 변화 발생시 호출되는 것 같음->함수의 호출 버그)인지 아니면 제가 함수호출에 관해서 이해를 못하고 있는지 궁금합니다. 만약 함수호출버그라면 글쎄요..
(FFF함수를 두번 호출한 이유는 TS의 경우 함수호출시 스택구성이 특이해서 여기에서도 그런가 확인하기 위해서..)
또한 Print 문과 MessageLog문의 결과가 다른 이유도 궁금합니다(2.3. 결과 참조).
건의 사항으로는
첫째 : 챠트생성시 조회건수를 "봉" 과 "일"로 구분하면 어쩔가 합니다. 시뮬레이션 부분에서는 상당히 과거 데이터를 참조할 수 있는데 챠트에서는 5000으로 제한해 놓았더군요. 서버에 큰 부하가 안걸린다면 제한을 해제하는 것이 어쩔가 합니다. 2000년에 만들어진 TS에서도 1분봉으로 10년데이터를 참조할 수 있게 되어 "일"로 조회가능하더군요. 물론 TS는 과거 데이터를 클라이언트에 저장하고 있어서 그러긴 합니다만.
둘째 : MessageLog창의 Cell의 다중선택 속성을 on으로 했으면 합니다. MessageLog 창의 결과를 다른 사람과 결과에 대한 정보공유시 선택 복사가 안되어 있어 상당히 불편함을 느낍니다.
셋째 : 욕심부분입니다.. 검증시간의 단축(엄청 걸리네요), Trend Line, 출력기반의 Debugging->Trace 기반, 외부모듈 링크
1. 프로그램 소스( 첨부합니다.)
지표 소스
var : vv(0);
if( DayIndex() == 0 ) then {
Print("IDHBPTest.txt", "---------------%f ", vv);
FFF(1, vv);
Print("IDHBPTest.txt", "---------------%f ", vv);
FFF(2, vv);
Print("IDHBPTest.txt", "---------------%f ", vv);
Print("IDHBPTest.txt", "--------------------------- ");
}
FFF 함수
inputs : id(Numeric), aa(NumericRef);
Print("IDHBPTest.txt", " %2.0f 번째 호출 DayIndex : %f aa : %2.0f aa+1 : %2.0f", id, DayIndex(), aa, aa=aa+1 );
FFF = 0;
2. 결과
2007-03-02 13:00:00 ---------------------------
2007-03-02 14:00:00 1 번째 호출 DayIndex : 1.000000 aa : 2 aa+1 : 3
2007-03-02 14:00:00 2 번째 호출 DayIndex : 1.000000 aa : 3 aa+1 : 4
2007-03-02 15:00:00 1 번째 호출 DayIndex : 2.000000 aa : 4 aa+1 : 5
2007-03-02 15:00:00 2 번째 호출 DayIndex : 2.000000 aa : 5 aa+1 : 6
2007-03-05 09:00:00 ---------------6.000000
2007-03-05 09:00:00 1 번째 호출 DayIndex : 0.000000 aa : 6 aa+1 : 7
2007-03-05 09:00:00 ---------------7.000000
2007-03-05 09:00:00 2 번째 호출 DayIndex : 0.000000 aa : 7 aa+1 : 8
2007-03-05 09:00:00 ---------------8.000000
2007-03-05 09:00:00 ---------------------------
2007-03-05 10:00:00 1 번째 호출 DayIndex : 1.000000 aa : 8 aa+1 : 9
2007-03-05 10:00:00 2 번째 호출 DayIndex : 1.000000 aa : 9 aa+1 : 10
2007-03-05 11:00:00 1 번째 호출 DayIndex : 2.000000 aa : 10 aa+1 : 11
2007-03-05 11:00:00 2 번째 호출 DayIndex : 2.000000 aa : 11 aa+1 : 12
2007-03-05 12:00:00 1 번째 호출 DayIndex : 3.000000 aa : 12 aa+1 : 13
2007-03-05 12:00:00 2 번째 호출 DayIndex : 3.000000 aa : 13 aa+1 : 14
2007-03-05 13:00:00 1 번째 호출 DayIndex : 4.000000 aa : 14 aa+1 : 15
2007-03-05 13:00:00 2 번째 호출 DayIndex : 4.000000 aa : 15 aa+1 : 16
2007-03-05 14:00:00 1 번째 호출 DayIndex : 5.000000 aa : 16 aa+1 : 17
2007-03-05 14:00:00 2 번째 호출 DayIndex : 5.000000 aa : 17 aa+1 : 18
2007-03-05 15:00:00 1 번째 호출 DayIndex : 6.000000 aa : 18 aa+1 : 19
2007-03-05 15:00:00 2 번째 호출 DayIndex : 6.000000 aa : 19 aa+1 : 20
2007-03-06 09:00:00 ---------------20.000000
2007-03-06 09:00:00 1 번째 호출 DayIndex : 0.000000 aa : 20 aa+1 : 21
2007-03-06 09:00:00 ---------------21.000000
2007-03-06 09:00:00 2 번째 호출 DayIndex : 0.000000 aa : 21 aa+1 : 22
2007-03-06 09:00:00 ---------------22.000000
2007-03-06 09:00:00 ---------------------------
3. MessageLog의 결과
- 첨부파일 및 제일 위쪽 그림 참조 바람
2007-07-05
1447
글번호 200273
예스트레이더 (iM증권)
답변완료
3.1 건의사항
(1) 3.1에서요.
차트를 연결선물 30분봉을 2500개 올리고,
Print("test.txt","stime:%.0f time:%.0f di:%.0f",stime,time,dayindex());로 테스트해보면...
2006-09-11 12:30:00 stime:123000 time:125900 di:0
2006-09-11 13:00:00 stime:130000 time:132900 di:1
2006-09-11 13:30:00 stime:133000 time:135900 di:2
2006-09-11 14:00:00 stime:140000 time:142900 di:3
2006-09-11 14:30:00 stime:143000 time:145000 di:4
2006-09-11 15:00:00 stime:150000 time:150100 di:5
2006-09-12 09:00:00 stime:90000 time:92900 di:0
2006-09-12 09:30:00 stime:93000 time:95900 di:1
2006-09-12 10:00:00 stime:100000 time:102900 di:2
2006-09-12 10:30:00 stime:103000 time:105900 di:3
2006-09-12 11:00:00 stime:110000 time:112900 di:4
2006-09-12 11:30:00 stime:113000 time:115900 di:5
2006-09-12 12:00:00 stime:120000 time:122900 di:6
2006-09-12 12:30:00 stime:123000 time:125900 di:7
2006-09-12 13:00:00 stime:130000 time:132900 di:8
2006-09-12 13:30:00 stime:133000 time:135900 di:9
2006-09-12 14:00:00 stime:140000 time:142900 di:10
2006-09-12 14:30:00 stime:143000 time:145000 di:11
...
로 됩니다.
즉, 차트에서 첫봉이 9시 시작봉이 아닌데도, dayindex()는 0으로 들어갑니다.
위와 같은 error는 사실 별 문제는 안됩니다만...
예를 들어서, 장시작시간이 9시가 아니거나 해서 하루 분봉개수가 변동 할 때, 이걸 잘못 다루면...
겉으로는 시스템이 잘 돌아가는것 같아도...
그때부터 엉켜... 예측불허하고 잡아내기 힘든 에러가 발생합니다.
잡아내기 힘들다는건...
데이터만 보면 멀쩡한데, 이게 시스템과 궁합이 맞으면 제대로 돌아가는데...
잘 안맞으면 겉으로만 멀쩡합니다. 이 문제는 아래에 언급한 (4)번만 해결이 되면 사용자 자체적으로 해결도 가능할것 같습니다만...
(2) 시스템성능보고서가 3.0과 달리 창이 반토막으로 잘려서 내용이 다 안보이네요. 매번 마우스로 창크기를 조정해야 하는데, 이거 3.0처럼 다 보이게 하면 안되나요?
(3) 시스템 테스트 할때 "if index>100 then..."을 사용해서 변수에 이상한게 안들어 가도록 주의해야 하는데요. 그러면 시스템 성과보고가 틀려지게 됩니다. 성과보고는 초기기간을 포함한 전기간에 대해서 보고 되는거니까요. 그래서 아예 시스템트레이딩 설정창에서 초기에 건너띄는 봉 갯수를 지정케 하고 이걸 그 창 전체에 global하게 적용할수 있게 하는게 어떨까 합니다.
(4) 변수에 이상한게 들어간걸 프로그램내에서 점검하는건 정말 불가능 한건가요?
예를들어 if var1!="-1.#J" then ...
어쨋든 베타버전인데도 불구하고 3.0보다는 빠르고 더 안정적으로 보입니다.
사용자 편의성도 많이 좋아졌구요.
2007-06-30
1062
글번호 200260
예스트레이더 (iM증권)