Python 3.10 Numba
조건에 맞는 BTC 전략을 찾아서 트레이딩뷰 전략으로 만들어 달라는 의뢰였습니다. 조건은 양방향 매매, 승률 50% 이상, PF 2 이상, 거래 300건 이상이었습니다. BTCUSDT 선물 6.6년 데이터로 약 400만 조합을 돌렸는데 네 조건을 동시에 만족하는 전략은 없었습니다. 왜 없는지 계산해서 보고했습니다. 2026년 5월 작업이고, 백테스트 성적은 이 페이지에 싣지 않습니다.
트레이딩뷰 전략 테스터는 조합 하나를 돌려 보기에는 좋지만 수만 조합을 훑기에는 맞지 않습니다. 그래서 같은 로직을 파이썬으로 짜서 빠르게 돌렸습니다. 1시간봉 기준으로 한 조합에 약 1.5ms, 100만 조합에 25분이 걸립니다. 괜찮은 후보가 나오면 그때 Pine으로 옮겨 의뢰인 차트에서 확인합니다.
| 변형 | 내용 |
|---|---|
| V1~V21 | 풀백 진입의 파라미터 최적화. EMA에 닿은 뒤 2봉 확인, 상위 시간봉 추세, RSI 조건을 봅니다 |
| V22~V25 | 슬리피지 맞추기, 1시간봉 변형 |
| V26~V33 | 추세추종. 트레일링과 상위 EMA 이탈 청산, 피라미딩 |
| V36~V37 | 풀백 방식을 버리고 EMA 크로스와 돈치안 돌파로 시도 |
| V38~V42 | 평균회귀, 다중 신호, ATR 기반, 양방향 |
손익비 2:1에 승률 50%라는 요구는 슬리피지 1% 환경에서 거래당 기대값이 음수입니다.
익절 +2.0% − 수수료 0.1% = +1.9% 손절 −1.0% − 슬리피지 1.0% − 수수료 0.1% = −2.1% 기대값 = 0.5 × 1.9 − 0.5 × 2.1 = −0.1% (거래당, 음수)
슬리피지를 0.1%로 후하게 잡아도 BTC 양방향에서 거래 300건을 넘기는 조합의 승률은 40%를 넘지 못했습니다. 6.6년 데이터가 대체로 강세장이어서 숏 진입에 헛신호가 많았던 탓도 있습니다. 이 결과를 그대로 보고하고, 조건을 하나씩 양보하면 무엇이 남는지 알려 드렸습니다. 승률이나 양방향을 양보하면 롱 전용 추세추종이 남습니다. 거래 수를 양보하면 양방향 후보가 하나 생깁니다. 여러 전략을 함께 운용하는 방법도 있습니다. 무엇을 고를지는 의뢰인이 정했고, 선택지별 성적은 의뢰인에게만 드렸습니다.
의뢰를 받으면 조건들이 동시에 성립할 수 있는지부터 기대값으로 계산해 봅니다. 양방향에 높은 승률을 원하시는 경우에는 슬리피지와 손익비를 먼저 확인합니다. 시간봉마다 맞는 청산 방식도 달랐습니다. 1시간봉은 트레일링과 상위 EMA 이탈 청산이, 15분봉은 고정 익절과 손절이 맞았습니다. 5분봉은 잡음이 많아 양방향에서 통과한 조합이 없었습니다.
전략을 실거래로 연결하는 방법은 트레이딩뷰 웹훅 자동매매 가이드에 있습니다.