Skip to main content
Signal bot: Custom Signals type

Learn more about how to set up a Signal bot

Updated this week

Before we start...

  • If you already use a Signal Bot and/or have feedback or ideas for additional features not mentioned in this guide (as being under development), please add them using our Signal Bot Feedback link.

  • If you have any feedback regarding this article, please fill out this Feedback form - this will help us update the article faster to meet your expectations and answer your questions.

Signal bot is an innovative creation in 3Commas software that allows you to take your TradingView trading strategy into the next level!

If you've ever struggled with executing trades based on TradingView signals, managing multiple exchange accounts, or wanted to be more actively involved in your trading strategies, look no further. 3Commas is here to provide you with a reliable, automated solution that empowers you to make the most of the dynamic world of cryptocurrency trading.

How to create a Signal bot?

1. Go to the Signal bot page

It's on the left-side menu:

2. Here you will see your active bots (if any) and the window to set up your Signal bot:

3. Choose the Custom Signal type

Pay attention!

In Custom Signal mode, the bot filters signals based on its settings. It's impossible to enable only Long settings in your Signal Bot and then send a Short signal (and vice versa) - the bot will ignore it.

4. Copy the Webhook address (valid only for Signal bots)

Copy the webhook:

This webhook is valid only for Signal bots!
For DCA bots, the webhook is different (see here)!

5. Open in another tab any other service that supports webhooks

In our example we will use TradingView. You can directly click on the Go to TradingView button or open it by yourself.
Prepare the pair you want to trade with and don't close the tab:

6. Create an alert

Choose the exchange and a trading pair you want to set an alert for, apply all needed indicators and click on the Alert button:

Important note!

If you want to create a Signal bot on the Demo account, you need to choose the pair on Binance Spot on TradingView because the Demo account simulates trading on the Binance Spot account.

7. Open the Notifications tab and paste the webhook

8. Back on 3Commas, click on I have set webhook URL

9. Set up general settings and click Next

Several settings are different for Spot and Futures exchanges:


a. Choose exchange (available on Demo account and all exchanges except Binance TR and USDT-M).

b. Select the pairs (up to 200, you can change them later while editing the bot);

c. Choose the leverage type and its value (x3 by default) - if the bot is multi-pair, the maximum leverage can only be the lowest maximum among the pairs. For example, if you choose BTC and BNB contracts on Binance Futures, you will be able to set the maximum leverage at x50 as per BNB contracts, not x125 as it is for BTC contracts.

d. Set the Max. initial margin - the amount of funds the bot can use (10 USDT by default; leverage is not applied in this field).

e. Enter the bot's name. A unique and practical name is very useful if you have many bots.


a. Choose exchange (available on Demo account and all exchanges except Binance TR and USDT-M).

b. Direction - you need to choose how your bot will trade - Long, Short or Reversal - the bot will be able to receive signals to open Long and Short trades simultaneously.

c. Select the pairs (up to 200, you can change them later while editing the bot).

d. Max. investment - maximum amount of money that the bot can use to open trades (10 USDT by default).

e. Enter the bot's name. A unique and practical name is very useful if you have many bots.

10. Choose the signal type

Entry long or Entry short are the signals to start a Long or Short position relatively.

Exit long and Exit short will become active after you configure the Entry signals.
Reverse positions style of trading will become available soon.
Let's configure the Entry long signal:

For Spot exchange, if you choose Long or Short, you will see only Entry orders or Exit orders, respectively:

11. Configure the signal and click "Done"

a. Enter the order size. You can choose from the following options:

  • Total investment, % -you can choose how much of the Total Investment will be used in the Long signals.

  • USDT - you can just enter the amount of QUOTE currency for the order size.

  • Send in webhook, % - in this case, the size of the order in % of Total investment will be sent with the webhook signal (alert in our example).

  • Send in webhook, quote/base - the size of the order in QUOTE or BASE currency will be sent with the webhook signal (alert in our example).

Limit or Market order?

If you choose the "Send in webhook..." type of the order size, you can now choose whether it's going to be a Limit order or a Market order:

These options apply to Entry long and Entry short orders, whether they open a new position or add funds to an existing position.

Whether you choose Market or Limit, the JSON message will change relatively for your convenience. However, you can still change it according to your desires and preferences.

For example, you can type

"order_type": "market" - this will execute the order at the market price;


"order_type": "limit" - this will let you place the order at the specific price.

Thus, you can specify the price. Here is what it looks like:

"price": 10.0

For "price," you need to specify the exact price for the pair where the bot should place an order;


"price_percent": -5.5

For "price_percent," you need to input the value (without %) at what distance from the price when the signal was received the bot should place the order.

Or you can add "price_percent_ref_type" parameter to specify what type of deviation you want to use:

  • current_price - this is the default setting - in this case the price will be calculated from the current price when the signal was received. If you don't add this parameter, the price deviation will be calculated the usual way.

  • base_entry_price - this price is calculated from the deal's Base order price.

  • avg_entry_price - this price is calculated from the average entry price of the deal.

Here is an example of the "price_percent_ref_type" set to average entry price:

{ ... 
"price_percent": -5.5,
"price_percent_ref_type": "avg_entry_price"

Here are some details about using "price_percent" parameters:

  • "price_percent" value can be in this range: -99 – +1000 (without “%” symbol).

  • If you input both "price_percent" and "price", only the "price" parameter will count, and the percent will be ignored.

  • If you send the price higher than current for Long or lower than current for Sell, the order will be executed immediately by the market price.

More information about other attributes in this article:

b. Copy the JSON message - this message can change depending on the Order size type you chose from the previous step. You will need to paste it into the TradingView alert. Copy this message before proceeding. Read more what this JSON file consists of here:

c. Price deviation from the same order in past - if enabled, the bot won't process with a new signal if the current price does not deviate from the price of the previous executed signal.

d. Price deviation from average entry price - if enabled, the bot won't process with the new signal if the current price does not deviate from the average entry price.

About the value of price deviation.

If you use deviation in Enter long or Exit short, the deviation should be with negative value, like -1%. In this case the next signal will be executed if the price of this signal is lower at least 1% than the last or average price. If you enter here the positive value, like 5%, then the next signal will be processed if the price of the signal is HIGHER (not lower) for at least 5% from the last or average price.

The opposite is with Enter short and Exit long signals - the deviation should be with positive value, like 1%. In this case the next signal will be executed if the price of this signal is higher for at least 1% than the last or average price. If you enter here the negative value, like -3%, then the next signal will be processed if the price of the signal is LOWER (not higher) for at least 3% from the last or average price.

12. Continue to create the alert on TradingView

Open the TradingView page again. Choose the conditions you want when the signal should be sent and expiration .

Then paste the JSON message:


DO NOT share publicly the JSON message from your signal bot. If you accidentally did share, please delete this bot and create a new one - in this case you will be safe.

13. Make sure again you pasted the webhook on the Notifications tab

14. Back on 3Commas, set up the Exit long signal if needed

The settings and the alert configurations are all the same as in the Entry long signal:

15. Optionally, you can enable the Reverse position tool

For Futures

If Hedge mode is enabled on your exchange account, Signal bot will create Long and Short positions simultaneously with this Reverse position tool! If the Hedge mode is disabled, reducing a position by a volume larger than the current position will open an opposite position. If the remaining size is too small, you will see the error message about too small order size.

For Spot

It will be available only if you enabled Reverse trading in step 9.b. If you enabled, you can either turn on this feature here or leave it disabled.

  • If disabled:
    If there is an active Long trade in the Signal bot, the Entry short signal will be ignored. The Entry short signal will create a Short trade ONLY if the Long trade is closed and there is no active Long trades. The same with the opposite direction - Entry long will be ignored if there is active Short trade.

  • If enabled:
    If there is an active Long trade and the Entry short signal is received, the Long trade will be closed at the market price no matter if it's in profit or loss and if the size of the Long trade is different from the size of the Short trade. The same is true with the opposite side. If there is an active Short trade and the Entry long signal is received, the Short trade will instantly be closed at the market price.

16. Click Next to set up the Take profit and/or Stop loss if needed

If you don't need a Take profit and Stop Loss, you can just click on Create to proceed.

17. Adjust the Take profit settings

Remember if you use Signal bots on Spot market!

If the trade is Long, the profit will be taken in QUOTE currency; for example, using the BTC/USDT pair, the profit will be USDT.
For a Short trade, the profit will be taken in the BASE currency, BTC.

Here you can set:

  • the order type (Limit or Market);

  • the take profit percentage;

  • multiple take profit targets (or multiple targets);

Few words about multiple take profit tool

  • Using this tool, you can set up to 4 take profit targets with different prices and sizes (or up to 8 targets via 3Commas API).

  • By default, the difference in take profit prices is 1%.

  • By default, when you add another take profit target, the size of the assets will be equally distributed between each target. If you change the size of one target, the remaining size will also be distributed among the rest of the targets. But if you change the size of another target, you will need to change the rest of the targets manually.

  • If the sum of the parts will be less than 100% you will receive an error like this:

    So ensure the full 100% amount of assets is spread between all targets.

  • If you choose Limit type of order and enable Trailing feature, the last target will become Market order, and other Take profit targets will be Limit orders.

18. Adjust the Stop loss settings

You can enable the Trailing Stop loss feature if you want.

Also, now you can enable the Move to Breakeven option.

After adjustments, click on the Done button:

19. Click Create if you are done with the settings

If you don't want your bot to start immediately, you can disable the toggle "Activate bot after creation":

20. The bot is created

You can open detailed information by clicking on the down arrow on the left side of the bot:

Review your bots.

Here is how the list of the created bots looks like:

You can filter them and display either Active or Stopped:

If the bot is stopped, you can enable it at any time:

Short explanations of some bot's parameters and columns:

  • Bot's ID ℹ️ icon reveals the bot ID and UUID:

    This information is very useful if you will ever contact Support team with questions about your Signal bot.

  • Initial margin - the amount of funds that are used from the balance; leverage is not applied;

  • Profit - how much profit/loss was gained from the closed trades (PnL) + the uPnL from the active trades;

  • Amount of active trades - it's clickable; after clicking, it takes you to the Smart Trade page to the list of active trades;

  • Status - it can be:

    • Waiting - the bot is waiting for signals; no active signals or trades at the moment;

    • Active - the signal/-s received, there are active trades;

    • Signals - the signal/-s received, waiting for your decision; the signals will wait for your approval ONLY if you enable the toggle to Receive the signal execution request via email (p.9.f above).

  • Menu - depending on the bot's Status (see previous bullet point), the menu items will defer:

    • Waiting - Edit bot, Stop bot.

    • Active - Edit bot, View SmartTrades (if there are any active SmartTrades), Alerts log, Stop bot.

    • Signals - Edit bot, Alerts log, Stop bot.

    • Stopped - Edit bot, Delete bot.

Alerts log.

After clicking on the Signals tab or Alarm icon button, a new window with the List of signals will be opened:

What you can see here:

  • Bot - which bot received a signal.

  • Signal - what type of the signal was received.

  • Trigger time - when the signal was received.

  • Trigger price - at what price was the signal triggered.

  • Status:

    • Created - the signal from TradingView is received and is being processed;

    • Completed - the signal is processed successfully and the SmartTrade was successfully created;

    • Rejected - the signal was declined by the system after the processing failure;

    • Declined - if you manually declined the received signal;

    • Received - if you received a signal that waits for your decision (approve or decline);

    • Executing - the signal is being processed;

    • Failed - the processing was interrupted for some reason and was not completed; the signal was not executed;

    • Expired - the signal wasn't executed after a certain period of time (300 seconds by default). If the system was unable to process the signal withing this period of time (e.g., because of the network issues), the signal will have an Expired status.

  • Price - actual price when the signal was processed and executed.

  • Size - the size of the order that was sent with the signal.

  • Execution time - when the signal was processed and executed.

Did this answer your question?