HomeBrowseUpload
โ† Back to registry
โšก
// Skill profile

WEEX Futures Trading ๐Ÿ”ต

name: weex-trading

by bowen31337 ยท published 2026-03-22

ๆ•ฐๆฎๅค„็†API้›†ๆˆๅŠ ๅฏ†่ดงๅธ
Total installs
0
Stars
โ˜… 0
Last updated
2026-03
// Install command
$ claw add gh:bowen31337/bowen31337-weex-trading-skills
View on GitHub
// Full documentation

---

name: weex-trading

description: WEEX Futures exchange integration. Trade USDT-M perpetual futures with up to 125x leverage on WEEX.

metadata:

emoji: "๐Ÿ”ต"

category: "trading"

tags: ["crypto", "futures", "trading", "weex", "derivatives"]

requires:

bins: ["curl", "jq", "python3", "openssl"]

compatibility:

- claude

- openai

- gemini

- llama

- mistral

- any-agent

---

# WEEX Futures Trading ๐Ÿ”ต

Open AI Agent Skill for USDT-margined perpetual futures trading on WEEX exchange. Up to 125x leverage.

> **Open Agent Skill**: This skill is designed to work with any AI agent that supports bash/curl commands, including Claude, GPT, Gemini, LLaMA, Mistral, and other LLM-based agents.

Features

  • ๐Ÿ“Š **Futures Trading** - USDT-M perpetual contracts up to 125x leverage
  • ๐Ÿ’ฐ **Account Management** - Balance, positions, margin settings
  • ๐Ÿ“ˆ **Market Data** - Tickers, order book, candlesticks, funding rates
  • ๐ŸŽฏ **Advanced Orders** - Trigger orders, TP/SL, conditional orders
  • ๐Ÿค– **AI Integration** - Log AI trading decisions
  • ๐Ÿ”Œ **Universal Compatibility** - Works with any AI agent supporting shell commands
  • Environment Variables

    | Variable | Description | Required |

    |----------|-------------|----------|

    | `WEEX_API_KEY` | API Key from WEEX | Yes |

    | `WEEX_API_SECRET` | API Secret | Yes |

    | `WEEX_PASSPHRASE` | API Passphrase | Yes |

    | `WEEX_BASE_URL` | API base URL | No (default: https://api-contract.weex.com) |

    Authentication

    API_KEY="${WEEX_API_KEY}"
    SECRET="${WEEX_API_SECRET}"
    PASSPHRASE="${WEEX_PASSPHRASE}"
    BASE_URL="${WEEX_BASE_URL:-https://api-contract.weex.com}"
    
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    
    # Generate signature
    generate_signature() {
      local method="$1"
      local path="$2"
      local body="$3"
      local message="${TIMESTAMP}${method}${path}${body}"
      echo -n "$message" | openssl dgst -sha256 -hmac "$SECRET" -binary | base64
    }

    ---

    # Market Data Endpoints (No Auth)

    Get Server Time

    curl -s "${BASE_URL}/capi/v2/market/time" | jq '.'

    Get All Contracts Info

    curl -s "${BASE_URL}/capi/v2/market/contracts" | jq '.data[] | {symbol: .symbol, baseCoin: .underlying_index, quoteCoin: .quote_currency, contractVal: .contract_val, minLeverage: .minLeverage, maxLeverage: .maxLeverage, tickSize: .tick_size, sizeIncrement: .size_increment}'

    Get Single Contract Info

    SYMBOL="cmt_btcusdt"
    
    curl -s "${BASE_URL}/capi/v2/market/contracts?symbol=${SYMBOL}" | jq '.data'

    Get Ticker Price

    SYMBOL="cmt_btcusdt"
    
    curl -s "${BASE_URL}/capi/v2/market/ticker?symbol=${SYMBOL}" | jq '.data | {symbol: .symbol, last: .last, high: .high_24h, low: .low_24h, volume: .volume_24h, markPrice: .markPrice}'

    Get All Tickers

    curl -s "${BASE_URL}/capi/v2/market/tickers" | jq '.data[] | {symbol: .symbol, last: .last, change: .priceChangePercent, volume: .volume_24h}'

    Get Order Book

    SYMBOL="cmt_btcusdt"
    
    curl -s "${BASE_URL}/capi/v2/market/depth?symbol=${SYMBOL}&limit=15" | jq '.data | {asks: .asks[:5], bids: .bids[:5]}'

    Get Recent Trades

    SYMBOL="cmt_btcusdt"
    LIMIT="50"
    
    curl -s "${BASE_URL}/capi/v2/market/trades?symbol=${SYMBOL}&limit=${LIMIT}" | jq '.data[] | {time: .time, price: .price, size: .size, side: (if .isBuyerMaker then "sell" else "buy" end)}'

    Get Candlestick Data

    SYMBOL="cmt_btcusdt"
    GRANULARITY="1h"    # 1m, 5m, 15m, 30m, 1h, 4h, 12h, 1d, 1w
    LIMIT="100"
    
    curl -s "${BASE_URL}/capi/v2/market/candles?symbol=${SYMBOL}&granularity=${GRANULARITY}&limit=${LIMIT}" | jq '.data[] | {timestamp: .[0], open: .[1], high: .[2], low: .[3], close: .[4], volume: .[5]}'

    Get Index Price

    SYMBOL="cmt_btcusdt"
    
    curl -s "${BASE_URL}/capi/v2/market/index?symbol=${SYMBOL}" | jq '.data | {symbol: .symbol, index: .index, timestamp: .timestamp}'

    Get Open Interest

    SYMBOL="cmt_btcusdt"
    
    curl -s "${BASE_URL}/capi/v2/market/open_interest?symbol=${SYMBOL}" | jq '.data[] | {symbol: .symbol, openInterest: .base_volume, value: .target_volume}'

    Get Current Funding Rate

    SYMBOL="cmt_btcusdt"
    
    curl -s "${BASE_URL}/capi/v2/market/currentFundRate?symbol=${SYMBOL}" | jq '.data[] | {symbol: .symbol, rate: .fundingRate, nextSettlement: .timestamp}'

    Get Historical Funding Rates

    SYMBOL="cmt_btcusdt"
    LIMIT="20"
    
    curl -s "${BASE_URL}/capi/v2/market/getHistoryFundRate?symbol=${SYMBOL}&limit=${LIMIT}" | jq '.data[] | {symbol: .symbol, rate: .fundingRate, settleTime: .fundingTime}'

    Get Next Funding Time

    SYMBOL="cmt_btcusdt"
    
    curl -s "${BASE_URL}/capi/v2/market/funding_time?symbol=${SYMBOL}" | jq '.data | {symbol: .symbol, nextFundingTime: .fundingTime}'

    ---

    # Account Endpoints (Auth Required)

    Get Account Assets

    PATH_URL="/capi/v2/account/assets"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data[] | {coin: .coinName, available: .available, frozen: .frozen, equity: .equity, unrealizedPnl: .unrealizePnl}'

    Get Account List with Settings

    PATH_URL="/capi/v2/account/getAccounts"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data'

    Get Single Account by Coin

    COIN="USDT"
    
    PATH_URL="/capi/v2/account/getAccount?coin=${COIN}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data'

    Get User Settings

    SYMBOL="cmt_btcusdt"
    
    PATH_URL="/capi/v2/account/settings?symbol=${SYMBOL}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data'

    Change Leverage

    SYMBOL="cmt_btcusdt"
    LEVERAGE="20"
    MARGIN_MODE="1"        # 1=Cross, 3=Isolated
    
    PATH_URL="/capi/v2/account/leverage"
    BODY="{\"symbol\":\"${SYMBOL}\",\"marginMode\":${MARGIN_MODE},\"longLeverage\":\"${LEVERAGE}\",\"shortLeverage\":\"${LEVERAGE}\"}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    Adjust Position Margin (Isolated Only)

    POSITION_ID="123456789"      # Isolated position ID
    AMOUNT="100"                 # Positive to add, negative to reduce
    
    PATH_URL="/capi/v2/account/adjustMargin"
    BODY="{\"coinId\":2,\"isolatedPositionId\":${POSITION_ID},\"collateralAmount\":\"${AMOUNT}\"}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    Auto Margin Top-Up (Isolated Only)

    POSITION_ID="123456789"      # Isolated position ID
    AUTO_APPEND="true"           # true to enable, false to disable
    
    PATH_URL="/capi/v2/account/modifyAutoAppendMargin"
    BODY="{\"positionId\":${POSITION_ID},\"autoAppendMargin\":${AUTO_APPEND}}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    Get Account Bill History

    COIN="USDT"
    LIMIT="20"
    
    PATH_URL="/capi/v2/account/bills"
    BODY="{\"coin\":\"${COIN}\",\"limit\":${LIMIT}}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.data'

    ---

    # Position Endpoints (Auth Required)

    Get All Positions

    PATH_URL="/capi/v2/account/position/allPosition"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data[] | select(.size != "0") | {symbol: .symbol, side: .side, size: .size, leverage: .leverage, unrealizedPnl: .unrealizePnl, entryPrice: .avg_cost}'

    Get Single Position

    SYMBOL="cmt_btcusdt"
    
    PATH_URL="/capi/v2/account/position/singlePosition?symbol=${SYMBOL}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data[] | {symbol: .symbol, side: .side, size: .size, leverage: .leverage, unrealizedPnl: .unrealizePnl, entryPrice: .avg_cost, liquidationPrice: .liq_price}'

    Change Margin Mode

    SYMBOL="cmt_btcusdt"
    MARGIN_MODE="1"        # 1=Cross, 3=Isolated
    
    PATH_URL="/capi/v2/account/position/changeHoldModel"
    BODY="{\"symbol\":\"${SYMBOL}\",\"marginMode\":${MARGIN_MODE},\"separatedMode\":1}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    ---

    # Order Endpoints (Auth Required)

    Place Market Order

    SYMBOL="cmt_btcusdt"
    SIZE="10"              # Quantity in contracts
    TYPE="1"               # 1=Open Long, 2=Open Short, 3=Close Long, 4=Close Short
    CLIENT_OID="order_$(date +%s)"
    
    PATH_URL="/capi/v2/order/placeOrder"
    BODY="{\"symbol\":\"${SYMBOL}\",\"client_oid\":\"${CLIENT_OID}\",\"size\":\"${SIZE}\",\"type\":\"${TYPE}\",\"order_type\":\"0\",\"match_price\":\"1\",\"price\":\"0\"}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    Place Limit Order

    SYMBOL="cmt_btcusdt"
    SIZE="10"
    TYPE="1"               # 1=Open Long
    PRICE="90000"          # Limit price
    ORDER_TYPE="0"         # 0=Normal, 1=Post-only, 2=FOK, 3=IOC
    CLIENT_OID="limit_$(date +%s)"
    
    PATH_URL="/capi/v2/order/placeOrder"
    BODY="{\"symbol\":\"${SYMBOL}\",\"client_oid\":\"${CLIENT_OID}\",\"size\":\"${SIZE}\",\"type\":\"${TYPE}\",\"order_type\":\"${ORDER_TYPE}\",\"match_price\":\"0\",\"price\":\"${PRICE}\"}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    Get Open Orders

    PATH_URL="/capi/v2/order/current"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, side: .type, price: .price, size: .size, status: .status}'

    Get Order Details

    ORDER_ID="1234567890"
    
    PATH_URL="/capi/v2/order/detail?orderId=${ORDER_ID}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data'

    Get Order History

    SYMBOL="cmt_btcusdt"
    LIMIT="50"
    
    PATH_URL="/capi/v2/order/history?symbol=${SYMBOL}&limit=${LIMIT}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, side: .type, price: .price, size: .size, filledSize: .filled_qty, status: .status}'

    Get Trade Fills

    SYMBOL="cmt_btcusdt"
    LIMIT="50"
    
    PATH_URL="/capi/v2/order/fills?symbol=${SYMBOL}&limit=${LIMIT}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data[] | {tradeId: .trade_id, orderId: .order_id, symbol: .symbol, price: .price, size: .size, fee: .fee, time: .created_at}'

    Cancel Order

    ORDER_ID="1234567890"
    
    PATH_URL="/capi/v2/order/cancel_order"
    BODY="{\"orderId\":\"${ORDER_ID}\"}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    Cancel All Orders

    SYMBOL="cmt_btcusdt"    # Optional: omit to cancel all
    
    PATH_URL="/capi/v2/order/cancelAllOrders"
    BODY="{\"symbol\":\"${SYMBOL}\"}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    Close All Positions

    PATH_URL="/capi/v2/order/closePositions"
    BODY="{}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    ---

    # Trigger Order Endpoints (Auth Required)

    Place Trigger Order (Stop-Loss / Take-Profit)

    SYMBOL="cmt_btcusdt"
    SIZE="10"
    TYPE="1"               # 1=Open Long, 2=Open Short, 3=Close Long, 4=Close Short
    TRIGGER_PRICE="95000"  # Price that triggers the order
    EXECUTE_PRICE="0"      # 0 for market, or limit price
    TRIGGER_TYPE="1"       # 1=Fill price, 2=Mark price, 3=Index price
    CLIENT_OID="trigger_$(date +%s)"
    
    PATH_URL="/capi/v2/order/plan_order"
    BODY="{\"symbol\":\"${SYMBOL}\",\"client_oid\":\"${CLIENT_OID}\",\"size\":\"${SIZE}\",\"type\":\"${TYPE}\",\"trigger_price\":\"${TRIGGER_PRICE}\",\"execute_price\":\"${EXECUTE_PRICE}\",\"trend_side\":\"1\",\"trigger_type\":\"${TRIGGER_TYPE}\"}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    Get Current Trigger Orders

    SYMBOL="cmt_btcusdt"
    
    PATH_URL="/capi/v2/order/currentPlan?symbol=${SYMBOL}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, triggerPrice: .trigger_price, size: .size, type: .type}'

    Get Trigger Order History

    SYMBOL="cmt_btcusdt"
    LIMIT="50"
    
    PATH_URL="/capi/v2/order/historyPlan?symbol=${SYMBOL}&limit=${LIMIT}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
    
    curl -s "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, triggerPrice: .trigger_price, status: .status}'

    Cancel Trigger Order

    ORDER_ID="1234567890"
    
    PATH_URL="/capi/v2/order/cancel_plan"
    BODY="{\"orderId\":\"${ORDER_ID}\"}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    ---

    # TP/SL Order Endpoints (Auth Required)

    Place TP/SL Order

    SYMBOL="cmt_btcusdt"
    SIDE="1"               # 1=Long position, 2=Short position
    TP_PRICE="100000"      # Take profit trigger price
    SL_PRICE="85000"       # Stop loss trigger price
    TP_SIZE="10"           # Take profit size (0 for entire position)
    SL_SIZE="10"           # Stop loss size (0 for entire position)
    
    PATH_URL="/capi/v2/order/placeTpSlOrder"
    BODY="{\"symbol\":\"${SYMBOL}\",\"side\":\"${SIDE}\",\"tp_trigger_price\":\"${TP_PRICE}\",\"sl_trigger_price\":\"${SL_PRICE}\",\"tp_size\":\"${TP_SIZE}\",\"sl_size\":\"${SL_SIZE}\"}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    Modify TP/SL Order

    SYMBOL="cmt_btcusdt"
    SIDE="1"               # 1=Long position, 2=Short position
    TP_PRICE="105000"      # New take profit price
    SL_PRICE="82000"       # New stop loss price
    
    PATH_URL="/capi/v2/order/modifyTpSlOrder"
    BODY="{\"symbol\":\"${SYMBOL}\",\"side\":\"${SIDE}\",\"tp_trigger_price\":\"${TP_PRICE}\",\"sl_trigger_price\":\"${SL_PRICE}\"}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    ---

    # AI Integration (Auth Required)

    Upload AI Trading Log

    AI_LOG="Trading decision: Buy BTC based on momentum indicators"
    ORDER_ID="1234567890"
    
    PATH_URL="/capi/v2/order/uploadAiLog"
    BODY="{\"orderId\":\"${ORDER_ID}\",\"aiLog\":\"${AI_LOG}\"}"
    TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
    SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
    
    curl -s -X POST "${BASE_URL}${PATH_URL}" \
      -H "ACCESS-KEY: ${API_KEY}" \
      -H "ACCESS-SIGN: ${SIGNATURE}" \
      -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
      -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
      -H "Content-Type: application/json" \
      -d "$BODY" | jq '.'

    ---

    # Reference Tables

    Order Types

    | type | Description |

    |------|-------------|

    | `1` | Open Long (buy to open) |

    | `2` | Open Short (sell to open) |

    | `3` | Close Long (sell to close) |

    | `4` | Close Short (buy to close) |

    Execution Types

    | order_type | Description |

    |------------|-------------|

    | `0` | Normal order |

    | `1` | Post-only (maker only) |

    | `2` | FOK (fill or kill) |

    | `3` | IOC (immediate or cancel) |

    Price Types

    | match_price | Description |

    |-------------|-------------|

    | `0` | Limit order |

    | `1` | Market order |

    Margin Modes

    | marginMode | Description |

    |------------|-------------|

    | `1` | Cross margin |

    | `3` | Isolated margin |

    Trigger Types

    | trigger_type | Description |

    |--------------|-------------|

    | `1` | Fill price (last trade price) |

    | `2` | Mark price |

    | `3` | Index price |

    Popular Trading Pairs

    | Pair | Description |

    |------|-------------|

    | cmt_btcusdt | Bitcoin / USDT |

    | cmt_ethusdt | Ethereum / USDT |

    | cmt_solusdt | Solana / USDT |

    | cmt_xrpusdt | XRP / USDT |

    | cmt_dogeusdt | Dogecoin / USDT |

    | cmt_bnbusdt | BNB / USDT |

    ---

    # Safety Rules

    1. **ALWAYS** display order details before execution

    2. **VERIFY** trading pair and quantity

    3. **CHECK** account balance before trading

    4. **WARN** about leverage risks (up to 125x)

    5. **NEVER** execute without user confirmation

    6. **CONFIRM** position closure before executing

    ---

    # Error Codes

    | Code | Description | Solution |

    |------|-------------|----------|

    | `00000` | Success | - |

    | `40001` | Invalid parameter | Check parameter format |

    | `40101` | Invalid API key/signature | Verify credentials and timestamp |

    | `40301` | IP not whitelisted | Add IP to whitelist |

    | `42901` | Rate limit exceeded | Reduce request frequency |

    | `50001` | Internal error | Retry after delay |

    ---

    # Rate Limits

    | Category | IP Limit | UID Limit |

    |----------|----------|-----------|

    | Market Data | 20 req/sec | N/A |

    | Account Info | 10 req/sec | 10 req/sec |

    | Order Placement | 10 req/sec | 10 req/sec |

    ---

    # Additional Resources

  • [WEEX](https://www.weex.com)
  • Base URL: `https://api-contract.weex.com`
  • [API Reference](references/api_reference.md)
  • // Comments
    Sign in with GitHub to leave a comment.
    // Related skills

    More tools from the same signal band