TVExtBot가이드
주문메시지

주문메시지 항목 설명

주문메시지(TVM)의 각 항목이 무슨 뜻인지, 거래소마다 무엇이 다른지 정리한 참고 문서입니다.

주문메시지가 어떤 주문을 내는지 확인할 때 보는 참고 문서입니다. 주문이 생각과 다르게 들어갈 때 원인을 찾는 데도 씁니다.

먼저 읽어 주세요

  • 주문메시지는 꼭 「메시지 작성」에서 만드세요. 거래소에서 안 되는 조합을 자동으로 막아 줍니다.
  • 직접 고치다 따옴표·쉼표 하나만 틀려도 주문되지 않습니다.
  • 내용을 바꿀 때는 다시 만들거나 단축 주문메시지를 쓰세요.
  • 직접 바꿔도 되는 것은 전략 수량·가격 플레이스홀더와 테스트 모드뿐입니다.

1. 구조

TVM:{"exchange":"binance","account":"기본계정","symbol":"BTC/USDT","type":"limit","side":"sell","price":"last","amount":0.01,"token":"인증키"}:MVT
  • TVM:으로 시작해 :MVT로 끝납니다.
  • 가운데는 "항목":값을 쉼표로 이은 JSON입니다.
한도값
얼러트 하나에 넣는 메시지최대 20개
메시지 리스트 저장 (유료)최대 1000개
메시지 리스트 저장 (무료)최대 20개

여러 주문을 차례로

메시지를 한 줄에 하나씩 이어 붙이면 위에서부터 차례로 실행합니다.

청산한 뒤 롱 진입
TVM:{"exchange":"bybit","account":"기본계정","symbol":"BTC/USDT","type":"market","side":"sell_close","token":"인증키"}:MVT
TVM:{"exchange":"bybit","account":"기본계정","symbol":"BTC/USDT","type":"market","side":"buy","bal_pct":30,"token":"인증키"}:MVT
두 계정에서 동시에 매수
TVM:{"exchange":"bybit","account":"기본계정","symbol":"BTC/USDT","type":"market","side":"buy","bal_pct":30,"token":"인증키"}:MVT
TVM:{"exchange":"bybit","account":"서브계정","symbol":"BTC/USDT","type":"market","side":"buy","bal_pct":30,"token":"인증키"}:MVT
  • 앞 주문이 실패해도 다음 주문은 실행됩니다. 실패는 텔레그램으로 확인하세요.
  • 메시지마다 분당 주문 횟수에 들어갑니다.
  • 사이에 간격이 필요하면 뒤 메시지에 지연시간(delay)을 넣습니다.
  • 단축 주문메시지도 같은 방법으로 이어 붙일 수 있습니다.

전략 수량대로 주문

전체 메시지의 amount에 {{strategy.order.contracts}}를 넣으면 전략이 계산한 수량으로 주문합니다.

  • 전체 메시지에서만 됩니다. 단축 메시지와 전략 변환은 저장한 수량을 씁니다.
  • 진입·청산마다 같은 메시지가 와서 조건식으로 나눠야 합니다.

예제와 순서는 전략 수량대로 주문을 따라 해 주세요.

2. 기본 항목

항목뜻값 / 예필수
exchange거래소upbit, binance-futures … (거래소별 값)필수
accountAPI키 등록의 계정명기본계정(옛 메시지의 *도 기본계정)필수
symbol종목BTC/USDT, BTC/KRW필수(전부청산 제외)
type주문유형market 시장가, limit 지정가필수(전부청산 제외)
side주문방법buy, sell, close … (값)필수
price주문가격last, bid, ask, avg, 숫자지정가일 때
price_pct주문가격 조정(%)-1 = 1% 낮게선택
amount수량(개수·금액)0.01수량 중 하나
amount_typeamount의 단위krw, usdt, usdc, usd …선택
bal_pct수량(자산 대비 %)30수량 중 하나
equitybal_pct의 기준없음 = 잔액, "y" = 총자산선택
delay실행 지연(초)최대 300선택
token인증키자동으로 들어감웹훅 사용 시

주문가격 price

값뜻
last마지막 체결가
bid매수호가 중 가장 높은 값
ask매도호가 중 가장 낮은 값
avg포지션 평균가 (선물·업비트만. 포지션이 없으면 마지막 체결가)
숫자직접 넣은 가격

price_pct로 가격을 % 만큼 옮깁니다. 지정가 매수를 더 싸게 하려면 -1, 지정가 매도를 더 비싸게 하려면 1.

주문수량 amount · bal_pct · equity

  • amount: 기본은 코인 개수입니다.
    • amount_type을 krw(빗썸·업비트)나 usdt로 하면 금액만큼 주문합니다.
    • 일부 선물 마켓은 계약 수량입니다. → 거래소별
  • bal_pct: 자산 대비 %입니다. 수수료 때문에 99% 이하를 권합니다.
  • equity:
    • 잔액 대비(기본): 주문 가능한 현금이 기준. 전액 매수·매도, 포지션 안 청산에 씁니다.
    • 총자산 대비("equity":"y"): 현금 + 코인이 기준. 분할매수를 같은 금액으로 할 때 씁니다.

잔액 대비 vs 총자산 대비

총자산 300만원 (현금 100만 + BTC 100만 + ETH 100만)일 때

  • 잔액 대비 20% × 2번: 20만원 → 16만원 (줄어듦)
  • 총자산 대비 10% × 2번: 30만원 → 30만원 (같음)

레버리지를 쓰면 넣은 수량에 레버리지 배수를 곱해 주문합니다.

3. 주문방법 side

값뜻쓰는 곳
buy매수 (롱 진입)전체
sell매도 (숏 진입, 현물은 보유 코인 매도)전체
close청산선물 한방향 모드
buy_close롱 포지션 청산선물 양방향 모드
sell_close숏 포지션 청산선물 양방향 모드
close_all계정의 모든 포지션 시장가 청산선물
  • 청산 수량을 비우면 100% 청산합니다.
  • 분할청산은 수량(%)을 잔액 대비로 넣습니다.
  • close_all은 종목·유형·수량 없이 항상 시장가 100%입니다.
  • 어느 모드인지는 거래소·마켓이 정합니다. → 거래소별
전부청산
TVM:{"exchange":"bybit","account":"기본계정","side":"close_all","token":"인증키"}:MVT

4. 공통 추가 옵션

항목하는 일값
open_order미체결 먼저 취소 후 주문"cancel" 전부, "cancel-buy", "cancel-sell"
same_order직전과 같은 주문이면 건너뜀"skip", "skip-10s" ~ "skip-24h"
trading_time이 시간대의 얼러트만 실행"09:00-18:00", "21:30-06:00"
condition_exp조건식이 참일 때만 실행"buy={{strategy.order.action}}"
extended_hours장외 거래true → 자세히
slippage시장가 허용 폭(%)0~5, 기본 0.5 → 자세히
cancel_after미체결 자동 취소(초)1~600 → 자세히
dry_run테스트 모드 — 주문 직전에 멈춤true (따옴표 없이)
  • 시간대 밖이거나 조건식이 거짓이면 알림 없이 건너뜁니다.
  • 조건식에는 =, <, >와 플레이스홀더를 씁니다.
  • 같은 주문 건너뛰기는 선물에 포지션이 없으면 적용되지 않습니다.

조건식 예

  • buy={{strategy.order.action}} — 전략 주문이 매수일 때만
  • sell={{strategy.order.action}} — 매도일 때만
  • {{strategy.order.price}}>100 — 체결가가 100보다 클 때만

전략 얼러트 하나에 매수·매도 메시지를 다 넣고 조건식으로 골라 실행할 수 있습니다. → 플레이스홀더 목록

옵션을 바꾸려면 「메시지 작성」에서 고칩니다.

  • 전체 메시지를 쓰면: 다시 만들어 얼러트에 붙여넣습니다.
  • 단축 메시지(주문ID)를 쓰면: 저장된 메시지만 고치면 됩니다. → 차이

테스트 모드 dry_run

  • 실제 주문 없이 얼러트와 메시지 내용을 확인할 때 씁니다. 예) …,"bal_pct":30,"dry_run":true,"token":"인증키"}:MVT
  • 꼭 따옴표 없이 true. "dry_run":"true"로 쓰면 실제로 주문합니다.
  • API키 연결까지 확인하고 주문 직전에 멈춥니다. 결과는 텔레그램(🧪)으로만 옵니다. → 알림봇
  • 최소 수량·잔고·포지션은 확인하지 않습니다. 그것까지 보려면 테스트넷을 쓰세요.
  • 단축 메시지는 고치지 말고 리스트의 테스트 모드 버튼을 쓰세요.
  • 확인이 끝나면 "dry_run":true를 지우고 얼러트를 다시 만들어야 주문합니다.

장외 거래

「메시지 작성」 → 실행 조건 → 장외 거래를 켜면 정규장 밖에도 주문합니다. 메시지에는 "extended_hours":true가 들어갑니다.

① 장외 거래 켜기 ② 미체결 자동 취소 시간(예: 60초)
증권사·계좌국내 NXT미국 주간거래
한국투자증권 실전지원지원
키움증권 실전지원미지원
한투·키움 모의투자미지원미지원

시간은 한국시간입니다.

  • 국내 NXT
    • 프리마켓 08:00–08:50, 애프터마켓 주문 15:30–20:00 (체결은 15:40부터)
    • NXT에서 거래되는 종목만 주문합니다. KRX 장외시장으로 자동 전환하지 않습니다.
  • 한투 미국 주간거래
    • 한국 10:00부터 뉴욕 04:00까지 (서머타임 한국 17:00, 표준시 18:00 종료)
    • 한국시간 월–금 낮입니다.
  • 한투 미국 프리·애프터마켓
    • 장외 거래를 켜지 않아도 주문합니다. 휴장·종목 제한으로 거부될 수 있습니다.

장외 거래를 켜도 모든 시간·모든 종목이 되는 것은 아닙니다. 정규장은 기존 방식으로 주문합니다.

시장가 허용 폭

아래 시장가 주문은 증권사에 시장성 지정가로 냅니다.

  • 한투 미국 주식 시장가
  • 한투·키움 국내 NXT 시간의 시장가

허용 폭 입력란은 「시장가」를 고르고 아래 조건일 때만 나옵니다.

거래소·주문허용 폭
한투 실전 미국 + 시장가가능
한투 실전 국내 + 시장가 + 장외 거래 켬가능
키움 실전 국내 + 시장가 + 장외 거래 켬가능
국내 시장가 + 장외 거래 끔불가
지정가 · 키움 미국 시장가 · 모의투자 · 코인 거래소불가
  • 범위 0–5%, 비우면 0.5%. 항목 이름은 slippage입니다.
  • 국내는 입력란이 보여도 NXT 시간에만 적용됩니다. KRX 정규장은 기존 시장가입니다.
① 시장가 선택 ② 허용 폭(예: 0.5%)
주문증권사에 내는 지정가
매수매도 1호가 × (1 + 허용 폭/100), 호가 단위 올림
매도매수 1호가 × (1 − 허용 폭/100), 호가 단위 내림

미체결 자동 취소

「메시지 작성」 → 실행 조건 → 미체결 자동 취소에 1–600초를 넣습니다. 비우면 꺼집니다. 항목 이름은 cancel_after입니다.

  • 시간이 지나면 남은 수량만 취소합니다. 체결된 부분은 그대로입니다.
  • 트레이딩뷰 얼러트 주문에서만 동작합니다. 바로 주문·퀵주문은 해당 없습니다.
  • 실제 시장가로 낸 주문(국내 정규장 시장가 등)에는 적용되지 않습니다.
  • 취소는 설정 시각보다 조금 늦을 수 있습니다.
대상되는 주문
코인 거래소일반 지정가(조건주문 제외). 페멕스·BingX 선물은 USDT 마켓만
키움 실전·모의일반 지정가(조건주문 제외)
키움 실전 국내 NXT시장성 지정가로 낸 시장가 주문
한투 실전·모의지정가. 실전은 미국 시장가·국내 NXT 시장성 지정가도

알림과 「미체결 먼저 취소」와의 차이

  • 정상 취소는 텔레그램(ℹ️)으로만 알려 드립니다.
  • 취소 실패·상태 확인 실패는 텔레그램과 에러 메시지에 남습니다. 거래소 앱에서 직접 확인·취소해 주세요.
  • open_order는 새 주문 전에 기존 미체결을, cancel_after는 이번 주문의 미체결을 나중에 취소합니다.
  • 한투·키움 시장성 지정가에서 둘을 함께 쓰면, 기존 주문만 취소되고 새 주문은 없을 수 있습니다.

5. 선물 전용 옵션

매수(buy)·매도(sell)에서만 씁니다. 청산에는 못 씁니다. 단, 조건주문은 선물 일반 청산에도 씁니다(현물·close_all 제외).

항목하는 일값 / 주의
position_close포지션 청산 후 주문true. 양방향 모드는 반대 포지션만 청산
reduce_only포지션을 줄이기만true. 잔액 대비 %, 한방향에서만. 레버리지·목표가·손절가와 같이 못 씀
post_only지정가가 테이커로 체결되지 않게true. 지정가만. 테이커가 되면 취소
leverage레버리지종목 최대 이하
margin_type마진모드"isolated" 격리, "cross" 교차. 포지션 있으면 못 바꿈
tp_pct / tp_price목표가 발동매수 +, 매도 − (매수 10 = 10% 위)
tp_lo_pct / tp_lo_price목표가 지정가 (없으면 시장가)비트겟 불가
sl_pct / sl_price손절가 발동매수 −, 매도 + (매수 -5 = 5% 아래)
sl_lo_pct / sl_lo_price손절가 지정가비트겟 불가
trailing_stop추적손절매바이빗·페멕스 등은 가격 거리, 바이낸스 선물·비트겟·OKX·BingX는 콜백 %
ts_ac_pct / ts_ac_price추적손절매 활성화 가격매수 +, 매도 −. 페멕스·BingX 불가
condition_price조건주문: 이 가격에 닿으면 주문"last", "avg", 가격
condition_pct조건가격 대비 %last·avg일 때 필수

조건주문은 목표가·손절가·추적손절매와 같이 쓸 수 없습니다. 바이낸스 스탑마켓, 바이빗 조건부 주문과 같은 기능입니다.

바이낸스 선물: 롱 + 레버리지 5배 + 목표가 3% · 손절가 1.5%
TVM:{"exchange":"binance-futures","account":"기본계정","symbol":"BTC/USDT","type":"market","side":"buy","bal_pct":20,"leverage":5,"margin_type":"isolated","tp_pct":3,"sl_pct":-1.5,"token":"인증키"}:MVT

6. 거래소별 값과 주의사항

거래소exchange 값마켓청산
빗썸bithumbKRW현물
업비트upbitKRW현물
바이낸스 현물binanceUSDT, USDC, BTC, BNB현물
바이낸스 선물binance-futuresUSDT, USDC, USD(COIN-M)거래소 설정대로
바이빗 현물bybit-spotUSDT 등현물
바이빗 선물bybitUSDT, USDUSDT 양방향 / USD 한방향
비트겟 현물bitget-spotUSDT 등현물
비트겟 선물bitgetUSDT, USD양방향
페멕스 현물phemex-spotUSDT 등현물
페멕스 선물phemexUSDT, USDUSDT 양방향 / USD 한방향
OKX 현물okx-spotUSDT 등현물
OKX 선물okxUSDT, USDC, USD양방향
BingX 선물bingxUSDT양방향
한국투자증권kisKOSPI, KOSDAQ, NASD, NYSE, AMEX주식
키움증권kiwoomKOSPI, KOSDAQ, NASD, NYSE, AMEX주식
  • 양방향은 청산에 buy_close/sell_close, 한방향은 close를 씁니다.
  • 테스트넷·모의투자 값: bybit-testnet, bybit-spot-testnet, bitget-testnet, okx-testnet, okx-spot-testnet, phemex-testnet, phemex-spot-testnet, kis-testnet, kiwoom-testnet

7. 자주 하는 실수

실수바르게
목표가·손절가 부호를 반대로롱: 목표 + 손절 − / 숏: 목표 − 손절 +
격리에서 수량 % 를 100 넘게격리는 100 이하
양방향 거래소에서 closebuy_close / sell_close. 모드를 바꿨으면 새로 만들기
청산에 총자산 대비 선택청산은 잔액 대비. 총자산 대비면 수량을 꼭 넣기
계정명을 바꾸고 옛 메시지 사용account가 API키 계정명과 같아야 함
"dry_run":"true"따옴표 없이 "dry_run":true (안 그러면 실제 주문)
지연시간을 길게한 얼러트 전체가 약 520초를 넘으면 남은 메시지는 실행 안 됨

그래도 안 되면 → 주문이 안 될 때

파인 전략의 alert_message에 메시지를 넣는 법은 지표를 전략으로에 있습니다.

이 페이지에서