TradingView 전략을 Phemex 시그널 트레이딩에 연동하려면, 아래 JSON 템플릿을 TradingView 알림의 Message 필드에 붙여넣고, Phemex에서 발급받은 signalToken을 입력한 뒤, 알림을 Phemex의 webhook URL로 전송하세요. 이렇게 하면 Phemex가 매수/매도 시그널을 자동으로 복제하여 거래를 실행합니다. 단계별 가이드에 대해서는 다음 문서를 참고하세요 > Phemex에서 시그널 트레이딩 봇 사용법 (웹)
알림 포맷
아래 JSON 템플릿을 TradingView 알림의 Message 필드에 복사해 넣으세요. 중괄호로 된 변수들은 TradingView 전략 변수를 나타내며, 실시간으로 자동 채워집니다.
{ "id": "{{strategy.order.id}}", "symbol": "{{ticker}}", "action": "{{strategy.order.action}}", "qty": "{{strategy.order.contracts}}", "price": "{{strategy.order.price}}", "type": "Limit", "marketPosition": "{{strategy.market_position}}", "prevMarketPosition": "{{strategy.prev_market_position}}", "marketPositionSize": "{{strategy.market_position_size}}", "prevMarketPositionSize": "{{strategy.prev_market_position_size}}", "signalToken": "POdKsisSLkUxWXXIcjlx-eh_4UDuqfgYXL2KKX5wbOgazrhgKhdNhLoUb8OQK_xv0RnLdIclDFOOfqL6sfXwzkBJTN6n9v-U4qgwWK5YCtMP38IG1UJ91dsn2cw=", "timestamp": "{{timenow}}" }
파라미터 참고
| 파라미터 | 필수 여부 | 값 | 설명 |
|---|---|---|---|
| id | 필수 | TradingView의 {{strategy.order.id}} | 주문 ID - 주문의 식별자. 전략 함수(strategy.entry, strategy.exit, strategy.order)에 지정한 문자열을 반환합니다. |
| symbol | 필수 | TradingView의 {{ticker}} | 종목명 - Phemex에서 사용하는 심볼명과 반드시 일치해야 합니다. |
| action | 필수 | TradingView의 {{strategy.order.action}} | 주문 방향 - "buy"(매수) 또는 "sell"(매도)를 반환. 매수: 롱 포지션 신규 진입/숏 포지션 청산, 매도: 숏 포지션 신규 진입/롱 포지션 청산. |
| qty | 옵션 | TradingView의 {{strategy.order.contracts}} | 주문 수량 - 예시: BTCUSDT에 0.001 수량으로 주문. 값이 동일하게 매칭되어야 합니다. |
| price | 필수 | TradingView의 {{strategy.order.price}} | 지정가 주문 가격 - 본 시그널 전략은 모든 주문을 지정가로 처리합니다. |
| type | 옵션 | 기본값 "Limit"이며, 필요시 "Market"으로 변경 가능 | 주문 방식 - 지정가(Limit)로 주문하려면 "Limit" 사용, 시장가(Market) 주문 시에는 "Market" 사용 |
| marketPosition | 옵션 | TradingView의 {{strategy.market_position}} | marketPosition - 주문 실행 시점의 예상 포지션 상태. "long"(롱), "flat"(무포지션), "short"(숏) 중 하나 |
| prevMarketPosition | 옵션 | TradingView의 {{strategy.prev_market_position}} | 이전 포지션 상태 - 주문 실행 직전의 포지션 상태("long", "flat", "short") 반환 |
| marketPositionSize | 옵션 | TradingView의 {{strategy.market_position_size}} | marketPositionSize - 주문 실행 시점의 예상 포지션 수량 |
| prevMarketPositionSize | 옵션 | TradingView의 {{strategy.prev_market_position_size}} | 이전 포지션 수량 - 주문 실행 직전의 포지션 수량 |
| signalToken | 필수 | Phemex에서 시그널 생성 시 제공 | 시그널 코드 - 알림의 인증을 위한 값. 외부 요청의 적합성과 권한을 검증. Phemex에서 시그널 생성 시 자동 발급되며, TradingView 알림 메시지에 반드시 입력해야 함. |
| timestamp | 필수 | TradingView의 {{timenow}} | 주문 타임스탬프 |
예시
예시 1: 롱 포지션 오픈 → 롱 포지션 전량 청산 (Close All)
// BTCUSDT 롱 포지션 오픈, 진입가: 40,000, 수량: 0.001
{ "id": "id_9b4b19b3d112", "symbol": "BTCUSDT", "action": "buy", "qty": 0.001, "price": 40000, "type": "Limit", "marketPosition": "long", "prevMarketPosition": "flat", "marketPositionSize": 0.001, "prevMarketPositionSize": 0, "signalToken": "kGAOBKheClXD7bVZHe-hEYHxF1rfTwlPPyko3DSWT1Q==", "timestamp": "2024-01-17T10:51:58Z" }
// BTCUSDT 롱 포지션 전량 청산, 청산가: 41,000, 청산수량: 0.001
{ "id": "id_9b4b19b3d113", "symbol": "BTCUSDT", "action": "sell", "qty": 0.001, "price": 41000, "type": "Limit", "marketPosition": "flat", "prevMarketPosition": "long", "marketPositionSize": 0, "prevMarketPositionSize": 0.001, "signalToken": "kGAOBKheClXD7bVZHe-hEYHxF1rfTwlPPyko3DSWT1Q==", "timestamp": "2024-01-17T11:51:58Z" }
예시 2: 롱 → 숏 (원스텝 반전)
// BTCUSDT 롱 포지션 오픈, 진입가: 40,000, 수량: 0.001
{ "id": "id_9b4b19b3d112", "symbol": "BTCUSDT", "action": "buy", "qty": 0.001, "price": 40000, "type": "Limit", "marketPosition": "long", "prevMarketPosition": "flat", "marketPositionSize": 0.001, "prevMarketPositionSize": 0, "signalToken": "kGAOBKheClXD7bVZHe-hEYHxF1rfTwlPPyko3DSWT1Q==", "timestamp": "2024-01-17T10:51:58Z" }
// BTCUSDT 숏 포지션 오픈, 진입가: 41,000, 수량: 0.002
// 만약 qty > posQty일 경우, 0.001 롱 포지션 전량 청산 후 0.001 숏 포지션 신규 오픈(반전) 처리됨
{ "id": "id_9b4b19b3d113", "symbol": "BTCUSDT", "action": "sell", "qty": 0.002, "price": 41000, "type": "Limit", "marketPosition": "short", "prevMarketPosition": "long", "marketPositionSize": 0.001, "prevMarketPositionSize": 0.001, "signalToken": "kGAOBKheClXD7bVZHe-hEYHxF1rfTwlPPyko3DSWT1Q==", "timestamp": "2024-01-17T11:51:58Z" }
예시 3: 롱 포지션 오픈 → 부분 청산 → 전량 청산
// BTCUSDT 롱 포지션 오픈, 진입가: 40,000, 수량: 0.002
{ "id": "id_9b4b19b3d112", "symbol": "BTCUSDT", "action": "buy", "qty": 0.002, "price": 40000, "type": "Limit", "marketPosition": "long", "prevMarketPosition": "flat", "marketPositionSize": 0.002, "prevMarketPositionSize": 0, "signalToken": "kGAOBKheClXD7bVZHe-hEYHxF1rfTwlPPyko3DSWT1Q==", "timestamp": "2024-01-17T10:51:58Z" }
// BTCUSDT 롱 포지션 부분 청산, 청산가: 41,000, 청산수량: 0.001
{ "id": "id_9b4b19b3d113", "symbol": "BTCUSDT", "action": "sell", "qty": 0.001, "price": 41000, "type": "Limit", "marketPosition": "long", "prevMarketPosition": "long", "marketPositionSize": 0.001, "prevMarketPositionSize": 0.002, "signalToken": "kGAOBKheClXD7bVZHe-hEYHxF1rfTwlPPyko3DSWT1Q==", "timestamp": "2024-01-17T11:51:58Z" }
// BTCUSDT 롱 포지션 전량 청산, 청산가: 42,000, 청산수량: 0.001
{ "id": "id_9b4b19b3d114", "symbol": "BTCUSDT", "action": "sell", "qty": 0.001, "price": 42000, "type": "Limit", "marketPosition": "flat", "prevMarketPosition": "long", "marketPositionSize": 0, "prevMarketPositionSize": 0.001, "signalToken": "kGAOBKheClXD7bVZHe-hEYHxF1rfTwlPPyko3DSWT1Q==", "timestamp": "2024-01-17T12:51:58Z" }
예시 4: 롱 시장가 진입 → 롱 시장가 청산
// BTCUSDT 롱 포지션 오픈, 진입가: 40,000, 수량: 0.001
{ "id": "id_9b4b19b3d112", "symbol": "BTCUSDT", "action": "buy", "qty": 0.001, "price": 40000, "type": "Market", "marketPosition": "long", "prevMarketPosition": "flat", "marketPositionSize": 0.001, "prevMarketPositionSize": 0, "signalToken": "kGAOBKheClXD7bVZHe-hEYHxF1rfTwlPPyko3DSWT1Q==", "timestamp": "2024-01-17T10:51:58Z" }
// BTCUSDT 롱 포지션 시장가 전량 청산, 청산가: 41,000, 청산수량: 0.001
{ "id": "id_9b4b19b3d113", "symbol": "BTCUSDT", "action": "sell", "qty": 0.001, "price": 41000, "type": "Market", "marketPosition": "flat", "prevMarketPosition": "long", "marketPositionSize": 0, "prevMarketPositionSize": 0.001, "signalToken": "kGAOBKheClXD7bVZHe-hEYHxF1rfTwlPPyko3DSWT1Q==", "timestamp": "2024-01-17T11:51:58Z" }

Submit Ticket