장중에 실시간 시세를 받을 때 발생한 신호와
이후 차트를 재조회하거나 전략을 재적용했을 때 발생하는 신호와는 차이가 발생할 수 있습니다.
아래는 실시간에서 발생한 신호와 이후 재적용 시에 신호가 달라질 수 있는 상황들입니다.
1.
강제청산 중 트레일링스탑(SetStopTrailing) 청산 사용
트레일링스탑(SetStopTrailing)은 일정값 이상 수익이 발생한 후에
수익이 일정값 이상 감소하면 청산을 하는 설정입니다.
해당 강제청산을 사용하면 실시간 장중에는 시세를 정밀하게 추적하여 신호를 발생합니다.
하지만 차트의 과거봉에는 봉 안에 모든 시세가 없고 봉의 시가, 고가, 저가, 종가만 있어
실제 봉의 내부의 움직임을 알수는 없습니다.
이에 따라 과거봉은 주가 움직임에 대한 가설을 만들고 해당 가설과 같이 움직인 것으로 간주하고 신호를 발생하게 되는데 실시간에서 발생된 신호와 차이를 발생할 수 있습니다.
차트의 과거봉에 모든 체결틱 데이타가 제공되지 않는한 트레이링스탑(SetStopTrailing)에서 실제매매와 시뮬레이션의 불일치는 피할 수 없습니다.
트레일링 스탑의 경우 주로 실제보다 수익이 과대계상이 되며
최소수익과 수익감소값이 작으면 작을 수록 실제와 시뮬레이션사이의 차이가 커지게 됩니다.
2.
SetStopEndOfDay
당일청산(setstopendofday)은 설정창의 청산시점이 조건만족시 즉시로 설정되어 있다면
지정한 시간에 포지션이 있으면 청산을 하고 이후 당일에 진입을 제한하게 됩니다.
실시간 장중에는 지정한 시간이후에 첫시세가 들어오면 즉시 신호를 발생하지만
과거 봉에서는 봉 안에 모든 시세를 가지고 있지 않아 지정한 시간 이후의 첫시세의 가격을 알 수 없어 지정한 시간이 포함된 봉의 종가에 신호가 발생하게 됩니다.
예를들어 5분봉 차트에서 당일청산을 setstopendofday(151400);로 지정하면
실제 매매에서는 15시14분00초 이후 첫시세가 발생하면 즉시 신호가 발생하고
리포트의 가격도 해당 값으로 적혀지게 됩니다.
하지만 과거봉에서는 15시14분00초가 포함된 봉(15:10:00~15:04:59)의
종가에 신호가 발생한 것으로 표시가 되어 리포트 청산가격에 차이가 발생하게 됩니다.
3.
타종목참조
참조데이타를 이용해서 매매신호를 발생시킬 경우 실전매매와 시뮬레이션 신호와 차이가 발생할 수 있습니다.
기본종목과 참조종목의 데이타 도달 시간이 서로 상이하여 주종목의 봉이 완성된 이후에
참조종목의 시세가 들어와 봉이 완성되는 경우가 생기기 때문입니다.
예를들면 기본종목의 봉이 완성되면서 그 시점까지의 종목참조의 데이타를 이용하여
확정된 매매신호를 발생시켰는데, 그 이후에 타종목에 데이타가 추가로 들어오게 될 경우
실제매매에서 발생된 매매신호는 사라지지 않지만, 차트를 재조회 하게 될 경우 참조종목에 추가로 들어온 데이타 까지 포함하여 새롭게 매매신호를 발생시키기 때문에 발생되었던 매매신호가 사라질수도 있고 없던 매매신호가 새롭게 발생할수도 있게 됩니다.
기본종목과 참조종목의 데이타가 서로 다른 시간에 도달되는 이유는 두가지 경우인데
첫번째는 시장이 다른 데이타(주식종목과 선물)에 대해서 증권회사에서 서로 다른 서버를 사용함으로써 데이타의 처리 시간이 달라지게 되는 경우입니다.
특히 선물과 옵션은 코스콤에서 서버의 시간을 내려주지만 주식종목에 대해서는 이와 같은 정보를 보내주지 않고 증권회사 서버의 시간을 이용하기 때문에 증권회사마다 동일한 봉의 데이타가 서로 다른 결과를 나타내기도 합니다.
두번째는 선물과 옵션처럼 동일한 시장의 데이타이기 때문에 동일한 서버를 사용한다고 하더라도 데이타 도달시간에 차이가 발생할 수 있습니다. 증권회사가 코스콤으로부터 데이타를 전송받을 때 여러개의 라인을 이용하여 데이타를 받기 때문에 코스콤 서버의 시간을 같이 전송받더라도 회선의 속도 차이 때문에 데이타의 도달시간이 달라지는 경우가 생기게 됩니다.
동일한 시장의 종목일 경우 서로 다른 시장간의 종목보다는 시뮬레이션과 실제매매의 차이가 발생하는 빈도수가 적어지겠지만 시장 구조상 지속적으로 발생할 수밖에 없는 현상입니다.
참조종목를 이용할 경우 시장 구조적인 문제 때문에 시뮬레이션과 실제매매를 완전히 일치시킬 수 있는 방법은 없지만, 매매의 시간주기를 길게 사용함으로써 발생빈도를 줄일 수 있습니다.
4.
일간갭보정 차트 이용
분,틱봉의 일간갭 보정 기능 사용은 시뮬레이션과 실제매매의 차이가 발생하게 되는 주요한 원인이 됩니다.
기본차트 속성창에서 분,틱봉의 일간갭보정 기능을 체크하게 되면 당일 데이타는 그대로 유지한 상태에서 과거일의 모든 데이타에 대해서 발생된 갭만큼의 비율로 과거의 차트를 보정하게 됩니다. 만일 갭보정 차트에 시스템을 적용하게 된다면 실제매매에서 발생되었던 매매신호가
다음날 갭보정에 의해서 사라지거나 새로 생겨날 수 있고 신호는 그대로 유지되더라고
오늘의 가격이 바뀌게 되므로 매매의 손익도 실제의 매매와 매일 다르게 변경되게 됩니다.
일간갭보정 기능을 이용할 경우 시뮬레이션 결과와 실제매매의 결과를 전혀 다르게 왜곡시키므로 일간갭을 보정시킨 상태에서 전략식을 적용하는 것은 적절한 방법은 아닙니다.
이 기능은 시각적인 분석을 할때만 제한적으로 사용해야 하는 기능입니다.
5.
틱차트 이용시 실시간 매매신호와 재조회 매매신호의 불일치 위험
기본종목 또는 참조종목을 틱차트로 사용할 경우 실시간으로 발생된 신호와 재조회시 발생된 신호가 서로 달라질 수 있습니다.
틱차트는 네트웍 상에서 데이터의 유실, 데이터 처리 속도 향상을 위한 틱데이터 묶음 처리 등으로 실시간 업데이트 데이터와 재조회 데이터의 차이가 발생할 수 있습니다.
틱차트는 봉을 만드는 구조적인 특성상 중간에 하나의 틱데이터만 유실되어도 이후의 모든 차트 데이터가 변경되기 때문에 틱차트를 이용해 전략식을 적용할 경우 실시간 신호와 재조회시 신호가 달라지는 경우가 빈번히 발생할 수 있습니다. 따라서 틱차트를 이용할 경우 프로그램의 재접속, 차트의 재조회, 전략의 재적용시에 매매신호의 변경될 수 있으므로 주의해야 합니다.
6.
기타
•
AtStop / Atlimit
만약 두번째 봉에서 시초가대비 +0.2의 가격에 도달하면 매수하고, -0.2의 가격에 도달하면 매도하는 식을 작성한다면 아래와 같이 작성할 수 있습니다.
if bdate != bdate[1] Then
{
Buy("b",AtStop,dayopen+0.2);
Sell("s",AtStop,dayopen-0.2);
}
C
복사
두번째 봉에서 시초가 -0.2~+0.2 를 넘나드는 긴 봉이 만들어 졌을 때 과거데이타는 주가움직임 가설에 의해서 시가대비 고가와 저가의 폭을 계산하여 고가의 폭이 더 크거나 같으면 저가가 형성된 후 고가가 형성되었다고 보게되고 저가의 폭이 더 크다면 고가가 형성된 후 저가가 형성되었다고 보고 됩니다. 따라서 실제움직임과는 상관없이 고가의 폭이 크냐 또는 저가의 폭이 크냐에 따라서 매수신호가 먼저 발생되기도 하고 매도신호가 먼저 발생되기도 합니다.
위 그림에서 주가 움직임 가설에 의해서 시가 → 저가 → 고가 → 종가 순서로 발생되었다고 가정하기 때문에 매도신호가 먼저 발생하고 나중에 매도청산과 매수신호가 발생하게 됩니다. 하지만 실제 매매에서는 고가가 먼저 형성된 후에 저가가 형성될 수도 있는데, 실제매매에서 고가가 먼저 형성되었다면 매수신호가 먼저 발생하고 이후에 매수청산신호와 매도신호가 발생하게 될 것입니다.
주가 움직임의 가설을 사용하는 한 근본적으로 해결할 수 있는 방법은 없으므로 가급적 이와 같은 상황을 줄이는 방법은 atstop과 atlimit 주문을 이용할때 한봉에서 두가지 조건을 모두 만족하지 않을 정도의 큰 값을 사용하는 것이 문제 해결을 위한 방법이 될 수 있습니다.
•
지표의 계산 방식에 따른 차이
보통 시뮬레이션은 장기간의 데이타로 테스트하고 실제매매는 짧은 기간의 데이타로 매매를 하게 되는데, 데이타의 시작 시점(또는 데이타의 조회기간)에 따라서 신호가 달라지는 경우가 발생할 수 있습니다.
예를 든다면 지수이동평균선을 이용하는 지표(지수이동평균선, 스토캐스틱, macd..등)는
계상방법 때문에 데이타의 조회 기간이 달라지면 지표의 값이 변경될 수 있고
이에따라 매매신호도 변경될 수 있습니다.
또 다른 경우는 accum 함수를 이용하거나 차트 전체에서 값을 누적하는 OBV 지표 처럼 데이타의 시작시점에 따라서 값이 달라지는 지표를 이용할 경우에도 매매신호가 조회기간에 따라서 달라지게 됩니다.
이외에 사용된 지표의 계산에 필요한 충분한 데이타가 조회되지 않았을 경우에도 매매신호가 영향을 받을 수 있습니다. 지표의 계산방식에 따른 시뮬레이션과 실제매매의 차이의 오류를 줄이려면 가급적 긴 기간의 데이타를 불러놓고 전략식을 적용해야 합니다.
뒤로가기는 좌측상단의 목차 버튼을 눌러주세요.