Signals
Supported Actions
Full reference for every action type supported by TradingForge Signals, including required fields and example payloads.
Signals can trigger nine distinct actions on your bot. Each action requires a specific JSON payload sent via HTTP POST to your webhook URL. This page documents every action, its required and optional fields, and an example payload.
| Action | Description | Pair Required | Value Required |
|---|---|---|---|
| buy | Open a new position | Yes | No |
| sell | Close an open position | Yes | No |
| cancel | Cancel a pending buy intent | Yes | No |
| close_all | Sell all open positions | No | No |
| dca | Force a DCA safety order | Yes | No |
| set_stop_loss | Override stop-loss % | Yes | Yes (percent) |
| set_take_profit | Override take-profit % | Yes | Yes (percent) |
| pause | Pause trading on a pair | Yes | No |
| resume | Resume a paused pair | Yes | No |
buy
Opens a new position on the specified pair. In Signal mode the order is placed immediately. In Hybrid mode a buy intent is set and the bot will execute when its own conditions are also satisfied.
{
"action": "buy",
"pair": "BTCUSDT",
"provider": "my-provider"
}dca to force a safety order instead.sell
Immediately closes an open position at the current market price, regardless of take-profit targets.
{
"action": "sell",
"pair": "BTCUSDT",
"provider": "my-provider"
}cancel
Cancels a pending buy intent on the specified pair (useful in Hybrid mode to revoke a previously sent buy signal before the bot acts on it).
{
"action": "cancel",
"pair": "BTCUSDT",
"provider": "my-provider"
}close_all
Sells all currently open positions at market price. The pair field is not required.
{
"action": "close_all",
"provider": "my-provider"
}close_all is an aggressive action. Use with care, especially when connected to external providers. Consider restricting which providers are allowed to send this action via Provider Management.dca
Forces a DCA (Dollar Cost Averaging) safety order on an open position, buying additional quantity at the current market price to lower the average entry.
{
"action": "dca",
"pair": "ETHUSDT",
"provider": "my-provider"
}set_stop_loss
Overrides the stop-loss percentage for a specific open position. The value field is the stop-loss trigger expressed as a positive percentage below the average entry price.
{
"action": "set_stop_loss",
"pair": "BTCUSDT",
"value": 5.0,
"provider": "my-provider"
}A value of 5.0 means the stop-loss will trigger if the price falls 5% below the average entry. This override persists until the position is closed. To revert to the configured default, send a new set_stop_loss with the original value.
set_take_profit
Overrides the take-profit target percentage for a specific open position.
{
"action": "set_take_profit",
"pair": "BTCUSDT",
"value": 2.5,
"provider": "my-provider"
}A value of 2.5 means the position will be sold once the price is 2.5% above the average entry. This override persists for the life of the position.
pause
Pauses all new buy activity on the specified pair. Any existing open position is not affected — it will still be monitored for take-profit and stop-loss. New buys are simply prevented until the pair is resumed.
{
"action": "pause",
"pair": "XRPUSDT",
"provider": "my-provider"
}resume
Resumes normal trading on a previously paused pair.
{
"action": "resume",
"pair": "XRPUSDT",
"provider": "my-provider"
}Rate Limiting
To prevent runaway signals from placing excessive orders, TradingForge enforces a configurable maximum signals per hour limit (default: 10). Signals received beyond this limit within the rolling window are rejected and logged as rate-limited in the Signal Log.
The rate limit applies per-provider, not globally, so multiple providers each get their own independent quota.
