이동평균선(이평선) 매매법을 자동매매로 만들기

작성자

카테고리:

결론부터 말씀드리면, 이동평균선 매매는 규칙이 명확해 자동화 입문에 적합합니다. 다만 대부분은 ‘진입 규칙’이 아니라 ‘청산과 손절 규칙’에서 무너집니다.

저는 유튜브에서 본 매매기법 영상 주소를 AI에 붙여넣고 “이걸 그대로 따라 하는 프로그램, 만들 수 있어?”라고 물으며 시작했습니다. 이평선 정배열과 돌파를 규칙으로 삼은 봇이었습니다.

이평선을 ‘규칙’으로 번역하기

이평선 전략은 말로 풀면 조건과 행동의 묶음입니다. 이렇게 정의해 AI에게 넘기면 코드로 옮겨줍니다.

  • 정배열 확인: 단기 이평선이 장기 이평선 위에 있는가
  • 진입: 기준선(전고점·이평선 등)을 위로 돌파하면 매수
  • 청산: 기준선을 이탈하거나 목표에 도달하면 매도

진짜 어려운 건 청산과 손절이다

규칙 예시 초보의 함정
진입 돌파 시 매수 신호 남발
익절 고점 대비 일정% 밀리면 매도 너무 짧게 잡음
손절 진입가 대비 일정% 하락 너무 길게 잡음
시간 장 마감 전 전량 청산 수익 미완성 청산

제 첫 봇이 딱 이 함정에 빠졌습니다. 익절은 짧게, 손절은 길게 잡혀 있어서 승률이 16.7%일 때 손익비가 0.07까지 떨어졌습니다. 이기는 건 조금, 지는 건 크게. 승률이 높아도 계좌는 마이너스였습니다. 전고점 대비 조금만 밀려도 파는 조기 청산에 잔파동마다 털렸습니다.

백테스트와 파라미터의 함정

과거 데이터에만 그럴듯하게 맞추면 과적합에 빠집니다. 저는 추격 익절 시작점과 손절폭 같은 파라미터를 수십 번 갈아엎었지만, 근본 구조가 그대로면 숫자만 바꿔서는 해결되지 않았습니다. 결국 접근법 자체를 바꿔야 했습니다.

파라미터를 수십 번 갈아엎은 이야기

규칙을 정했다고 끝이 아닙니다. 저는 손절폭, 추격 익절 시작점, 재진입 금지 시간 같은 값을 수십 번 바꿔가며 백테스트를 돌렸습니다. 봇의 버전 이름만 봐도 무엇과 싸웠는지 보였습니다. 위기 대응 모드를 넣고, 프리마켓 돌파로 진입을 압축하고, 조기 익절과 뇌동 재진입을 막으려 쿨타임을 넣고, 속임수 등락을 방어하는 버전까지 갔습니다. 버전 번호가 올라간다는 건 그만큼 얻어맞았다는 뜻이었습니다.

돌파 매매의 함정 — 휩쏘

이평선 돌파 전략의 가장 큰 적은 ‘속임수 돌파’입니다. 기준선을 살짝 뚫고 매수 신호를 준 뒤 곧바로 되밀리는 움직임에, 봇은 사자마자 손절당합니다. 사람 눈엔 뻔한 속임수도 규칙만 보는 봇은 그대로 걸려듭니다. 그래서 돌파 확인에 조건을 더하거나(거래량, 유지 시간), 진입 직후 일정 구간은 손절을 유예하는 식의 방어가 필요합니다.

규칙보다 검증이 먼저다

정직하게 말하면, 저는 이 모든 조정에도 첫 봇을 살리지 못했습니다. 파라미터를 아무리 만져도 근본 구조가 그대로면 숫자놀음일 뿐이었습니다. 결국 접근법 자체를 바꿔야 했습니다. 이평선 매매를 자동화하려는 분께 드리는 조언은 하나입니다. 진입 규칙을 화려하게 만드는 데 쓰는 시간의 두 배를, 청산과 손절을 검증하는 데 쓰십시오.

자동화의 진짜 목적

이평선 매매를 자동화하려는 이유는 대개 ‘감정을 빼기 위해서’입니다. 사람은 겁이 나면 팔고, 욕심이 나면 더 삽니다. 봇은 규칙만 지키니 그 감정을 배제할 수 있습니다. 하지만 역설적으로, 규칙이 잘못돼 있으면 봇은 그 잘못된 판단을 감정 없이, 지치지도 않고 반복합니다. 제 첫 봇이 잔파동마다 조기 청산을 되풀이한 것이 정확히 그런 경우였습니다.

그래서 이평선 전략을 자동화할 때는 진입 신호의 정확도보다 ‘틀렸을 때 얼마나 적게 잃는가’를 먼저 설계해야 합니다. 손절폭, 하루 최대 손실 한도, 연속 손실 시 멈춤 같은 안전장치가 규칙 안에 들어 있어야 합니다. 화려한 진입 규칙은 눈길을 끌지만, 계좌를 오래 지키는 것은 언제나 냉정한 방어 규칙입니다.

버전 이름이 곧 자백이다

첫 봇은 한 번에 완성되지 않았습니다. 폴더에 남은 버전 이름만 따라가도 무엇과 싸웠는지 보입니다. 상황에 따라 손절선을 달리하는 모드를 넣은 버전, 프리마켓 돌파로 진입을 압축한 버전, 조기 익절과 뇌동 재진입을 막으려 쿨타임을 넣은 버전, 그리고 속임수 등락을 방어한다는 뜻의 이름을 단 버전까지 갔습니다.

버전 번호가 올라간다는 것은 그만큼 얻어맞았다는 뜻이었습니다. 이름에 ‘방어’가 붙어 있다는 건, 그만큼 그 지점에서 털렸다는 자백이기도 했습니다. 이평선이라는 단순한 아이디어 하나를 실전에서 살리려 다섯 번, 열 번 이름을 갈아치운 셈입니다.

그럼에도 근본은 안 바뀐다

씁쓸한 교훈은, 이렇게 버전을 거듭해도 근본 구조가 그대로면 결과는 크게 달라지지 않는다는 것이었습니다. 손절폭과 익절 시작점 같은 파라미터를 아무리 정교하게 다듬어도, 익절이 짧고 손절이 긴 기본 골격을 바꾸지 않으면 손익비는 회복되지 않았습니다. 결국 저는 버전을 하나 더 올리는 대신 접근법 자체를 바꾸는 쪽을 택했습니다. 파라미터 조정으로 풀리지 않는 문제는, 구조를 바꿔야 풀립니다.

이 글은 특정 종목이나 수익을 권하는 글이 아닙니다. 이평선은 출발점일 뿐이며, 청산과 손절의 균형(손익비)을 잡지 못하면 어떤 지표를 얹어도 계좌를 지키지 못합니다. 자동화의 핵심은 화려한 진입이 아니라 냉정한 방어 규칙입니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다