Compendium Trading Tools Documentation
CompendiumPENDAXCompendexOfficial Links
  • ⭐Platform Overview
  • ⚫PENDAX
    • 🌐What is PENDAX?
    • 🖱️PENDAX Capabilities
    • 💾Installing PENDAX modules
    • 💡Using PENDAX SDK
      • 💻Common Functions
      • 💻OKX Functions
        • Trading & Orders
        • Funding
        • Convert
        • Account & Subaccount
        • Grid Trading
        • Market Data
        • Public Data
        • Trading Data
      • 💻Bitget Functions
        • Public (Spot)
        • Market (Spot)
        • Wallet (Spot)
        • Account (Spot)
        • Trade (Spot)
        • Market (Futures)
        • Account (Futures)
        • Trade (Futures)
        • CopyTrade (Futures)
        • Sub Account Interface (Broker)
        • Sub API Interface (Broker)
      • 💻ByBit Functions
        • Market
        • Trading
        • Position
        • Account
        • Asset
        • User
        • Spot Leverage Token
        • Spot Margin Trade (UTA)
        • Spot Margin Trade (Normal)
        • Institutional Lending
      • 💻Mexc Functions
        • Market
        • Sub-Account
        • Spot Account/Trade
        • Wallet
        • ETF
        • Rebate
        • Futures Market
        • Futures Account and Trading
      • 💻Phemex Functions
        • Contract
        • Hedged Contract
        • Spot
        • Margin Trading
        • Transfer
        • Convert
        • Deposit And Withdraw
      • 💻BloFin Functions
        • Websocket
        • Account
        • Affiliate
        • Public Data
        • Trading
        • User
      • 💻BingX Functions
        • Fund Account
        • Wallet Deposits and Withdrawals
        • Sub-Account Managenent
        • Market Data (USDT-M)
        • Account (USDT-M)
        • Trades (USDT-M)
        • Market Data (Coin-M)
        • Trades (Coin-M)
        • Market Data (Spot)
        • Fund Account (Spot)
        • Trades (Spot)
        • CopyTrader
      • ⚠️FTX Functions
    • 📜License Agreement
  • 🟣Compendium App
    • 📈Compendium Trading Tools
    • 🔗Connect An Exchange Account
      • 🗝️OKX.com API Keys
    • 🤖Verified Trading Bots
      • Explore The Marketplace
      • For Algo & Strategy Authors
        • Get Listed & Verified
        • Strategy Monetization
        • Sending Trading Signals
        • Simplified Signal Program
      • For Users & Subscribers
        • Subscribing To Bots
        • Managing A Subscription
    • 💫Copy Trading Groups
      • For Copy Group Leaders
        • Creating A Copy Group
        • Linking Leader Account
        • Important Trading Notes
        • Manage A Copy Group
        • Discord Webhooks Setup
      • For Users & Subscribers
        • Subscribe To Copy Group
        • Link Account To Group
    • 📶Signal Provider Groups
      • For Group Leaders
        • Creating A Signal Group
        • Managing A Signal Group
        • Sending Trading Signals
      • For Users & Subscribers
        • Subscribing To Signal Groups
        • Manage Signal Group Subscription
  • 🔵Compendex Suite
    • 🔮DeFi With Compendex
    • ☀️Solana Integrations
      • Supported Solana Wallets
      • Overview And News
      • Openbook Spot Markets
      • Smart Swap Aggregator
      • NFT Metaverse Markets
      • Solana DeFi Analytics Portal
      • Community Tools List
  • 🪙The CMFI Token Ecosystem
    • 📊Tokenomics Breakdown
    • 🍎Trade Incentive Program
    • 🌊Staking And Liquidity Pools
      • ✨Raydium Liquidity Pools
      • 🐳Orca Liquidity Whirlpools
      • 🐋Orca Liquidity Pools
    • 🐷Compendi-Pigs NFT
  • 👥Community Info
    • ✅Links And Social Pages
    • 🎨Branding Guidelines
Powered by GitBook
On this page
  • How To Obtain An API Key
  • Formatting WebHook Signals
  • Understanding JSON Formatting
  • Posting Webhooks From TradingView
  • Webhook URL
  • Webhook JSON Format
  • Understanding the orderchain Array
  • Single Signal Post Example
  • Sending Multiple Signals At Once
  • All Available Signal Parameters
  • Understanding Each Parameter
  1. Compendium App
  2. Verified Trading Bots
  3. For Algo & Strategy Authors

Sending Trading Signals

Documentation for creating and formatting Verified Trading Bot trade notifications on the Compendium application.

PreviousStrategy MonetizationNextSimplified Signal Program

Last updated 1 year ago

How To Obtain An API Key

To link your trading strategy with Compendium, head back to the admin page of your Verified Trading Bot. Scroll down until you see the "View This Bot's Alert API Key" section, then click the "View My Bot API Key" button. This will reveal your private API key, which you can then input into the Compendium WebHook.

It's crucial to keep your API key confidential as it's used to identify calls. Sharing your API key can result in unauthorized signals being sent and potentially compromise the security of your group. If you suspect that your API key has been compromised, we recommend clicking the "Reroll API Key" button. Don't forget to update the API key in your webhooks to ensure that your strategy continues to post trades successfully.

Formatting WebHook Signals

Now that you have your API key it is time to learn how signals can be sent!

All signals should be sent to the following webhook URL as POST. If you are using TradingView it will automatically format webhook + JSON in the correct method.

Understanding JSON Formatting

You can learn more about specific JSON formatting at the link below.

Posting Webhooks From TradingView

Please follow TradingView's internal documentation for educational resources on posting Webhook orders from their system.

Webhook URL

The webhook URL for our verified trading bots router is different from our regular Signal Provider webhook. The webhook information is available on request through your designated representative channel in our official discord server.

A "success" return from the provided Webhook means that the URL was successfully pinged in your workflow. It does not mean that the signal or orderchain was formatted correctly and still may result in a trade post error.

Webhook JSON Format

{
  "apiKey": "insertGroupAPIKeyHere",  
  "orderchain" : [
        {
          "signal" : "place",
          "orderType" : "limit",
          "symbol" : "BTC-USDT-SWAP",
          "marketType" : "linear",
          "side" : "buy",
          "risk" : "100",
          "mode" : "cross",
          "reduceOnly" : "false",
          "postOnly" : "false",
          "ioc" : "false",
          "fok" : "false",
          "price" : "20000",
          "tpTrigger" : "21000",
          "tpPrice" : "21500",
          "tpType" : "last",
          "tpOrderType" : "limit",
          "slTrigger" : "19900",
          "slPrice" : "19500",
          "slType" : "last",
          "slOrderType" : "limit"
        }
    ]
}

The above JSON example shows a single signal in the orderchain array. Please read the next section to understand how to fully utilize this new integration.

Understanding the orderchain Array

Our new signal system requires signal commands to be sent in the orderchain array, even if you are only sending a single command. We can now offer supremely advanced capabilities by offering the capability to chain orders together. We have provided some simple examples below.

The orderchain array has a capacity of accommodating a maximum of 5 signal types in a stacked manner and mandates the presence of at least one signal type to effectively transmit a trade notification signal. It is imperative to acknowledge that the execution of Orderchain commands is dependent on the sequence of WebHook post in which they are transmitted, thus dictating their placement order.

Single Signal Post Example

The following example shows the user sending a single signal in the orderchain array to close all open positions.

{
  "apiKey": "insertGroupAPIKeyHere",  
  "orderchain" : [
        {
            "signal" : "closeall"
        }
    ]
}

Sending Multiple Signals At Once

The following example shows the user sending multiple signals in the orderchain array. This specific example shows the user closing all open positions and then opening a new trade. This code snippet should be helpful if your trading strategy is always in a trade and needs to flip sides from "short" to "long" or vice-versa.

{
  "apiKey": "insertGroupAPIKeyHere",  
  "orderchain" : [
        {
            "signal" : "closeall"
        },
        {
            "signal" : "place",
            "orderType" : "limit",
            "symbol" : "BTC-USDT-SWAP",
            "marketType" : "linear",
            "side" : "buy",
            "risk" : "100",
            "mode" : "cross",
            "reduceOnly" : "false",
            "postOnly" : "false",
            "ioc" : "false",
            "fok" : "false",
            "price" : "20000",
            "tpTrigger" : "21000",
            "tpPrice" : "21500",
            "tpType" : "last",
            "tpOrderType" : "limit",
            "slTrigger" : "19900",
            "slPrice" : "19500",
            "slType" : "last",
            "slOrderType" : "limit"
        }
    ]
}

All Available Signal Parameters

All parameters should be sent as a "string" from your POST API call. This is to simplify connections from platforms like TradingView while normalizing our structure. It is also important to note that if you are passing a number, it should be treated as an integer within the "string".

Parameter
Type
Requirements & Description

signal

String

ALWAYS REQUIRED - See valid values below

orderId

String

Required if signal = cancel

orderType

String

Required if signal = place. See valid values below

symbol

String

Required if signal parameter requires.

marketType

String

Optional - if signal is cancel type, the orders canceled will be of marketType.

side

String

Required if signal = place

risk

String

Required if signal = place

price

String

Required if orderType requires it (eg limit)

mode

String

Optional - default value = cross

reduceOnly

String

Optional - default is false

postOnly

String

Optional - default value is false

ioc

String

Optional - default = false

fok

String

Optional - default = false

tpTrigger

String

Optional

tpPrice

String

Required if tpTrigger submitted and tpOrderType = limit

tpType

String

Optional - default = last

tpOrderType

String

Required if tpTrigger submitted

slTrigger

String

Optional

slPrice

String

Required if slTrigger submitted and slOrderType = limit

slType

String

Optional - default = last

slOrderType

String

Required if slTrigger submitted

Understanding Each Parameter

The following breakdown includes JSON Type, Required Conditions, & Valid Values for all available signal parameters.

signal

JSON type: "String"

Required: Always

Valid Values:

  • place : used to place orders

  • cancel : cancels ONE specific order, must provide orderid

  • cancelall : cancels ALL open orders without regard to market or complexity

  • cancelbuys : cancels all open buy orders

  • cancelsells : cancels all open sell orders

  • canceltps : cancel all take profit orders (including embedded TP orders)

  • cancelsls : cancels all stop loss orders (including embedded SL orders)

  • canceltriggers : cancels all orders having TP or SL orders embedded but not both

  • close : if submitted with a symbol (e.g. symbol: BTC-USDT-SWAP), then closes all current positions on that symbol. Otherwise closes all positions on all tokens (same behavior as closeall)

  • closeall : closes all positions on all token markets

  • closelongs : closes all long positions on any token market

  • closeshorts : closes all short positions on any token

orderID

JSON type: "String"

Required: required if signal = cancel (specifies order to cancel)

Valid Values: insert orderid from exchange to cancel.

orderType

JSON type: "String"

Required: required if signal = place.

Valid Values: limit or market

symbol

JSON type: "String"

Required: Required if signal parameter requires.

Valid Values: must be a VALID symbol on native exchange. (e.g. symbol: BTC-USDT-SWAP)

marketType

JSON type: "String"

Required: Optional - if signal is cancel type, the orders canceled will be of marketType. if omitted and signal is cancel type then spot and perpetual orders will be canceled.

Valid Values: linear, inverse, or spot

Deprecated Values: perpetual

side

JSON Type: "String"

Required: Required if signal = place

Valid Values: buy or sell

risk

JSON Type: "String"

Required: Required if signal = place

Valid Values:

  • Risk is limited from 1 - 100 for spot markets.

  • Risk can be above 100 for perpetual swap markets.

Explanation: Risk is our system's version of trade size.

Examples of risk utilization:

  • 50 = 50% of the connected exchange account balance

  • 100 = 100% of the connected exchange account balance

  • 150 = 150% of the connected exchange account balance (1.5x Leverage)

  • 200 = 200% of the connected exchange account balance (2x Leverage)

price

JSON Type: Integer within "String"

Required: Required if orderType requires it (eg limit)

Valid Values: Insert price to initiate order as a "string"

Example: "21000" (must be formatted as an integer within the string)

mode

JSON Type: "String"

Required: Optional, default value = cross

Trade Mode Explanation: Trade Mode, when placing an order, you need to specify the trade mode. (Notes taken specifically from OKX documentation) Valid Values:

  • cash for spot markets

  • cross for perpetual markets

reduceOnly

JSON Type: "String"

Required: Optional - default is false

Valid Values: true or false (passed in a "string"). The default value is false. Only applicable to MARGIN orders, and FUTURES/SWAP orders in net mode Only applicable to Single-currency margin and Multi-currency margin

postOnly

JSON type: "String"

Required: Optional - default value is false

Valid Values: true or false (passed as "string")

ioc

JSON Type: "String"

Required: Optional - default = false

Valid Values: true or false (passed as "string")

fok

JSON Type: "String"

Required: Optional - default = false

Valid Values: true or false (passed as a "string")

tpTrigger

JSON Type: Integer within a "String"

Required: Optional

Valid Values: Insert price to initiate order as a "string"

Example: "21000" (must be formatted as an integer within the string)

tpPrice

JSON Type: Integer within "String"

Required: Required if tpTrigger submitted and tpOrderType = limit

Valid Values: Insert price to initiate order as a "string"

Example: "21000" (must be formatted as an integer within the string)

tpType

JSON Type: "String"

Required: Optional - default = last

Valid Values:

  • last : last price

  • index : index price

  • mark : mark price

tpOrderType

JSON Type: "String"

Required: Required if tpTrigger is submitted

Valid Values: limit or market

slTrigger

JSON Type: Integer within a "String"

Required: Optional

Valid Values: Insert price integer to initiate order as a "string"

Example: "21000" (must be formatted as an integer within the string)

slPrice

JSON Type: Integer within a "String"

Required: Required if slTrigger submitted and slOrderType = limit

Valid Values: Insert price integer to initiate order as a "string"

Example: "21000" (must be formatted as an integer within the string)

slType

JSON Type: "String"

Required: Optional - default = last

Valid Values:

  • last : last price

  • index : index price

  • mark : mark price

slOrderType

JSON Type: "String"

Required: Required if tpTrigger is submitted

Valid Values: limit or market

🟣
🤖
Working with JSON - Learn web development | MDN
About webhooks — TradingViewTradingView
Official documentation provided by TradingView on interacting with their webhooks system.
Logo
Logo