커뮤니티

자동매매 실행 도중 프로그램을 껐다 켜면 지금까지의 거래내역이 사라지는 문제

프로필 이미지
temp
2016-02-16 09:43:43
395
글번호 211417
답변완료
아침 7:40 에 서버 초기화 때문에 프로그램을 껐다가 다시 켜야 되는데요, 다시 켜게 되면 자동매매는 따로 재개하거나 하지 않아도 자동으로 실행이 되는데 전날 거래한 기록 및 시스템 성능 보고서, 시스템 포트폴리오 분석의 내용이 모두 사라집니다. (마치 거래가 없었던 것처럼) 해결 부탁 드립니다. 감사합니다.
eFriend Global YesTrader (한국투자증권)
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2016-02-16 13:13:42

안녕하세요? 예스스탁입니다. 프로그램을 다시 접속하셨을 때 과거의 매매신호도 모두 사라지는 것인지, 아니면 차트상에 매매신호는 그대로 나타나는데, 시스템성능보고서의 거래내역 등이 표시되지 않는 것인지 확인을 부탁드립니다. 매매신호가 사라졌다면 차트의 조회되는 봉 갯수의 문제일 수 있으므로 차트의 조회건수를 더 늘려서 적용해 주시면 됩니다. 다른 상황이라면 다시한번 글 부탁드리겠습니다. 감사합니다. > temp 님이 쓴 글입니다. > 제목 : 자동매매 실행 도중 프로그램을 껐다 켜면 지금까지의 거래내역이 사라지는 문제 > 아침 7:40 에 서버 초기화 때문에 프로그램을 껐다가 다시 켜야 되는데요, 다시 켜게 되면 자동매매는 따로 재개하거나 하지 않아도 자동으로 실행이 되는데 전날 거래한 기록 및 시스템 성능 보고서, 시스템 포트폴리오 분석의 내용이 모두 사라집니다. (마치 거래가 없었던 것처럼) 해결 부탁 드립니다. 감사합니다.
프로필 이미지

temp

2016-02-16 15:45:40

1. 봉 갯수를 늘리면 과거의 매매신호와 보고서에 거래내역이 나타나긴 합니다만 그건 실제로 진행된 거래내역이 저장되어져 있다가 보여지는 것이 아니고 그저 시뮬레이션 결과로 보입니다. 실제 거래에서는(모투로 하긴 했습니다만) 손실이 났는데 다음날 아침 서버초기화 이후 껐다 켠 뒤 봉 갯수가 이전날을 포함하도록 하면 수익이 났다고 표시되는 경우도 있습니다. 그리고 실 거래에서는 0.001pt 수익이 났지만 시뮬레이션 상으로는 그 3배인 0.003pt 수익이 난다고 하는 경우도 있습니다. 2시간 봉을 이용한 전략에 조건만족 즉시 trailing stop, stop loss 기능을 이용하기 때문에 봉이 완성되기 전에 trailing stop 혹은 stop loss조건이 발동하여 시뮬레이션과 실제 거래거래 사이에 차이가 날 수는 있는데 중요한건 실제 거래 기록이 저장되지 않는다는 겁니다. 이에 대한 해결 방법은 없나요? 2. 만약 강제청산 조건을 "조건 만족시" 에서 "봉 완성시" 로 변경하면 실 거래와 시뮬레이션이 거의 일치하게 될까요? 3. 그리고 시뮬레이션 상에서는 무조건 봉 완성시점에만 매매가 이루어 지는데 위에서 설명한것처럼 봉 완성전에 강제청산 조건이 발동하는 경우를 감안하여 시뮬레이션 할 수는 없나요? 답변 부탁드립니다. 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 자동매매 실행 도중 프로그램을 껐다 켜면 지금까지의 거래내역이 사라지는 문제 > 안녕하세요? 예스스탁입니다. 프로그램을 다시 접속하셨을 때 과거의 매매신호도 모두 사라지는 것인지, 아니면 차트상에 매매신호는 그대로 나타나는데, 시스템성능보고서의 거래내역 등이 표시되지 않는 것인지 확인을 부탁드립니다. 매매신호가 사라졌다면 차트의 조회되는 봉 갯수의 문제일 수 있으므로 차트의 조회건수를 더 늘려서 적용해 주시면 됩니다. 다른 상황이라면 다시한번 글 부탁드리겠습니다. 감사합니다. > temp 님이 쓴 글입니다. > 제목 : 자동매매 실행 도중 프로그램을 껐다 켜면 지금까지의 거래내역이 사라지는 문제 > 아침 7:40 에 서버 초기화 때문에 프로그램을 껐다가 다시 켜야 되는데요, 다시 켜게 되면 자동매매는 따로 재개하거나 하지 않아도 자동으로 실행이 되는데 전날 거래한 기록 및 시스템 성능 보고서, 시스템 포트폴리오 분석의 내용이 모두 사라집니다. (마치 거래가 없었던 것처럼) 해결 부탁 드립니다. 감사합니다.
프로필 이미지

예스스탁 예스스탁 답변

2016-02-17 14:21:34

안녕하세요? 예스스탁입니다. 문의하신 내용 답변드립니다. 1. 봉 갯수를 늘리면 과거의 매매신호와 보고서에 거래내역이 나타나긴 합니다만 그건 실제로 진행된 거래내역이 저장되어져 있다가 보여지는 것이 아니고 그저 시뮬레이션 결과로 보입니다. 실제 거래에서는(모투로 하긴 했습니다만) 손실이 났는데 다음날 아침 서버초기화 이후 껐다 켠 뒤 봉 갯수가 이전날을 포함하도록 하면 수익이 났다고 표시되는 경우도 있습니다. 그리고 실 거래에서는 0.001pt 수익이 났지만 시뮬레이션 상으로는 그 3배인 0.003pt 수익이 난다고 하는 경우도 있습니다. 2시간 봉을 이용한 전략에 조건만족 즉시 trailing stop, stop loss 기능을 이용하기 때문에 봉이 완성되기 전에 trailing stop 혹은 stop loss조건이 발동하여 시뮬레이션과 실제 거래거래 사이에 차이가 날 수는 있는데 중요한건 실제 거래 기록이 저장되지 않는다는 겁니다. 이에 대한 해결 방법은 없나요? => 매매신호는 실계좌의 상황이나 과거 실시간 시세데이터로 신호가 발생된 내역을 저장하지 않고, 현재 차트에 조회되어 있는 데이터만으로 신호를 만들어내기 때문에 재조회시 신호가 달라지는 현상은 피할 수 있는 방법이 없습니다. 이런 이유 때문에 매매신호에서 사용되는 데이터의 기간을 고려하여 그보다 큰 값으로 조회건수를 지정하여 신호가 달라지지 않도록 사용합니다. 다만, 10분봉 이상의 긴 주기를 이용하고 조회건수를 최대(5000건)로 지정해 놓는다면 매매신호가 달라지는 현상은 거의 없지만(성능보고서 상의 성과는 조회시점마다 시작시점이 바뀌게 되므로 성과는 달라지게 되지만, 가장 최근에 발생한 매매신호가 바뀌는 현상은 거의 발생하지 않습니다.) 이보다 짧은 주기를 사용하거나 조회건수를 작게할 경우 최근의 매매신호가 달라지는 상황이 빈번히 발생할 수 있습니다. 그리고 강제청산 항목 중 '손절매'나 '목표수익'의 경우는 봉완성시로 설정하거나 조건만족시 즉시로 하거나 시뮬레이션과 실제 매매결과에 거의 차이가 발생하지 않지만 trailing stop을 사용하는 경우 '조건만족시즉시'로 설정하셨다면 시뮬레이션 결과와 실제매매 결과가 많이 차이날 수 있습니다. 이런 이유 때문에 trailing stop의 경우는 시스템트레이딩 설정창에서 적용하지 않고, 매매전략의 로직 안에서 내용을 풀어서 작성하는 방법을 사용합니다.(ATR Trailing Stop 으로 인터넷 검색해 보시면 관련 자료들을 찾을 수 있습니다.) 2. 만약 강제청산 조건을 "조건 만족시" 에서 "봉 완성시" 로 변경하면 실 거래와 시뮬레이션이 거의 일치하게 될까요? => trailing stop 의 경우만 차이가 나며 다른 강제청산의 경우에는 차이가 없습니다. 3. 그리고 시뮬레이션 상에서는 무조건 봉 완성시점에만 매매가 이루어 지는데 위에서 설명한것처럼 봉 완성전에 강제청산 조건이 발동하는 경우를 감안하여 시뮬레이션 할 수는 없나요? => 기술적지표의 크로스를 이용하는 전략 같은 경우는 봉이 완성되어야만 크로스가 발생되었는지 확인이 되므로 봉완성전에 신호를 발생시키지는 못합니다. 하지만, 현재가가 전일고가를 돌파할때 또는 현재가가 볼린져밴드 상단선을 돌파할때와 같은 것은 봉이 완성되지 않더라도 지정해 놓은 가격을 현재가가 돌파한 것이 확정되므로 이런 경우에는 봉미완성 시라도 신호를 발생시킬 수 있습니다. 주문타입에 보시면 onclose, atmarket은 봉완성시점에 주문을 내는 타입이며 atstop, atlimit은 봉완성전이라도 주가가 지정한 가격에 도달할 때 즉시 신호가 발생하는 타입입니다. 예를 들어 아래 이동평균선의 크로스를 이용하는 식에서는 onclose타입이 사용되어(onclose타입은 생략이 가능합니다. 따라서 buy(); 라고 표현한다면 onclose타입을 의미합니다.) 봉완성시점에 신호가 발생되고, 전봉 고가를 돌파할 때 매수하는 전략은 atstop타입을 이용하여 전봉 고가를 돌파하는 즉시 신호가 발생되게 됩니다. # 5이평이 20이평을 상향돌파시 봉완성시 매수 if CrossUp( ma(C,5), ma(C,20)) Then buy("매수", onclose); # 현재가가 전봉의 고가를 돌파시 즉시 매수 if MarketPosition == 0 Then buy("매수1", atstop, High); 감사합니다.