Sending Trading Signals
Documentation for creating and formatting Signal Provider Group trade notifications on the Compendium application.
How To Obtain An API Key
To link your trading strategy with Compendium, simply head back to the admin page of your Signal Provider Group. Scroll down until you see the "View This Strategy's Alert API Key" section, then click the "View My Strategy 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
URL: https://compendium.finance/api/1.1/wf/signal
Method: POST
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
orderchain
ArrayOur 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 will continue to post in-line commands even if the previous command has failed.
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.
POST (System Currently In Development, WebHook Available Shortly)
{
"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
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 (READ MORE BELOW)
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
closepct
String
Optional if signal
= close ( "1"
- "100"
)
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.
Sending Manual Signal From UI
Group leaders can also utilize the "Send Manual Signal" option from their Signal Provider management page to send a manual signal to our system. These signals will be treated the same way as any signal posted through our API. After pressing the "Send Manual Signal" button, the following popup will display.

Parameters in this popup are precisely the same as when sending a call via API or Webhook to our system. Before utilizing this option, please familiarize yourself with the data structure and capabilities above.
Last updated