TRAMS AI 프로젝트 문의
개발 사례

브릭봇(BRICKBOT): 자동매매 프로그램 개발과 Pine Script·TradingView 웹훅 연동

브릭봇 자동매매 프로그램 개발 사례입니다. OpenAI API 기반 Pine Script 생성, TradingView 웹훅 중개 서버, 신호와 필터를 조합하는 자체 코드 빌더의 구현 과정을 소개합니다.

핵심 요약

1. 사용자가 트레이딩 전략을 직접 구성하고 차트·자동매매 연결로 이어갈 수 있는 브릭봇을 개발했습니다. 2. OpenAI API를 이용한 Pine Script 생성, TradingView 웹훅 라우팅, 자체 코드 빌더를 연결했습니다. 3. 기존에 축적한 연동 기술을 재사용해 가장 어려운 코드 빌더에 개발 시간을 집중하고 정해진 기간 안에 구현했습니다.

프로젝트 소개

트레이딩 아이디어가 있어도 이를 차트에서 확인하거나 프로그램으로 연결하려면 다른 종류의 작업이 필요합니다. 매수·매도 조건을 코드로 표현하고, 차트의 신호를 외부 프로그램에 전달하며, 실행 환경에 맞는 연결 방식을 준비해야 합니다. 전략을 설명할 수 있다는 것과 실행 가능한 프로그램을 만든다는 것은 서로 다른 문제입니다.

브릭봇(BRICKBOT)은 이 간격을 줄이기 위해 만든 트램스의 내부 서비스입니다. 사용자는 문장으로 전략을 설명하거나 화면의 블록을 조합해 조건을 구성하고, 결과를 Pine Script와 자동매매 연결에 활용할 수 있습니다. 서비스 이름의 ‘브릭’처럼 신호와 필터를 부품으로 다루는 것이 특징입니다.

자동매매 프로그램 개발에서 이 프로젝트가 해결하려던 과제는 전략 입력부터 차트와 실행 환경까지 이어지는 연결이었습니다. PC 프로그램, TradingView, 중개 서버, AI API, 증권사·거래소 API가 각각 다른 방식으로 동작하기 때문에 하나의 화면을 잘 만드는 것만으로는 완성되지 않습니다.

현재 공개 화면에는 ‘브릭으로 만들기’와 ‘AI로 만들기’가 나뉘어 있고, 신호·필터 선택, 전략 조립, Pine Script, 자동매매 코드 등의 흐름이 마련돼 있습니다. 이 글은 투자 성과가 아니라 이러한 도구를 어떻게 제품으로 구성했는지 설명하는 개발 사례입니다.

AI 전략 코드 생성: OpenAI API로 Pine Script 만들기

첫 번째 기능은 사용자가 설명한 전략을 Pine Script로 바꾸는 것입니다. Pine Script는 TradingView 차트에서 지표와 전략을 작성하는 언어입니다. 사용자가 원하는 조건을 말로 전달하더라도 차트에서 실행하려면 입력값, 계산식, 신호 발생 조건이 코드로 정리돼야 합니다.

브릭봇에는 OpenAI API를 이용한 Pine Script 생성 기능이 들어갔습니다. AI는 사용자의 설명을 코드 초안으로 바꾸는 역할을 맡고, 서비스는 입력 방식과 생성 결과를 확인하는 흐름을 제공합니다. ‘AI가 코드를 쓴다’는 기능을 실제 제품에 넣으려면 앞뒤의 조건을 함께 설계해야 합니다.

예를 들어 사용자가 ‘이동평균선을 돌파하면 신호를 보여달라’고 입력했다면 어떤 기간의 이동평균선인지, 종가 기준인지, 같은 방향의 신호를 반복해서 보여줄지에 따라 결과가 달라집니다. 이런 항목을 입력 단계에서 정리하면 모델이 임의로 선택하는 범위를 줄일 수 있습니다.

브릭봇의 공개 화면에서는 인디케이터와 스트래티지 유형을 구분하고, 동일 방향 연속 신호와 매도 조건 생성 여부를 설정할 수 있습니다. 차트에 표시할 지표를 만드는 일과 전략의 조건을 구성하는 일을 사용자가 구분하도록 돕는 장치입니다. 입력 조건이 화면에 드러나면 결과가 예상과 다를 때 무엇을 바꿀지도 찾기 쉬워집니다.

생성 코드를 제품에 연결할 때는 문법이 맞는지와 사용자의 뜻을 제대로 담았는지를 나눠 확인해야 합니다. 컴파일되는 코드라도 봉이 진행 중일 때 신호를 낼지, 확정된 뒤에 낼지에 따라 작동이 달라집니다. 조건을 설명하는 문장, 입력값, 차트에서 보이는 결과를 함께 비교할 수 있는 구조가 필요합니다.

이런 코드 생성 기능의 가치는 수익을 대신 판단하는 데 있지 않습니다. 반복해서 작성하던 지표 코드를 초안으로 만들고, 사용자가 전략의 조건을 확인하고 수정하는 과정을 돕는 데 있습니다.

브릭봇의 전략 설명·OpenAI API·Pine Script 생성 구성도
<브릭봇(BRICKBOT)>

TradingView 웹훅 연동: 중개 서버로 신호와 실행 요청 연결하기

두 번째 기능은 TradingView에서 발생한 신호를 외부 프로그램으로 전달하는 웹훅 라우팅입니다. 웹훅은 정해진 이벤트가 발생했을 때 다른 시스템의 주소로 내용을 보내는 방식입니다. TradingView에서는 설정한 알림이 발생하면 메시지를 HTTP POST 요청으로 전송할 수 있습니다.

브릭봇은 이 연결에 중개 서버를 두는 구조를 사용했습니다. 차트에서 생성된 알림과 실제 실행 프로그램 사이에 전달 지점을 마련하면, 어떤 전략에서 발생한 요청인지 구분하고 연결 대상에 맞게 처리하는 기능을 구성할 수 있습니다. PC 프로그램과 외부 API가 서로 다른 조건으로 동작하는 환경에서 필요한 연결 계층입니다.

TradingView의 공식 웹훅 안내에는 수신 서버가 3초보다 오래 처리하면 요청이 취소될 수 있다고 설명돼 있습니다. 따라서 알림을 받은 요청 안에서 모든 후속 작업을 끝내려 하기보다, 접수와 실행 처리를 나누는 설계가 적합합니다. 먼저 요청을 확인하고 이후 작업이 이어지도록 구성하면 외부 API 응답이 늦을 때의 처리 기준도 세울 수 있습니다.

이와 같은 중개 서버에는 요청 형식 확인과 중복 실행 방지 기준을 함께 둘 수 있습니다. 전략 식별자, 발생 시각, 종목, 동작 조건을 확인하고 같은 알림이 다시 들어왔을 때 어떻게 처리할지 정하는 방식입니다. 웹훅 메시지에 증권사 계정 비밀번호나 거래소 비밀키를 담는 대신, 실행에 필요한 민감 정보는 해당 실행 환경에서 관리해야 합니다.

또 하나 구분해야 할 점은 Pine Script에 알림 조건을 작성하는 것과 실제 알림을 활성화하는 일이 다르다는 것입니다. TradingView 공식 문서에 따르면 스크립트는 알림 이벤트를 제공하고, 실행할 알림은 차트 화면에서 사용자가 생성합니다. 코드가 완성됐다는 이유만으로 외부 연결까지 자동으로 활성화됐다고 처리하면 사용 과정에서 혼란이 생깁니다.

이 연결을 제품으로 만들 때는 신호 발생, 서버 접수, 실행 요청, 외부 결과를 각각 확인할 수 있어야 합니다. 차트 알림이 도착했다는 사실과 주문이 체결됐다는 사실도 다릅니다. 각 단계의 역할과 결과를 구분하는 것이 여러 실행 환경을 묶는 프로그램의 기본 구조입니다.

브릭봇의 TradingView 웹훅과 중개 서버 연결 구성도
<브릭봇(BRICKBOT)>

자체 코드 빌더: 신호·필터 조합을 코드로 변환하기

세 번째 기능은 사용자가 신호와 필터를 조합하면 코드로 변환하는 자체 코드 빌더입니다. 문장으로 전략을 설명하는 방식과 달리, 화면에 놓인 조건을 직접 선택하고 결합할 수 있습니다. 복잡한 조건도 어떤 부품으로 구성됐는지 눈으로 확인하게 만드는 접근입니다.

브릭봇 공개 화면에는 이동평균선 골든크로스, MACD 골든크로스, 볼린저밴드 돌파 등 여러 신호가 제공됩니다. 여기에 필터를 추가하고 논리식을 구성하면 ‘언제 신호가 발생하는지’와 ‘어떤 상황에서만 그 신호를 사용할지’를 나누어 표현할 수 있습니다.

코드 빌더를 구현하려면 블록의 이름만 저장해서는 부족합니다. 각 블록이 받는 입력값과 계산 조건, 다른 블록과 결합하는 규칙을 함께 정의해야 합니다. 화면에서 기간을 바꾸었을 때 해당 값이 코드에도 반영되고, 선택한 논리 관계가 출력 결과에서 유지돼야 하기 때문입니다.

예를 들어 이동평균선 필터와 매수 신호를 함께 선택했다면 둘 중 하나만 만족해도 되는지, 둘을 동시에 만족해야 하는지에 따라 의미가 달라집니다. 괄호로 묶인 조건이 있다면 계산 순서도 보존해야 합니다. 이처럼 사용자가 보는 조립 구조를 코드의 조건식으로 바꾸는 부분이 빌더의 핵심입니다.

개발 난이도가 높았던 이유도 여기에 있었습니다. 단일 전략의 코드를 작성하는 일과 여러 조건 조합을 일관된 규칙으로 변환하는 도구를 만드는 일은 다릅니다. 블록을 하나 추가할 때 기존 조합에 어떤 영향을 주는지 확인해야 하므로, 화면·데이터 구조·코드 출력의 의미가 서로 맞아야 합니다.

빌더의 검증은 대표 조건을 정해 입력과 출력을 대조하는 방식으로 설계할 수 있습니다. 단일 신호, 필터와 신호의 결합, 같은 방향 반복, 매도 조건 포함 여부를 나눠 확인하면 어느 조합에서 의미가 바뀌는지 찾기 쉽습니다. 이런 검증 가능성을 고려해야 블록 수가 늘어나도 기능을 확장할 수 있습니다.

브릭봇의 신호·필터 블록을 Pine Script로 바꾸는 코드 빌더 구성도
<브릭봇(BRICKBOT)>

성공 요소

가장 큰 제약은 개발 환경의 복잡성이었습니다. 사용자 PC와 차트 서비스, 중개 서버, 생성 AI, 증권사·거래소 연동이 한 기능 안에 걸쳐 있었습니다. 문제가 생겼을 때 어느 구간의 책임인지 구분하지 못하면 작은 오류도 전체 연결을 다시 확인하는 작업으로 번질 수 있습니다.

이 프로젝트에서는 이미 제작한 포트폴리오의 연동 기술을 적극적으로 재사용했습니다. 익숙한 부분을 처음부터 다시 만드는 시간을 줄이고, 가장 난도가 높았던 자체 코드 빌더에 집중할 여유를 확보한 것이 일정 관리의 핵심이었습니다. 재사용의 목적은 코드를 많이 가져오는 것이 아니라 새로운 제품에서 해결해야 할 문제에 시간을 쓰는 데 있었습니다.

또한 AI 코드 생성과 블록 조립을 같은 기능으로 취급하지 않은 점이 중요합니다. 전자는 자연어 설명을 코드 초안으로 바꾸는 방식이고, 후자는 정해진 조건을 규칙에 따라 결합하는 방식입니다. 두 입력 방식을 제공하더라도 사용자가 설정한 전략의 의미가 결과에서 유지되는지가 공통 기준이 됩니다.

브릭봇은 전략을 표현하는 화면과 이를 차트·실행 환경으로 연결하는 기능을 정해진 개발 기간 안에 구현했습니다. 특정 전략의 수익률보다, 새로운 조건을 추가하고 여러 환경에 연결할 수 있는 제품의 구조를 만드는 데 개발의 중심을 두었습니다.

개발 기간 · 비용 · 투입 인력

브릭봇의 개발 기간은 4개월, 투입 인원은 3명, 개발비는 8,000만 원입니다. OpenAI API 기반 코드 생성, TradingView 웹훅 중개, 자체 코드 빌더와 관련 연동을 포함한 해당 프로젝트의 구축 범위 기준입니다.

다른 자동매매 프로그램은 지원할 전략과 실행 환경, 연결할 증권사·거래소에 따라 구현 범위가 달라집니다. 따라서 이 금액은 유사 서비스의 일률적인 견적이 아니라 실제 개발 사례의 규모를 설명하는 수치입니다.

참고 자료

  1. https://brickbot.co.kr/
  2. https://www.tradingview.com/support/solutions/43000529348-how-to-configure-webhook-alerts/
  3. https://www.tradingview.com/pine-script-docs/concepts/alerts/
TRAMS AI

개발 문의

자동매매 프로그램이나 전략 빌더를 준비하고 있다면, 지원할 전략과 연결할 차트·PC·API 환경을 알려주세요. 트램스가 구현 범위와 개발 일정부터 함께 검토하겠습니다.

프로젝트 문의