콘텐츠로 건너뛰기
Reddit

🧩 트레이딩뷰 자동매매, 실시간에서 백테스트보다 매매가 많다면?

r/Daytrading 조회 33
원문 보기 →
💡

실시간 자동매매 중 매매 건수가 백테스트보다 많다면, 브라우저 탭 때문일 수 있습니다. 트레이딩뷰가 브라우저 탭이 열려있을 때는 바(bar) 닫히기 전에 여러 번 전략을 평가하기 때문입니다. 전략 조건에 barstate.isconfirmed를 추가해 해결할 수 있습니다.

트레이딩뷰 전략을 브로커랑 연결해서 실시간 자동매매해보신 분들 중에, 백테스트보다 매매가 과도하게 많이 나오는 경우 겪어보신 적 있으신가요? 저도 최근에 그 원인을 겨우 찾았습니다.

문제는 백테스트랑 실시간 실행 방식의 차이에서 나옵니다. 백테스트는 각 캔들이 끝난 뒤에 전략 조건을 한 번만 평가하죠. 그런데 실시간 매매 중에 브라우저 탭이 열려 있으면, 트레이딩뷰가 캔들 생성 도중에도 틱마다 조건을 계속 평가합니다. 조건이 캔들 한 번 닫힐 때만 만족해야 하는데, 실시간에선 여러 번 만족하면서 매매가 과도하게 발생하는 식입니다.

브라우저 탭을 닫기만 해도 증상이 사라집니다. 탭을 다시 열면 또 시작되고요. 너무 황당했는데, 결국 코드 문제가 아니었습니다.

해결방법은 의외로 간단한데, 코드에 barstate.isconfirmed를 추가하면 됩니다. 예를 들어 다음과 같이요:

// 기존 (문제 있음):
canEnterLong = longSignal and strategy.position_size == 0

// 수정 후:
canEnterLong = longSignal and strategy.position_size == 0 and barstate.isconfirmed

이렇게 하면 실시간 매매에서도 백테스트랑 똑같이, 오직 캔들이 확정된 이후에만 조건이 평가됩니다. 백테스트에는 전혀 영향도 없습니다. strategy.entry(), strategy.close() 조건 모두 적용해 주세요. 전략이 어떤 거든, 브로커랑 연결한다면 필수입니다.

저만 당한 건지 모르겠네요. 혹시 비슷한 경험 있으신가요?


🧐 배경 설명 및 요약

이 글은 트레이딩뷰에서 자동매매 전략을 실시간 연결했을 때, 백테스트와 달리 매매 수가 지나치게 많다는 문제를 겪은 투자자가 올린 내용입니다.

작성자는 처음엔 코드 오류라고 생각했지만, 실제로는 브라우저 탭이 열려 있을 때 트레이딩뷰가 캔들이 끝나기 전에도 여러 번 전략 조건을 평가한다는 점을 발견했습니다. 이로 인해 전략 조건이 중복 충족되어 불필요한 실시간 거래가 발생한 것이죠.

해결법은 `barstate.isconfirmed` 조건을 추가하는 것으로, 이렇게 하면 바가 확정(closed)된 뒤에만 매매가 일어납니다. 백테스트에는 이미 바가 모두 확정된 상태이기 때문에 기존 결과와 달라지지 않으며, 실시간 실행만 정확히 제어할 수 있습니다.

댓글 (0)

로그인하고 댓글을 작성하세요.

아직 댓글이 없습니다.