Skip to content

DCA and execution

DCA bot entry filters: explain every skipped deal

An RSI cross can be valid while a deal is blocked. Six hypothetical decisions show how to record the rule, the missing permission and signal expiry.

Ivory ribbons meet three upright gates while a single lime band passes through their aligned openings.
Illustration for dca and execution; examples in this article are educational.

DCA bot entry filters decide whether a new deal may start when a signal appears. Define the signal, the conditions that must already hold, and the account checks that can block an order. A filter can reduce entries without improving their outcomes, and rejecting a new deal does not remove the risk of positions already open.

A useful configuration explains both a trade and a skipped trade. “RSI plus a trend filter” is incomplete until it specifies the market, candle timing, crossing rule, Boolean logic and what happens when a required observation is missing.

Give every rule one job

Separate the entry decision into three parts before choosing indicators:

PartQuestion it answersExample for a hypothetical spot-buying bot
Trigger eventWhy evaluate an entry now?Completed 15-minute RSI crosses above a threshold
Market contextIs this the intended environment?Last completed hourly close exceeds its specified moving average
Operational permissionCan this deal be admitted under the plan?Current quote, acceptable spread, capacity and enough allocated cash

This is a design worksheet, not a list of KLINEO controls. Check the actual bot's configuration and documented behavior before implementing it. KLINEO's DCA configuration guide is the relevant starting point for its settings.

The separation prevents a frequent mistake: treating a market signal as permission to ignore account constraints. A strong-looking signal cannot create free balance or make an oversized order acceptable.

It also separates new-deal admission from later averaging and exits. An entry filter becoming false after a purchase does not, by itself, specify whether to cancel additions, sell inventory or continue managing the existing deal. Those are separate rules. The DCA pause-versus-close guide explains why a change in activity is different from a change in holdings.

A crossing event is different from a true state

Suppose the illustrative threshold is 30. Define crossing above as previous completed RSI at or below 30 and current completed RSI above 30. The move 29 → 31 qualifies. The next move 31 → 33 does not create another cross, although RSI remains above 30.

A level rule such as “RSI above 30” stays true across both observations. If a bot can open another deal whenever that state is true, its repeat-entry behavior needs an explicit limit. A cooldown between deals supplies a separate time restriction whose starting event also needs a definition. Do not assume the word “condition” tells you whether it means an event or a continuing state.

For a product-specific example, 3Commas documents its combined entry signals as AND conditions. It distinguishes a crossing event checked once from a level condition that remains satisfied until a later candle changes it. Those are that product's semantics; another system can implement different timing or logic.

Write the full expression. (trigger AND trend AND permission) requires every part. (trigger OR trend) AND permission admits entries while the trend state holds even without a new trigger. Parentheses are part of the strategy, not a cosmetic detail.

The RSI context guide explains the indicator itself. A crossing convention supplies reproducibility; it does not turn 30 into a suitable threshold or a probability of profit.

Freeze the evaluation contract

A reproducible entry specification should state:

  • The exact exchange, instrument and spot or contract market.
  • Each indicator's input series, period, method and timeframe.
  • Whether observations must be from completed candles.
  • When each condition expires and whether rejected triggers are discarded or retained.
  • The handling of missing data, warm-up history and duplicate evaluations.
  • The scope of account limits and the order checks performed before submission.

Hourly context and a 15-minute trigger need separate clocks. At a 10:15 UTC decision, the hourly candle ending at 11:00 is unfinished. Use the completed hourly observation required by the frozen rule, even if a chart currently displays a more attractive developing value.

TradingView's repainting documentation explains that RSI and MACD can fluctuate on an unconfirmed realtime bar, and higher-timeframe requests can also contain unconfirmed values. Waiting for a closed lower-timeframe candle does not establish that every higher-timeframe input is confirmed. The market-data freshness guide provides a broader input record.

Work through six independent entry decisions

The following synthetic cases use one frozen hypothetical rule, not recommended settings:

A Wilder-smoothed RSI(14) on completed 15-minute closes crosses above 30; the most recently completed hourly close is strictly above its 50-period EMA of hourly closes; spread is no more than 0.15% of midpoint; quote age is no more than two seconds; fewer than two deals are active; and at least $600 of the exercise's uncommitted allocation remains for the new deal's full purchase ladder, before separately allowed costs.

Each row is an independent scenario, not a continuous price history. Indicator values are supplied observations, not calculations from an invented candle series. All omitted checks, including the cash check, pass.

CasePrevious → current RSIHourly close / EMASpreadQuote ageActive dealsDecision and reason
A29 → 31102 / 1000.10%1 s1Eligible for submission checks
B31 → 33102 / 1000.10%1 s1Skip: no new crossing event
C28 → 3298 / 1000.09%1 s1Skip: trend context fails
D29 → 31102 / 1000.24%1 s1Skip: spread exceeds limit
E29 → 31102 / 1000.10%9 s1Skip: quote is too old
F29 → 31102 / 1000.10%1 s2Skip: deal capacity reached

For the spread calculation, a bid of 100.00 and ask of 100.10 have midpoint 100.05. Spread is 100 × (100.10 − 100.00) ÷ 100.05 ≈ 0.09995%, displayed as 0.10%. A narrow displayed spread still does not establish enough depth for the intended quantity.

The $600 requirement concerns this exercise's full ladder, not only its first purchase. Use the capital-requirements worksheet to define that commitment and the max-active-deals guide to check its scope across simultaneous positions. If a profit-reinvestment policy increases later order sizes, update the admission budget instead of leaving the original $600 check unchanged.

Decide what happens after a blocked signal

Case E exposes a timing choice. Suppose fresh quotes arrive five seconds later. Should the bot enter then because the earlier cross is remembered, or wait for a new cross?

Either behavior needs a written rule and matching tests. A retained signal requires an expiry, updated market checks and a rule for how much price movement is acceptable before acting. A discarded signal may mean no trade despite a chart showing a historical cross. That is an expected consequence of the contract, not necessarily a malfunction.

Missing observations should have an explicit outcome too. For this worksheet, missing required data blocks a new entry. It does not instruct the bot to abandon exits on an existing position. Keep the reason with the signal so that “no entry” can be distinguished from “no data.”

Even case A has only earned an order attempt. Binance Spot's official filters impose price, quantity and notional rules independently of the entry signal. An order can fail after the strategy qualifies. Record acceptance and fills separately from eligibility; do not relabel an unfilled order as a completed deal.

Evaluate what the filter removed

Compare a frozen baseline with one added filter over the same candidate signals and period. Keep rejected candidates in the record. Measure trade count, capital usage, time exposed, costs and adverse outcomes under the same entry and exit assumptions. Fewer trades alone demonstrate selectivity, not an advantage.

A filter that rejects nearly everything may produce too little evidence to assess. Several indicators derived from the same prices can also repeat similar information. A stack of conditions does not automatically supply independent confirmation.

Retain the alternatives you tried, including rejected thresholds. Choosing a filter after inspecting its results is another research choice; the backtest-overfitting guide explains why that trial history matters. No combination in this article has demonstrated a trading edge.

Before running a bot, complete one sentence: “This event starts an evaluation; these states and account checks must pass; a blocked event expires this way; existing positions follow these separate rules.” That specification makes entry decisions inspectable without promising what the market will do next.

Prepared with AI assistance under the editorial policy. The worksheet is hypothetical, primary documentation establishes only the stated product or venue behavior, and the article does not report live results or personalized trading advice.

Keep the context with the example.

Each worked example is illustrative, with its sources and assumptions in the article. Read our editorial standards for authorship, verification and corrections.