커뮤니티

시스템 오류?

프로필 이미지
idnotbe
2019-10-09 19:11:07
196
글번호 132630
답변완료

첨부 이미지

해외선물 한국투자에서 크루드오일 연결선물로 테스트하고 있습니다. 아래 코드로 첨부파일과 같이 최적화를 진행하면, 최적화를 진행하지 않고 건너뛰는 변수들이 생깁니다. If C < DayOpen - 0.5 Then Sell(); Inputs: FixedStopLossF(0.5); SetStopLoss(FixedStopLossF, PointStop); # 상하한가 근접 청산 전일 정산가 대비 ±10 ($/barrel) # 제한가격 도달 시 5분간 거래 정지 후 재개 If MarketPosition == 1 Then ExitLong("XL_UL", AtLimit, DayClose(1) + 9.8 ); If MarketPosition == -1 Then ExitShort("XS_LL", AtLimit, DayClose(1) - 9.8 ); If sDate > sDate[1] Then SetStopEndofday(53000); If bDate > bDate[1] Then SetStopEndofday(0); 제가 테스트해보기로는 상하한가 근접 청산 코드를 없애면 정상 작동됩니다. 그렇지만 원칙적으로 저 코드가 이상한 방식으로 작성된 것은 아닐 거구요. 문제가 뭐고, 해결방법은 무엇인가요? 또 최적화 변수를 0.1부터 1까지 0.1씩 증가시킬 때 변수륻 MessageLog() 로 찍어보면, 0.1 -> 0.2 -> 0.3 이런 식으로 순차적인 증가가 아니라 순서가 랜덤하게 나오던데, 이것은 어떤 이유인가요? 랜덤하게 나오면서 빠뜨리는 테스트가 생기는 것 같아서 여쭙습니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-10-10 11:27:22

안녕하세요 예스스탁입니다. 수식 전략상의 문제는 없습니다. 올려주신 내용은 메모리문제입니다. 프로그램이 32비트 환경이라 사용가능 메모리가 약 1.4정도입니다. 변수 최적화시에 각 코어별로 변수값이 할당되어 수행되게 되는데 시뮬레이션시에 300메가 정도의 메모리가 잡힌다면 코어가 4개이면 4*300으로 메모리를 넘지 않아 문제가 없는데 코어가 6~8이면 메모리 기준을 넘어 일부 변수값이 수행이 되지 못하고 건너뛰게 됩니다. 수식의 내용과 차트의 조회 봉갯수에 따라 다르지만 이런 문제로 기존에 4코어 CPU에서 시뮬레이션이 정상적으로 수행되는 시스템이 동일 차트환경에서 코어가 더 많은 PC에서는 일부 변수값을 수행하지 못하고 0으로 처리되는 경우들이 발생하고 있습니다. 관련팀에서 다른 방법을 강구하고 있지만 아직 정확한 해결방법이 나오지 않았습니다. 현재로서는 시뮬레이션 차트의 조회봉갯수를 줄여서 최적화를 진행하셔야 합니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > idnotbe 님이 쓴 글입니다. > 제목 : 시스템 오류? > 해외선물 한국투자에서 크루드오일 연결선물로 테스트하고 있습니다. 아래 코드로 첨부파일과 같이 최적화를 진행하면, 최적화를 진행하지 않고 건너뛰는 변수들이 생깁니다. If C < DayOpen - 0.5 Then Sell(); Inputs: FixedStopLossF(0.5); SetStopLoss(FixedStopLossF, PointStop); # 상하한가 근접 청산 전일 정산가 대비 ±10 ($/barrel) # 제한가격 도달 시 5분간 거래 정지 후 재개 If MarketPosition == 1 Then ExitLong("XL_UL", AtLimit, DayClose(1) + 9.8 ); If MarketPosition == -1 Then ExitShort("XS_LL", AtLimit, DayClose(1) - 9.8 ); If sDate > sDate[1] Then SetStopEndofday(53000); If bDate > bDate[1] Then SetStopEndofday(0); 제가 테스트해보기로는 상하한가 근접 청산 코드를 없애면 정상 작동됩니다. 그렇지만 원칙적으로 저 코드가 이상한 방식으로 작성된 것은 아닐 거구요. 문제가 뭐고, 해결방법은 무엇인가요? 또 최적화 변수를 0.1부터 1까지 0.1씩 증가시킬 때 변수륻 MessageLog() 로 찍어보면, 0.1 -> 0.2 -> 0.3 이런 식으로 순차적인 증가가 아니라 순서가 랜덤하게 나오던데, 이것은 어떤 이유인가요? 랜덤하게 나오면서 빠뜨리는 테스트가 생기는 것 같아서 여쭙습니다.