커뮤니티

참조 데이터를 사용할때 심각한 오류가 있습니다.!!!

프로필 이미지
공간
2016-05-07 09:47:50
147
글번호 97789
답변완료
참조데이터를 사용할때 아주 심각한 오류가 있습니다. 상황 설명이 난해하고 어려워 예를 들어서 설명을 하겠습니다. 1. 시뮬레이션 차트를 연결선물, 10분봉, 2015-01-01 ~ 2015-12-31 로 설정을 합니다. 2. 다음의 수식으로 시스템만들어 적용을 합니다. Variables : MA1(0), MA2(0); MA1 = MA(Close, 10); MA2 = MA(Close, 20); If (MA1[1] < MA2[1] ) Then Buy (); If (MA1[1] > MA2[1] ) Then Sell (); 3. 수수료 = 0, 슬리피지 = 0, 강제청산 없음 으로 세팅후 시뮬레이션 성능보고서를 확인해보면 => 총손익이 10.50 pt 로 나옵니다. 4. 참조데이터로 ATM 연결 콜옵션을 5 분봉으로 추가합니다. 5. 위의 수식 제일 아랫부분에 다음 코드를 추가합니다. Var : test(1); test = Data2( close ); 이 코드는 실제 매수/매도 에는 전혀 영향을 미치지 않는 코드입니다. 6. 다시 총손익을 확인해봅니다. => 총손익이 9.45 로 바뀌어 있습니다. 7. 참조데이터의 주기를 1분으로 바꾸어봅니다. => 총손익이 11.95 로 다시 바뀌었습니다. 7. 모든 차트는 그대로 둔 상태에서 시스템식에 추가한 두줄을 다시 삭제해봅니다. => 총손익이 다시 10.50 으로 돌아옵니다. 이렇게 실제 매매에 전혀 영향을 주어서는 안되는 코드가 실제 영향을 주고 있습니다. 제가 간단하게 예제만 작성을 하였기 때문에 그나마 영향이 적은 것이지 제가 실사용중인 시스템에서는 거의 사용 불가능할 정도로 영향을 주고 있습니다. 빠른 조치 부탁드립니다!!!
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-05-09 14:07:43

안녕하세요 예스스탁입니다. 수식에 참조데이터함수가 사용되면 수식에 계산되는 값의 변수타입과 계산식등을 데이터번호 함수로 묶어 주셔야 합니다. 변수에 데이터번호를 지정해 해당 변수가 1봉전, 2봉전과 같이 이전값 참조할때 어떤 데이터의 주기로 이전값을 참조해야하는지 지정해 주셔야 하며 계산식도 데이터 함수로 묶어 주셔야 합니다. data2값이 있는 수식에 ma(c,10)과 같이 사용되면 10봉을 data1의 주기로 카운트 하는것이 아니라 data1과 data2를 합친 봉수로 처리하게 됩니다. 랭귀지 도움말에서 예스랭귀지 활용부분에 타종목/타주기 참조에 해단 내용 참고하시기 바랍니다. Var : MA1(0,data1), MA2(0,data1); Var : test(1,data2); test = Data2( close ); MA1 = data1(MA(Close, 10)); MA2 = data1(MA(Close, 20)); If (MA1[1] < MA2[1] ) Then Buy (); If (MA1[1] > MA2[1] ) Then Sell (); 즐거운 하루되세요 > 공간 님이 쓴 글입니다. > 제목 : 참조 데이터를 사용할때 심각한 오류가 있습니다.!!! > 참조데이터를 사용할때 아주 심각한 오류가 있습니다. 상황 설명이 난해하고 어려워 예를 들어서 설명을 하겠습니다. 1. 시뮬레이션 차트를 연결선물, 10분봉, 2015-01-01 ~ 2015-12-31 로 설정을 합니다. 2. 다음의 수식으로 시스템만들어 적용을 합니다. Variables : MA1(0), MA2(0); MA1 = MA(Close, 10); MA2 = MA(Close, 20); If (MA1[1] < MA2[1] ) Then Buy (); If (MA1[1] > MA2[1] ) Then Sell (); 3. 수수료 = 0, 슬리피지 = 0, 강제청산 없음 으로 세팅후 시뮬레이션 성능보고서를 확인해보면 => 총손익이 10.50 pt 로 나옵니다. 4. 참조데이터로 ATM 연결 콜옵션을 5 분봉으로 추가합니다. 5. 위의 수식 제일 아랫부분에 다음 코드를 추가합니다. Var : test(1); test = Data2( close ); 이 코드는 실제 매수/매도 에는 전혀 영향을 미치지 않는 코드입니다. 6. 다시 총손익을 확인해봅니다. => 총손익이 9.45 로 바뀌어 있습니다. 7. 참조데이터의 주기를 1분으로 바꾸어봅니다. => 총손익이 11.95 로 다시 바뀌었습니다. 7. 모든 차트는 그대로 둔 상태에서 시스템식에 추가한 두줄을 다시 삭제해봅니다. => 총손익이 다시 10.50 으로 돌아옵니다. 이렇게 실제 매매에 전혀 영향을 주어서는 안되는 코드가 실제 영향을 주고 있습니다. 제가 간단하게 예제만 작성을 하였기 때문에 그나마 영향이 적은 것이지 제가 실사용중인 시스템에서는 거의 사용 불가능할 정도로 영향을 주고 있습니다. 빠른 조치 부탁드립니다!!!