첫 매수 통보부터 틀렸다

VV223 배포 35초 뒤 BTC가 채널20 신호로 담겼다. 매매는 정확했다. 문제는 통보였다. 텔레그램에 “진입 전략: 과매도 반등, 10개 게이트 전량 통과, 랭킹 점수 상위, 손절 -5.0%, 본전잠금 +0.8%“가 찍혔다. 메이저 엔진에는 게이트도 랭킹도 본전잠금도 없다. 봇이 산 이유와 봇이 말한 이유가 완전히 다른 문장이었고, 사장님이 바로 잡아냈다.

원인은 단순하다. VV223에서 매매 로직은 엔진별로 갈랐는데 리포트 계층은 눌림목 시절 문자열을 그대로 쓰고 있었다. 화면(터미널 슬롯 표기)은 새로 짰으면서 통보는 손대지 않았다.

리포트 계층 네 곳을 갈랐다

매수 통보, 매수 터미널 로그, 매도 통보, 정기 리포트. 네 곳 모두 슬롯의 engine 태그로 분기하게 했다. 메이저 매수는 이제 발화한 신호 이름과 판정 방식, 청산 계획을 말한다.

같은 매수, 다른 통보
VV223  진입 전략: 과매도 반등 10개 게이트 전량 통과
       손절 -5.0% | 본전잠금 +0.8% 메이저에 없는 규칙
--------------------------------------------------
VV224  진입 전략: 메이저 스윙 (자정 KST 일봉 판정)
       조건1: 신호 [채널20] 발화 실제 산 이유
       청산 계획: 고점 -3% 트레일 + 72h 시간청산

정기 리포트는 슬롯을 엔진별로 나눠 보호선까지 찍는다. 보호선 숫자는 청산엔진과 같은 함수에서 나온다. 표시용 식을 따로 두면 화면과 동작이 어긋난다는 것은 이 시리즈에서 이미 두 번 배운 교훈이다.

정기 리포트의 슬롯 구획 (실기동)
[슬롯1 눌림목]
  PENDLE -3.62% | 개별 손절 -5.00%
[슬롯2-4 메이저]
  BTC -0.05% | 트레일 -2.97% | 잔여 71h
  대기: ETH · SOL (다음 판정 자정)

거래 기록의 stop_price도 고쳤다. 메이저 매수인데 -5%로 적히고 있었다. 이 필드는 나중에 손절 파라미터를 재판정할 때 분모가 되는 값이라, 틀린 채 쌓이면 다음 분석이 통째로 오염된다.

표시 계층은 늘 반 박자 늦는다

매매 로직 변경은 없다. 그래서 작은 릴리즈지만, 통보가 틀린 봇은 로직이 틀린 봇보다 위험할 수 있다. 사람은 통보를 보고 개입 여부를 정하기 때문이다. 손절 -5%가 지킨다고 믿었던 자리에 실제로는 -3% 트레일이 서 있었다면, 그 반대였어도 문제다. 엔진을 새로 붙일 때 표시와 기록 계층의 목록을 먼저 만들어 두는 것, 이번에 추가된 체크리스트다.

피터 린치는 자기가 무엇을 왜 보유하고 있는지 두 문장으로 말하지 못하면 문제라고 했다. 봇도 같다. 산 이유를 제 입으로 정확히 말하게 만드는 것까지가 배포다.


약어 풀이

* 이 글에 나온 영어 약어를 풀어 둔다.

  • AC (Accelerator Oscillator): 가속 오실레이터. AO 에서 AO 의 5일 이동평균을 뺀 모멘텀 가속 지표.
  • AO (Awesome Oscillator): 중간가(고가와 저가의 평균)의 5일 평균에서 34일 평균을 뺀 모멘텀 지표.
  • KST (Korea Standard Time): 한국 표준시.