> ## Documentation Index
> Fetch the complete documentation index at: https://takeprofit.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Built-in trading bots

> Choose and configure TakeProfit's Grid, DCA, Infinity Grid, Buy the Dip, Scheduled DCA, and TWAP bots, understand their chart output, and know their current limits.

Built-in trading bots are ready-to-run strategies for common execution and
position-management tasks. They can be backtested on historical data and run in
live trading from the same settings.

> [!WARNING]
>
> A backtest is an approximation, not a promise of live results. Live fills can
> differ because of latency, slippage, gaps, exchange fees, minimum order sizes,
> margin rules, and rejected orders. Test a bot on the intended symbol and
> timeframe before enabling live trading, and begin with a small allocation.

## Start a bot

1. Open the **Indicators and Strategies** menu from the **f** button on the chart.
2. Select a bot from the built-in library and add it to the chart.
3. Configure the bot inputs. Also review strategy capital, leverage, and
   commission settings before backtesting.
4. Run the bot in the Strategy Tester over different market conditions, not only
   the period that motivated the setup.
5. Check the status label, price levels, order markers, open position, and report.
   They should tell the same story.

Market orders do not fill at the instant the bot submits them. The result becomes
visible on a later price update, both in the emulator and in live trading. See
[Strategy mechanics](https://takeprofit.com/docs/indie/Strategies/Strategy-mechanics.md) for execution timing
and the differences between backtesting and live trading.

## Choose a bot

| Bot | Best suited for | Main limitation |
| - | - | - |
| **Grid Bot** | Repeated buying and selling inside a defined sideways range | Long-only; a fixed grid stops trading while price remains outside its range |
| **DCA Bot** | Averaging into one long or short deal and exiting from its average entry | Increasing safety-order size can consume capital quickly; no trailing take profit |
| **Infinity Grid Bot** | A grid whose operating window follows price instead of ending at fixed bounds | Long-only; moving the window can create additional market orders and costs |
| **Buy The Dip Bot** | One long entry after a pullback from a recent high | Entry and exits are evaluated on closed candles, not continuously intrabar |
| **Scheduled DCA Bot** | Accumulating an asset at a daily, weekly, or monthly cadence | Buy-only and never sells automatically |
| **TWAP Bot** | Splitting one buy or sell instruction into equal market-order slices | Uses bar intervals, not clock time, and does not adapt to liquidity or price impact |

## Read the chart

Every bot places a status label in the top-right corner of the chart. Use it as
the primary summary of whether the bot is warming up, waiting, active, exiting,
rebalancing, halted, or complete. Depending on the bot and its current state, the
label also shows the position, progress, and next relevant action or level.

The platform draws its own **Buy** and **Sell** markers for submitted orders. The
additional bot lines explain what the bot is waiting for:

* **green** — a buy level or profit target;
* **red** — a sell level or stop-loss level;
* **yellow** — average entry or average fill;
* **gray** — a level that is no longer active;
* a missing TP or SL line means that exit is not armed at that moment.

Background tint indicates a persistent state such as an active deal, waiting,
recentring, or exiting. Read the label for the exact state; the meaning of a tint
varies by bot.

## Grid Bot

Grid Bot divides a price range into levels. It holds inventory for the sell side
of the grid, places buys below the current price and sells above it, and reverses
each level after a fill. A completed buy-then-sell cycle captures approximately
one grid step before fees and slippage.

### Configure the range

* Set both **Lower price** and **Upper price** to positive values for a manual
  range. The lower value must be below the upper value.
* If either bound is `0`, the bot derives both bounds from **Auto range length**.
  It waits until that many bars are available, then freezes the range when it
  starts.
* **Grid levels** includes both outer bounds. Ten levels create nine tradable
  intervals. The supported maximum is 100 levels.
* **Arithmetic** mode keeps the price difference between levels constant.
  **Geometric** mode keeps the percentage difference approximately constant.

Use a manual range when you have a specific support/resistance thesis. Use an
automatic range when recent history is a reasonable definition of the expected
sideways market. A range learned from a volatile or trending window can be much
wider than intended.

### Size and run the grid

* With **% of cash**, **Budget** is the total cash allocation used to size the
  grid, not the percentage for each level.
* With **quantity per level**, the value is the quantity assigned to every
  interval. Check the resulting maximum inventory and margin requirement before
  using this mode.
* The first market order acquires the inventory needed by sell levels above the
  starting price. Resting grid orders are armed after that inventory is ready.

If **Close and halt on first range exit** is off, an out-of-range bot keeps its
position and waits for price to return; it has no levels beyond the fixed bounds.
If the option is on, the bot waits for price to enter a manual range before
starting, then cancels the grid, closes the position, and halts on the first later
exit. A rejected close is not retried while the position is unchanged; if a late
fill changes the exposure, the bot submits one new close for the actual position.
A canceled close remains a guard against a possible late fill, so the bot stays
halted and reports the unresolved position instead of retrying. Inspect and
manage that position manually.

On the chart, the green and red outer lines are the lower and upper bounds.
Internal green segments are current buy orders; internal red segments are current
sell orders. They turn gray after the bot halts.

### Current limitations

* Grid Bot is long-only. It does not offer short or market-neutral grid modes.
* The grid range does not trail price after startup.
* A narrow grid can trade frequently enough for fees and slippage to exceed the
  gross profit per step.
* A strong move outside the range can leave the bot holding inventory while it
  waits, unless range-exit closing is enabled.

## DCA Bot

DCA Bot manages one averaging deal at a time. It submits a base market order,
places a ladder of safety orders against the position, and recalculates the exit
levels from the actual average entry as safety orders fill. After an exit, it can
start a new deal when the entry condition is met again.

### Direction and entry

* **Long** buys the base order and places safety buys below it.
* **Short** sells the base order and places safety sells above it.
* With **RSI trigger** set to `0`, a deal starts immediately when trading is
  available. A long deal with a non-zero trigger waits for RSI below the level; a
  short deal waits for RSI above it.
* **RSI length** controls the lookback used by that entry filter.

### Safety-order ladder

**Price deviation** is the first step away from the base price. **Safety order
step scale** multiplies each following step, and the steps are cumulative. For
example, a 1.5% deviation with a 1.2 scale places the first three safety levels at
approximately 1.5%, 3.3%, and 5.46% from the base price.

**Safety order volume scale** multiplies the size of each following safety order.
Values above 1 increase exposure progressively; values below 1 reduce it.

When sizes are expressed as **% of cash**, the bot validates the base order plus
the complete scaled safety ladder. A configuration above 100% is rejected before
the deal starts. Quantity mode is not capped this way, so its margin requirement
must be checked manually.

### Exits and chart levels

**Take profit** and **Stop loss** are measured from the current average entry, not
from the original base order. The take profit is a resting limit order. The stop
loss is monitored by the bot and exits with a market order after the stop level is
observed, so a gap can produce a worse fill. Set **Stop loss** to `0` to disable it.

The yellow line is average entry, green is take profit, and red is stop loss.
Green safety segments belong to a long deal; red safety segments belong to a
short deal. Filled safety levels, and remaining levels canceled while a deal is
closing, turn gray. **Next safety** in the status label is the next still-active
order, which can be farther away than a gray historical safety line.

### Current limitations

* There is no trailing take profit.
* Growing step and volume scales can make later safety orders much farther away
  and much larger than the first ones.
* A stop is evaluated when the bot receives a price update; it does not guarantee
  execution at the drawn stop price.
* Exchange minimum size/value rules can make very small requested orders larger
  than the nominal setting.

## Infinity Grid Bot

Infinity Grid Bot maintains a moving window of intervals around the current
price. When price leaves the window, the bot cancels the old grid, builds a new
one around the new price, and adjusts inventory for the new sell side. It is
useful when fixed lifetime bounds are undesirable, but it still carries grid
inventory and trading costs.

* **Grid step** is the percentage spacing calculated when a window is built.
* **Intervals below/above anchor** control the size of each side of the window;
  each side supports up to 49 intervals.
* With **% of equity**, the bot recalculates per-level size when the window moves.
  **Quantity per level** keeps the requested unit size instead.

Green segments are resting buys and red segments are resting sells. The outer
green and red lines show the current window. A blue background and the status
label indicate that the bot is moving and rebalancing the window.

Infinity Grid is long-only. Moving the window in a strong trend can cause frequent
cancellations, market rebalancing, fees, and slippage; “infinity” means the range
can move, not that risk or capital is unlimited.

## Buy The Dip Bot

Buy The Dip Bot waits until price falls **Dip below reference high** percent from
the highest price in **Reference high length**, then opens one long position. It
closes that position at a take-profit or an optional stop-loss measured from the
actual entry.

The bot waits for a complete reference window before it can enter. Entry, take
profit, and stop loss are evaluated on closed candles and submitted as market
orders, so an intrabar touch alone does not trigger them and the fill may differ
from the drawn level.

The aqua line is the current dip trigger, green is take profit, red is stop loss,
and yellow is not used. The bot does not average down and cannot hold more than
one deal at a time. It is long-only and has no trailing exit.

**Order size** is either a percentage of available cash or a quantity, selected
with **Order size unit**. Percentage sizing is calculated when the entry signal
fires; quantity sizing should be checked against the instrument's margin and
minimum-order requirements.

## Scheduled DCA Bot

Scheduled DCA Bot buys on a calendar cadence and never sells automatically. The
first buy is submitted as soon as the bot can trade; daily and weekly intervals
are then measured from that first accepted buy. A weekly setup therefore waits a
full seven days for its second buy. Monthly cadence follows UTC calendar months,
so the next buy happens on the first available bar in a later month rather than
after a fixed number of days.

* **Amount per buy** is either a quantity or a percentage of the cash recorded
  when the first buy is accepted. Percentage buys do not shrink merely because
  earlier buys consumed cash.
* **Max buys** set to `0` means unlimited; any positive value stops new purchases
  after that many accepted orders.
* The bot skips a purchase when there is not enough remaining cash and retries
  when it next has an eligible opportunity.

The yellow line is the average entry. The status label shows the cadence, number
of submitted buys, position, and average price. The bot is buy-only, has no
profit target or stop loss, and does not rebalance or sell accumulated inventory.

## TWAP Bot

TWAP Bot divides one total buy or sell instruction into equal market-order slices.
It submits the first slice when it starts and then waits **Bars between slices**
before each following slice.

* **Total size** can be a quantity or a percentage of cash.
* **Number of slices** divides that total. The slice size is fixed when the first
  slice is accepted, so later price or cash changes do not resize the plan.
* **Buy** adds to or opens a long position. **Sell** reduces a long position or
  can create/increase a short net position.

The yellow line shows the average fill of the current net position. The status
label shows submitted slices, the next bar index, position, and average. A blue
background remains while slices are still being submitted.

This is a bar-based execution schedule, not exchange-native TWAP. The actual
clock duration changes with the chart timeframe and missing sessions. All slices
are market orders; the bot does not react to spread, volume, order-book depth, or
price impact, and it does not unwind the resulting position when the schedule
finishes.

## Limits shared by all bots

* A strategy trades only the primary chart instrument.
* Positions are net positions. Grid Bot and Infinity Grid Bot currently support
  only long grids; hedge-mode long and short books are not available.
* Instrument minimum order size and minimum order value can override a requested
  size. Always inspect the actual orders in the report.
* Insufficient cash or margin, exchange rules, disabled live trading, or
  transport failures can reject an order. The bot handles the terminal status,
  but it cannot make an invalid account configuration executable.
* Commission, spread, slippage, funding, and gaps can materially change the
  result. Configure realistic backtest costs and compare more than one symbol,
  timeframe, and market regime.
* Avoid running multiple strategies that are intended to control the same net
  position independently.

For the underlying order types and statuses, see
[Orders](https://takeprofit.com/docs/indie/Strategies/Orders.md). For capital, leverage, commission, and other
backtest settings, see
[Strategy parameters](https://takeprofit.com/docs/indie/Strategies/Strategy-params.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.