답변완료
참조종목쓰면 자동매매 손실 커질수 있다
3292의 버그에대한 실제 시스템에 대한 주문신호 문제에 대한글입니다.
3292번의 버그를 먼저 확인하시고 읽어주시면 되겠습니다.
시스템 트레이더는 자신이 구현한 로직 데로만 신호가 나가야 정상적인 자동매매를 사용할수가 있습니다.
하지만 참조 종목을 사용할 경우 전혀 예상치 못한곳에서 신호가나가 원치않는 피해가 생길수 있음을 확인하였습니다.
문제의 시작은 제가만든 연평균 50pt 짜리 선물매매 시스템을 옵션에 적용시키고자 data1에있는 연결선물옵션 차트를 data3의 참조종목으로 띄우고 data1은 옵션 종목을 적용해 매매를 할목적으로 매수 종목만 다르고 신호는 똑같은 시스템을 만들고자 하는것에서 시작되었습니다.
[ A = 기존시스템, B = A시스템에서 data1 -> data3으로 변경하여 같은 신호를 내는 시스템 ]
위에서 말했듯이 A시스템은 연평균 50pt이나 새로만든 B 시스템은 연평균이 오히려 떨어져서 45pt밖에 나오지 않았고 오늘 아침 실제 매매에서 A시스템과 B시스템의 신호차이로 B시스템을 이용한 매매에서 피해를 입었습니다.
버그 증상은 이러합니다.
일단 시뮬레이션 차트에서 A시스템과 B시스템의 거래내역을 모두 분석하였습니다.
두시스템의 신호를 살펴보면 99%가 일치하나 1%의 확률로 B시스템은 전혀다른 봉에서 신호를 내거나 신호가 무시됨으로서 큰피혜가 예상되었습니다.
신호의 불일치는 시스템마다 다르고 아주 불특정한데요 B시스템이 버그를 일으키는 상황은 아래와 같습니다.
--------------------------------------------------------
var : ran(0);
var : hhh(0);
ran = random(100);
hhh = data2(c);
hhh = data3(c);
messagelog("%f", data3(ema(c, 333))-(ema(c, 333)) );
if ran < 2 Then
buy();
if ran > 98 then
exitlong();
//data1(연결선물5분), data2(연결20분), data3(연결5분);
------------------------------------------------------
주차트 연결5분, data2 연결20분, data3 연결 5분 으로 해놓고 하심됩니다.
------------------------------------------------------
위처럼 하시면 보시다시피 data1과 data3의 종목은 연결5분으로 완전 똑같기 때문에 messagelog에서 data3의 ema(c,333)의 값에서 data1의 ema(c, 333)를 빼면 모든 로그에서 값은 0이 나와야 참조종목의 데이타가 무결하다 하겠습니다.
하지만 위의 시스템에서 디버깅창을 잘확인해보시면 //2007년 6월 15일 9시 와
//2008년 9월 12일 9시 에 ema 값은 차이가 생겨나고 매매는 바로 손실로 이어집니다.
버그를 간결하게 표현하기 위해 위와같이 코딩하였고 버그현상이 낮은확률로 보이겠지만
실매매에서 쓰이고있는 제시스템의경우 30번 매매에 한번꼴로 저렇게 버그현상이 발생하며 시스템 A와 시스템 B를 비교해보면 그 버그현상이 생기는날마다 주문신호가 다르게나와 손실을 보게됨을 알수가 있습니다.
그결과로 B시스템은 이미 연평균 5pt감소한 시스템이 되었고 오늘 재수없게도 그버그가 나오는 날이라서 B시스템을 이용한 옵션매매에서 손실을 입게 되었습니다.
(오늘 실제매매의 거래중 오전신호에서 B시스템의 버그로 손실을 입었으며 그이후 신호는 또 모두 똑같았고 또언제 버그가 나올지는 알수가 없습니다.)
어쨋든 불안한 마음에서 시작한 버그테스트에서 참조종목을 사용하면 손실을 입는다는 결과가 나왔고 해당버그 상황에 대해서 신속한 조치를 취해주시기 바랍니다.
9월 8일에 ADX를 사용하면 청산신호가 동작하지 않는 버그를 문의한적이 있었는데
"현재 원인을 파악중에 있습니다." 라는 답변이후 그어떤 답변도 받지 못하고있는데
이번 버그의 경우는 수많은 사람들이 참조종목을 이용하여 실제 매매를 구동하고 있고 저또한 큰손실을 입었기에 버그의 심각성을 잘 파악해 주시기 바랍니다.
그리고 YT로 옵션 자동매매나 참조종목을 사용 하고있는 투자자분께서는 해당 버그 사항을 숙지하여 큰피해를 줄이시기 바랍니다.
(헌데 코딩으로선 해결할수 없는 버그이기에 현재로선 대책이 없습니다.)
2008-09-25
1179
글번호 201386
기타
답변완료
참조시 버그..
옵션을 주차트 연결선물지수를 참조차트로 해놓고 옵션거래를 하고있습니다.
이미 만들어놓은 연결선물지수 데이타를 이용한 옵션트레이닝이
번번히 신호가 1,2봉 차이가나 손실을 입게되어 몇일밤을새며 버그를 찾았습니다.
아래와 같은 예스트레이더의 버그때문에 큰손실을 입었습니다.
--------------------------------------------------------
var : ran(0);
var : hhh(0);
ran = random(100);
hhh = data2(c);
if( stime == 090000) then
messagelog("%f, %f (에러)",C,data3(c));
if( stime == 092000) then
messagelog("%f, %f (정상)",C,data3(c));
if ran > 50 Then
buy();
if ran < 50 then
exitlong();
//data1(연결선물5분), data2(연결30분), data3(연결5분);
------------------------------------------------------
최대한 버그만 알아보기쉽게 코딩을 햇고 적용법은
주차트 연결5분, data2 연결30분, data3 연결 5분 으로 해놓고 하심됩니다.
발생현상은 9시 봉마다 똑같은 종목인 data1과 data3간의 일치하지 않고 불안한
데이타 왜곡이 생긴다는것입니다.
------------------------------------------------------
저는 보시다시피 data1에 옵션띄워놓고 data3의 데이타를 100%믿고 스캘핑을합니다.
허나 위와같은 재연하기도 매우힘든 버그가 상당수 존재하고 있는듯 싶습니다.
주문신호의 불일치는 현재 계속나오고있고 해당현상이 주문신호에 영향을 주는 100%는 아니라 생각되기 때문에 또다른 민감한버그가 없는지 계속 찾고있습니다.
해당현상의 원인과 주문신호의 불일치와의 관계를 명확하게 설명해 주시기 바라며
1. 주차트 (옵션), 참조차트 연결선물. ( 연결선물 데이타 신호를 이용한 주차트 매수 )
2. 주차트 연결선물. ( 연결선물 신호뜨면 손으로 매수 )
과연 2번 매매가아닌 1번매매로도 참조종목 데이타를 믿고 자동매매를할수있는지 답변바랍니다. ( 주종목 데이타는 저도 매우신뢰하고있으나 참조는 도저히 불안합니다. )
참조종목에 대한 해결되지않은 버그가 1개라도 있다면 또 손실을 입기전에 미리 설명해주시기바라며 해당현상의 빠른 대응 부탁드립니다.
가장 심각한건 저는 오늘도 손실을 봤고
A 시스템과 A시스템의 주종목을 참조종목으로 변경하여 신호를 만든 B 시스템은
신호가 100%일치하지 않고 있다는 것입니다.
2008-09-25
1235
글번호 201385
기타
답변완료
포지션 함수들에 대해서 이상한것들...
MaxEntries(),
MaxContracts(posnum),
BarsSinceEntry(posnum),
EntryPrice(posnum),
EntryDate(posnum),
IsEntryName(posnum)
위와 같은 함수에 대해서 매뉴얼에는 청산된 신호라고 했다가 어떤 곳에서는
미청산 신호라고 했다가 헷갈립니다.
실행해본결과, 미청산신호를 지칭하는걸로 보입니다만...
두번째 질문은, EntryDate(posnum)과 같은 함수가 정말 청산안된 신호의
날짜를 가져오는지요??
제가 제가 정한 날짜에는 미청산 포지션을 모두 청산하게 할려구 하는데,
청산하면서 EntryDate를 출력해보면, 진입하고 미청산된 포지션에 대한 날짜가
아니고, 훨씬 전(약 한달전) 청산된 포지션 날짜가 나오는듯합니다.
확인좀 바랄께요
감사합니다
2008-09-24
1175
글번호 201378
기타
답변완료
질문
var : ran(0);
ran = random(100);
messagelog("5분:%f, 20분:%f",C,data2(c));
if ran > 50 Then
buy();
if ran < 50 then
exitlong();
-------------------------
위와같은 시스템 식을 만들어서
차트를 주차트:5분연결선물, 보조차트(data2):20분연결선물 로 띄웁니다.
그리고 디버그창에서 아무날짜나 9시:00분을 확인합니다.
시간 내용
09::00:00 5분:179.65, 20분:185.05
09::05:00 5분:179.65, 20분:185.05
09::10:00 5분:179.85, 20분:185.05
09::15:00 5분:180.25, 20분:180.25 << 해당 MessageLog가 불리는 시간?
09::20:00 5분:180.90, 20분:180.25 << 해당 MessageLog가 불리는 시간?09::25:00 5분:180.95, 20분:180.25
09::30:00 5분:181.80, 20분:180.25
09::35:00 5분:181.85, 20분:180.85
위의 데이타는 디버깅창에 있는 결과물을 그대로 적은것인데요.
제가 해석을 MessageLog가 9시 15분정각에 불리어졌는데 그때
5분봉의 종가는 180.25였고 20분봉 종가는 180.25였다. 라고 이해를했는데
메세지로그의 시간이 9시:15분에 찍었다는 소리가 아닌가요?
9:15:00 로그가 찍힌시간은 9시 19분 59초 ~ 9시 20분 인것인가요?
2008-09-23
1334
글번호 201377
예스트레이더 (iM증권)
답변완료
버그..
버그 캡쳐해서 올릴려구 했더니 그림이 안올라가네요.
그냥 손으로 쓰겟습니다.
---------------------
var : ran(0);
ran = random(100);
messagelog("5분:%f, 20분:%f",C,data2(c));
if ran > 50 Then
buy();
if ran < 50 then
exitlong();
-------------------------
위와같은 시스템 식을 만들어서
차트를 주차트:5분연결선물, 보조차트(data2):20분연결선물 로 띄웁니다.
그리고 디버그창에서 아무날짜나 9시:00분을 확인합니다.
09::00:00 5분:179.65, 20분:185.05
09::05:00 5분:179.65, 20분:185.05
09::10:00 5분:179.85, 20분:185.05
09::15:00 5분:180.25, 20분:180.25 << 전혀 엉뚱한 20분데이타
09::20:00 5분:180.90, 20분:180.25 << 20분이 되었으나 동기화 안됨.
09::25:00 5분:180.95, 20분:180.25
09::30:00 5분:181.80, 20분:180.25
09::35:00 5분:181.85, 20분:180.855
9시 15분을 보시면 data2 봉완성 시점이 아닌데 완성한것처럼 띄워집니다.
9시 20분을 보면 data2봉이 완성되어있는데 인식을 못합니다.
확인해보시면 모든 시간에서 데이타가 언벨런스 합니다.
이결과로보면 하위분봉에서 상위분봉의 데이타를 전혀 신뢰할수 없으며
위 디버깅의 결과를 정상적으로 나오게하기위해 변수를 사용하여
yeslanguage수식을 적당히 조정해주면 data2와 data1의 분봉의 결과를 100% 동기 시킬수 있는걸 보면 해당 상황은 확실히 버그인듯 싶습니다.
개발시의 데이타기준을 설명해주시기 보다는
하위분봉에서 상위분봉을 전혀쓸수없다는 결과를 중점으로 봐주시고
분봉간의 데이타를 믿을수 있고 쓸수있게 수정 부탁드립니다.
2008-09-22
1097
글번호 201372
예스트레이더 (iM증권)