Origami Tech로 2단 레이어 선물 암호화폐 트레이딩 봇 만드는 방법

소개
이 가이드에서는 Origami Tech에서 포지션을 인식하는 선물 봇을 처음부터 만들어 봅니다. 이 전략은 1분 RSI 데이터를 사용해 롱 또는 숏 포지션을 열고, 정해진 가격 변동 이후 기존 포지션에 추가 진입하며, 지정한 수익 목표에서 전체 포지션을 청산합니다.
로직은 두 개의 그리드 레이어로 나뉩니다.
- 진입 및 물타기 레이어
- Reduce Only 청산 레이어
이렇게 분리하면 트레이딩 봇 전략의 각 부분을 더 쉽게 설정하고 테스트하고 관리할 수 있습니다.
이 가이드에서 배울 내용은 다음과 같습니다.
- 워크스페이스를 만들고 거래소 계정 연결하기
- One Way 포지션 모드로 선물 트레이딩 봇 만들기
- 매수 및 매도 출력값 설정하기
- 1분 캔들의 RSI 신호 사용하기
- 봇이 현재 포지션에 반응하도록 만들기
- 손익분기 가격을 기준으로 물타기 로직 추가하기
- 청산용 Reduce Only 레이어 별도로 만들기
- 시뮬레이션을 검토하고 봇 실행하기
시작하기 전에, 암호화폐 트레이딩 봇은 결과가 아니라 실행을 자동화한다는 점을 기억하세요. RSI 임계값, 물타기 규칙, 수익 목표가 수익을 보장하지는 않습니다. 로직을 신중하게 테스트하고 감당할 수 있는 금액만 사용하세요.
Origami Tech에서 그리드 레이어가 작동하는 방식
Origami Tech에서 그리드는 전략 로직의 한 레이어입니다. 가격 범위 전반에 고정 주문을 여러 개 배치하는 전통적인 그리드 트레이딩 전략을 의미할 필요는 없습니다.
각 레이어는 별도의 작업을 수행할 수 있습니다. 예를 들어 한 레이어는 시장가 가까이에 호가를 내고, 다른 레이어는 더 넓은 범위에 주문을 배치하며, 세 번째 레이어는 익절이나 리스크 관리를 담당할 수 있습니다. 각 레이어는 독립적으로 활성화하거나 비활성화할 수도 있습니다.
이 가이드의 봇은 진입과 청산의 요구 사항이 다르기 때문에 두 개의 레이어를 사용합니다. 첫 번째 레이어는 익스포저를 늘릴 수 있고, 두 번째 레이어는 익스포저를 줄이기만 할 수 있습니다.
이 구조는 모든 조건, 가격, 수량, 포지션 확인을 하나의 거대한 수식에 몰아넣지 않아도 되므로 선물 그리드 봇을 만들 때 유용합니다.
이 가이드에서 사용하는 트레이딩 봇 전략
이 예시는 Extended의 선물 시장에서 One Way 포지션 모드와 PUMP 거래쌍을 사용해 만들었습니다.
봇은 다음 규칙을 따릅니다.
- 1분 캔들 기준으로 RSI를 평가합니다.
- RSI가 30 이하이면 롱 진입을 준비합니다.
- RSI가 70 이상이면 숏 진입을 준비합니다.
- 매수 주문 1건과 매도 주문 1건을 냅니다.
- 예시에서 각 초기 주문은 약 $20 규모입니다.
- 이미 포지션이 있는 경우, 가격이 손익분기 가격에서 1% 벗어나고 해당 RSI 조건이 충족되면 포지션에 추가 진입할 수 있습니다.
- 두 번째 레이어는 설정 가능한 수익 목표에서 전체 포지션을 청산합니다.
- 청산 레이어는 Reduce Only를 사용하므로 청산 주문이 반대 방향 익스포저를 새로 열 수 없습니다.
이 값들은 작업 흐름을 보여 주기 위한 것이며, 모든 시장에 권장되는 설정이 아닙니다.
1단계: 워크스페이스 만들기
Origami Tech에 가입한 후 워크스페이스를 만드세요.
워크스페이스는 특정 암호화폐 트레이딩 구성에 사용되는 계정, 봇, 레이아웃, 권한을 하나로 묶습니다. 팀원에게는 Admin, Editor, Viewer, Analyst 역할을 부여할 수 있습니다. Admin은 봇을 관리하고 계정을 추가할 수 있습니다.
이미 워크스페이스가 있다면 해당 워크스페이스를 열고 계정 설정으로 넘어가세요.

2단계: 거래소 계정 연결하기
계정 메뉴를 열고 Add Account를 클릭합니다. 사용할 거래소를 선택하고 연결 절차를 완료하세요.
구체적인 절차는 거래소에 따라 다릅니다.
- 중앙화 거래소는 API 자격 증명과 함께 Origami Tech IP 주소를 화이트리스트에 추가하도록 요구할 수 있습니다.
- 지원되는 탈중앙화 거래소는 일반적으로 지갑 연결 방식을 사용합니다.
봇을 만들기 전에 계정에 사용 가능한 잔고가 충분한지, 선택한 시장에서 선물 거래가 가능한지 확인하세요.
3단계: 선물 암호화폐 트레이딩 봇 만들기
Bots 페이지로 이동해 Add Bot을 클릭합니다.
다음과 같이 설정합니다.
- 마켓 유형: Futures
- 계정: 연결한 Extended 계정
- 포지션 모드: One Way
- 거래쌍: PUMP/USD
- 마진 모드: Cross
- 봇 이름: 전략을 알아보기 쉬운 이름
- 레버리지: 이 예시에서는 10x
그런 다음 Continue를 클릭합니다.

포지션 모드는 중요합니다. One Way 모드는 상품별로 하나의 순포지션만 유지합니다. Hedge Mode는 이를 지원하는 거래소에서 롱과 숏 포지션을 동시에 유지할 수 있습니다. 이 가이드의 로직은 One Way 모드를 기준으로 설계되었으므로, 포지션 확인 로직을 수정하지 않은 채 Hedge Mode에 그대로 적용해서는 안 됩니다.
Extended는 이 구성에서 멀티 마진이나 교차 담보를 지원하지 않습니다. 각 시장은 해당 견적 자산을 기준으로 거래되므로, 봇을 시작하기 전에 계정에 해당 견적 자산이 충분히 있어야 합니다.
이 예시의 10x 레버리지는 설정 방법을 보여 주기 위한 것이며 권장값으로 간주해서는 안 됩니다.
4단계: 프리셋으로 시작하거나 처음부터 만들기
Origami Tech는 가져와서 조정할 수 있는 트레이딩 전략 프리셋을 제공합니다. 프리셋은 사용 가능한 입력값, 함수, 출력값을 이해하는 데 도움이 되지만 수익을 약속하는 것으로 받아들여서는 안 됩니다.
이 가이드에서는 전략을 처음부터 만듭니다. 봇 에디터를 열고 필요하면 기존 그리드 레이어를 삭제한 다음 새 그리드 레이어를 추가하세요.
직접 구성하기 전에 Futures | One Way | RSI Pivot Grid MM 프리셋을 살펴볼 수도 있습니다. 이 프리셋은 1분 RSI 피벗을 사용하고, 익스포저 변화에 따라 스프레드와 주문 크기를 조정하며, 작은 익절 구간을 두고 손익분기 가격 주변에 청산 주문을 배치합니다.

5단계: 필수 그리드 출력값 설정하기
모든 그리드 레이어에는 네 가지 출력값이 필요합니다.
- Execute Price
- Order Amounts
- Buy Order Count
- Sell Order Count
먼저 매수와 매도의 가격 및 수량 변수를 각각 따로 만듭니다. 그런 다음 주문 방향에 따라 출력값을 연결합니다. execute_price 출력값은 매수 주문에는 price_buy를, 매도 주문에는 price_sell을 사용합니다. 해당 수량은 execute_volume을 통해 반환됩니다.
이 예시에서는 매수 주문 수와 매도 주문 수를 모두 1로 설정합니다.

이 단계에서는 수식에 정의되지 않은 변수 오류가 표시될 수 있습니다. 캔들, RSI, 가격, 수량 변수를 추가하기 전까지는 정상적인 현상입니다.
6단계: 1분 RSI 신호 추가하기
candles_futures('m1')을 사용해 1분 간격의 선물 캔들을 참조하는 candles_ 변수를 만듭니다. 캔들 시리즈를 한 번만 정의해 두면 나머지 수식이 더 짧아지고 검토하기도 쉬워집니다.
그다음 두 개의 RSI 임계값을 정의합니다.
- 롱 임계값: 30
- 숏 임계값: 70
RSI 계산을 사용해 각 임계값에 해당하는 가격을 구합니다. 매수 측은 롱 임계값에, 매도 측은 숏 임계값에 반응해야 합니다.

매수와 매도 측 사이에서 수식을 복제할 때는 주의하세요. 매도 수식이 롱 임계값을 참조하면 Grid Simulation에서 매수 가격과 매도 가격이 동일하게 표시될 수 있습니다. 매수 수식은 롱 임계값을, 매도 수식은 숏 임계값을 사용해야 합니다.
바로 이 때문에 의미 있는 변경을 할 때마다 시뮬레이션을 검토해야 합니다.
7단계: 주문 금액 설정 및 수량 계산하기
예시에서는 quote_usd를 20으로 정의하므로 각 주문은 약 $20 규모가 됩니다.
Origami Tech는 수량을 고정 달러 금액이 아니라 토큰 또는 계약 수로 전송합니다. amount_buy를 quote_usd / execute_price로 계산하고 amount_sell에도 같은 계산을 적용합니다. 결과 수량은 실행 가격에 따라 달라집니다. 매수 가격과 매도 가격이 다르면 두 주문이 대략 같은 금액이라도 수량은 서로 달라집니다.
수량 변수를 정의한 후 Grid Simulation을 새로 고칩니다. 계산된 가격과 수량이 적용된 매수 주문 1건과 매도 주문 1건이 표시되어야 합니다.

이제 레이어가 주문을 생성할 수 있지만 아직 포지션을 인식하지는 못합니다. 추가 조건이 없으면 현재 익스포저와 관계없이 같은 진입 주문을 계속 낼 수 있습니다.
8단계: 현재 포지션 읽기
현재 포지션 변수를 position('one_way', 'cross')로 만듭니다. 그러면 전략은 사용 가능한 포지션 수량을 이용해 현재 포지션이 없는지, 롱 포지션이 열려 있는지, 숏 포지션이 열려 있는지 판단합니다.
전략은 사용 가능한 포지션 수량으로 다음 세 가지 상태를 구분합니다.
- 0: 열린 포지션 없음
- 0보다 큼: 롱 포지션 보유 중
- 0보다 작음: 숏 포지션 보유 중
가격 수식은 position_available_quantity == 0인지 확인합니다. 조건이 참이면 봇은 초기 RSI 진입 로직을 사용합니다. 거짓이면 포지션 손익분기 가격을 기준으로 한 물타기 로직으로 전환합니다.
이 포지션 확인을 통해 첫 번째 레이어는 단순히 신호를 반복 생성하는 도구에서 포지션을 인식하는 그리드 트레이딩 봇으로 바뀝니다.
9단계: 호가창 데이터로 초기 진입 제한하기
RSI에서 도출된 가격은 시장이 빠르게 움직일 때 적절하지 않을 수 있습니다. 불리한 가격에 초기 주문을 내지 않도록 신호 가격을 현재 호가창 데이터와 결합하세요.
롱 측은 RSI 기반 진입가를 현재 최우선 매수호가와 비교해 더 적절한 매수 가격을 사용합니다. 숏 측은 현재 최우선 매도호가를 사용해 반대 로직을 적용합니다.
이렇게 해도 실행 리스크가 사라지지는 않습니다. 단지 지표 가격에만 의존하지 않고 실시간 호가창을 고려하도록 진입 로직을 보완할 뿐입니다.
10단계: 손익분기 가격 기준 물타기 추가하기
이미 포지션이 열려 있다면 첫 번째 레이어는 원래 진입 가격 대신 포지션 손익분기 가격을 기준으로 다음 주문을 계산해야 합니다.
물타기 간격을 1%로 설정합니다.
- 롱 포지션의 경우 다음 매수 가격은 손익분기 가격보다 1% 낮습니다.
- 숏 포지션의 경우 다음 매도 가격은 손익분기 가격보다 1% 높습니다.
해당 RSI 조건은 여전히 충족되어야 합니다. 따라서 롱 물타기 주문에는 롱 RSI 조건이, 숏 물타기 주문에는 숏 RSI 조건이 필요합니다.
호가창 제한도 다시 적용되므로 계산된 가격이 현재 매수호가 또는 매도호가와 맞게 유지됩니다.

진입 및 물타기 그리드 복사하기
아래 블록에는 진입 및 물타기 그리드 전체가 들어 있습니다. Post Only를 활성화하고 Reduce Only는 비활성화 상태로 두세요.
execute_price = price_buy if side == 'buy' else price_sell
execute_volume = amount_buy if side == 'buy' else amount_sell
buy_orders_count = 1
sell_orders_count = 1
candles_ = candles_futures('m1')
price_buy = min(rsi_to_price(candles_, rsi_long_open), orderbook_futures().bid[0].price) if position_available_quantity == 0 else min(position_breakeven_price * (1 - gap), rsi_to_price(candles_, rsi_long_open), orderbook_futures().bid[0].price)
quote_usd = 20
amount_buy = quote_usd / execute_price
price_sell = max(rsi_to_price(candles_, rsi_short_open), orderbook_futures().ask[0].price) if position_available_quantity == 0 else max(position_breakeven_price * (1 + gap), rsi_to_price(candles_, rsi_short_open), orderbook_futures().ask[0].price)
amount_sell = quote_usd / execute_price
rsi_long_open = 30
rsi_short_open = 70
position_ = position('one_way', 'cross')
gap = 0.01
물타기는 익스포저를 늘리므로 시장이 포지션과 반대 방향으로 계속 움직이면 손실이 커질 수 있습니다. 물타기 빈도만으로는 완전한 그리드 트레이딩 전략이 정의되지 않습니다. 포지션 한도, 사용 가능한 잔고, 청산 리스크, 수수료, 시장 상황도 함께 고려해야 합니다.
11단계: Reduce Only 청산 레이어 추가하기
이제 첫 번째 레이어가 초기 진입과 물타기를 처리하지만, 수익이 난 포지션을 청산하지는 않습니다. 청산용 두 번째 그리드 레이어를 추가하고 Reduce Only를 활성화하세요.
청산 레이어는 포지션이 있을 때만 주문을 내야 합니다.
- 포지션 수량이 0보다 작으면 숏 포지션을 청산하기 위해 매수 주문을 낼 수 있습니다.
- 포지션 수량이 0보다 크면 롱 포지션을 청산하기 위해 매도 주문을 낼 수 있습니다.
- 포지션 수량이 0이면 레이어는 주문을 내지 않아야 합니다.
청산 가격은 포지션 손익분기 가격과 소수로 표현한 설정 가능한 수익 목표로 계산합니다. take_profit을 0.002로 설정하면 0.2%를 의미합니다.
롱 포지션의 경우 매도 가격은 손익분기 가격 × (1 + take_profit)으로 계산합니다. 숏 포지션의 경우 매수 가격은 손익분기 가격 × (1 - take_profit)으로 계산합니다. 주문 수량은 사용 가능한 전체 포지션을 청산하도록 설정합니다.
여기서는 Reduce Only가 필수입니다. 이 옵션이 없으면 수량이 너무 크거나 반복된 청산 주문 때문에 포지션이 청산된 계정에 반대 방향의 새 포지션이 열릴 수 있습니다.

Reduce Only 청산 그리드 복사하기
이 레이어에서는 Post Only와 Reduce Only를 모두 활성화하세요.
execute_price = price_buy if side == 'buy' else price_sell
execute_volume = position_available_quantity
buy_orders_count = 1 if position_available_quantity < 0 else 0
sell_orders_count = 1 if position_available_quantity > 0 else 0
position_ = position('one_way', 'cross')
price_buy = position_breakeven_price * (1 - take_profit)
price_sell = position_breakeven_price * (1 + take_profit)
take_profit = 0.002
12단계: Grid Simulation 검토하기
봇을 저장하기 전에 Grid Simulation을 새로 고치세요.
다음 사항을 확인합니다.
- 첫 번째 레이어가 매수 1건, 매도 1건을 초과해 반환하지 않는지
- 매수 측이 롱 RSI 임계값을 사용하는지
- 매도 측이 숏 RSI 임계값을 사용하는지
- 주문 금액이 예상한 계약 수량으로 변환되는지
- 포지션이 없을 때만 초기 진입이 나타나는지
- 물타기 가격이 손익분기 가격을 기준으로 계산되는지
- 롱과 숏 측이 올바른 매수호가 또는 매도호가 데이터를 사용하는지
- 청산 레이어가 포지션이 있을 때만 작동하는지
- 청산 수량이 전체 포지션 수량과 일치하는지
- 청산 레이어에 Reduce Only가 활성화되어 있는지
시뮬레이션은 현재 시점에 레이어가 반환할 결과를 보여 줍니다. 봇을 시작하기 전에 정의되지 않은 변수, 중복된 조건, 잘못된 주문 방향, 예상치 못한 가격을 찾는 데 도움이 됩니다. 다만 트레이딩 봇의 향후 수익을 예측하지는 않습니다.
13단계: 봇 저장 및 실행하기
두 레이어가 모두 의도한 출력값을 반환하면 설정을 저장하고 Run Bot을 클릭하세요.
트레이딩 터미널을 열고 봇 보기로 전환합니다. 활성 주문이 차트와 주문 테이블에 표시되며, 여기서 가격, 수량, 금액을 확인할 수 있습니다.

전략이 생성한 주문을 수동으로 취소하더라도 조건이 계속 유효하면 봇이 해당 주문을 다시 낼 수 있습니다. 주문이 다시 생성되지 않기를 원한다면 해당 레이어를 중지하거나 조정하세요.
실행 후에도 포지션, 활성 주문, 사용 가능한 잔고, 수수료, 봇 상태를 계속 모니터링하세요. 자동화는 반복적인 수동 작업을 없애 주지만 관리 감독의 필요성까지 없애 주지는 않습니다.
결론
이 선물 트레이딩 봇은 포지션의 전체 사이클을 두 개의 그리드 레이어로 나눕니다.
첫 번째 레이어는 1분 RSI 데이터를 읽고 롱과 숏 진입을 준비하며, 이미 포지션이 있으면 물타기 로직으로 전환합니다. 두 번째 레이어는 손익분기 가격과 설정 가능한 수익 목표를 사용해 Reduce Only 모드로 전체 포지션을 청산합니다.
진입, 물타기, 청산 규칙이 논리적으로 분리되어 있어, 이렇게 구성한 작업 흐름은 하나의 거대한 수식보다 점검하기 쉽습니다. 이후 Grid Simulation으로 봇을 실전 가동하기 전에 각 레이어가 반환할 주문을 최종 확인할 수 있습니다.
이 예시는 완성된 권장안이 아니라 출발점이 되는 구조로 활용하세요. 시장, 임계값, 주문 금액, 물타기 간격, 수익 목표, 레버리지, 리스크 한도는 직접 테스트한 결과와 계정 상황에 맞게 조정하세요.
Origami Tech와 함께하는 스마트한 트레이딩
강력한 자동 트레이딩 터미널로 암호화폐 거래 수준을 한 단계 높여보세요. 수익은 극대화하고 리스크는 최소화하며 24시간 내내 시장을 앞서 나가세요.



.jpeg)
