How the bot trades

The ADX Trend Strategy

A plain-language walkthrough of how ZEC-USD, HYPE-USD, and DASH-USD actually get bought and sold in this bot today — the reasoning behind every trade, with no code required.

strategy: adx_trend (currently active)  ·  pairs: ZEC-USD, HYPE-USD, DASH-USD  ·  last updated 2026-09-07

The core idea

Only trade when there's a real trend to trade

Not every stretch of price action is worth trading. Sometimes a coin is genuinely trending — grinding in one direction with conviction — and sometimes it's just drifting sideways, chopping traders up on every little wiggle. This strategy's whole job is to tell those two situations apart before it risks anything.

It leans on a classic pair of indicators, ADX and DMI, both built from the same underlying math: ADX answers "is there a real trend right now, and how strong is it?" without caring which direction it runs; +DI and −DI answer "which direction?" When +DI is on top, buyers are in charge; when −DI is on top, sellers are. Only once both questions line up — a real trend, running the right way — does the bot act.

One picture

What a full trade looks like

Below is one realistic round trip. Buyers take over from sellers (a "golden cross"), the bot waits for a small stack of confirmations before actually buying, rides the move while it strengthens, then sells once sellers retake control and price actually breaks down through the level that move was built on.

+DI crosses −DI bar's high latched for reference only Buy filter stack clears a few bars later +add −DI crosses +DI bar's low latched — ratchets forward from here Sell closes below the latched low, trend strong enough, already profitable
Crossing over is only the starting gun, not the trigger: the BUY waits for a stack of extra confirmations, and the SELL waits for price to actually close through a reference low — one that keeps sliding forward every bar sellers stay in charge.
Getting in

A crossover isn't enough by itself

The moment +DI crosses above −DI, that bar's high is noted — but purely for reference and for the chart. Unlike the sell side, the buy is not gated on price ever closing above that level. Instead, a whole stack of checks has to clear together, on whichever bar first satisfies all of them:

Worth knowing A crossover has to actually be seen by the running bot to count — if the bot starts mid-trend, there's nothing to trade against until the next fresh cross. Live today, that gap is patched: on a pair's very first tick, the bot looks back through its own recent history for the most recent crossover and picks up exactly where it would have been had it never restarted. It still won't chase a move that already fully played out — it only recovers a cross that's still pending.
Riding it

Adding to a winning position — or not

Once in, the bot can add more to the same position two different ways, and they don't have to agree with each other:

In other words, as configured today this strategy behaves less like a trend-pyramiding system and more like averaging into a position that's moved against it so far — betting that a confirmed uptrend keeps its footing through a pullback. Neither add is re-checked against the volatility/RSI/volume filter stack from the entry — those only ever gate the very first buy.

Getting out

Selling needs a broken level, not just a reversed signal

The moment −DI crosses back above +DI, that bar's low becomes a reference line — and here it genuinely matters. Nothing sells until price actually closes below that line. And unlike the buy-side latch (fixed the moment it forms), this one keeps sliding forward every bar sellers stay in charge, so an ongoing decline keeps testing a moving target instead of needing to crash all the way back to wherever the cross first happened.

Bearish cross — low latched sellers stay in charge Low ratchets forward each bar price closes below the low Gates checked: strong enough? already profitable? both clear Sold if a gate doesn't clear yet, the position just holds — waiting for it to clear, or for a fresh bullish cross to cancel the whole latch
  • The trend has to be strong enough to trust the breakdown — live today this bar is set very low, so in practice almost any confirmed breakdown clears it; a separate, much stronger floor that would otherwise also apply to sells has been turned off for the exit side specifically, so a quiet, weak-signal market no longer holds up an exit the way it holds up new entries.
  • The position has to already be at breakeven-after-fees or better. This side never locks in a loss on its own — only the account-wide hard stop-loss can do that. If price is still underwater when the breakdown confirms, the bot just holds and waits, either for price to recover to breakeven or for the stop-loss to step in.

There's also a second, independent exit running alongside the one above, live today: if a bearish-looking candle (a shooting star, a bearish engulfing candle, or an RSI divergence) shows up right at a technical ceiling — the top of a Bollinger Band or a known resistance zone — the bot can sell on that alone, without waiting for a −DI cross at all. This catches a topping move that reverses before the DMI lines ever actually flip. It's still held to the same "already profitable" rule as every other sell here.

Sizing

Bigger entries when the trend is more convincing

The very first buy isn't always the same size. The stronger ADX already is the moment the entry fires, the bigger that first buy is, up to a cap — a weak, barely-qualifying trend gets a normal-sized starting position, and a strongly-confirmed one gets scaled up. Every add after that first buy, on the other hand, stays a flat fraction of a normal entry, regardless of how strong the trend gets later — the size ramp only ever applies to the opening trade.

The dip-ladder adds (see "Riding it" above) have their own separate ramp: the deeper the position is underwater when a dip-add fires, the larger that add gets, up to its own cap. A reference stop-loss level is also calculated and logged with every buy signal, based on recent volatility — but nothing in the bot actually acts on it; it's informational only, and the account-wide hard stop-loss remains the only thing that can force a losing position closed.

Guardrails

Two safety nets outside the strategy's own logic

Under the hood

Bar size and a couple of startup quirks

This strategy can optionally reason on wider candles than the bot actually polls at — trading off 1-hour or 4-hour bars, say, while still checking prices every 15 minutes. For all three pairs today this is effectively off: the configured bar width matches the bot's own base candle size exactly, so there's nothing to resample and the strategy reads plain 15-minute candles start to finish.

If that's ever turned on for a pair, a real timing bug this project ran into is already fixed and stays on automatically: naively resampling on every tick can silently redraw bar boundaries as new data comes in, which used to invent DI crossovers that never actually happened (measured on real history: over a dozen phantom crossovers a week on one pair, versus one genuine one). Bars are instead cut on fixed clock boundaries, and only fully-closed bars are used to decide anything — the one bar still forming only ever contributes the current live price.

Configured today

What's actually turned on for your three pairs

ZEC-USD, HYPE-USD, and DASH-USD all currently run under the exact same settings — there's no per-pair customization on file right now. This strategy only exposes three knobs for per-pair tuning in the first place (the buy trigger, the sell trigger, and whether to add on strength); none of the three are currently overridden for any pair. These reflect the live configuration as of this writing; changing any of them requires restarting the bot to take effect.

All three pairs up to 5 lots each

  • Buys once a real, strengthening trend clears every filter — including a hard RSI ceiling that blocks the buy outright when RSI is too hot, no matter how good everything else looks.
  • Doesn't add on strength at all right now — only averages down on a 2% price-drop ladder, sized larger the deeper underwater it gets, up to 5 total purchases.
  • Sells once price actually breaks a ratcheting reference low and the position is already profitable — the extra "trend has to be strong" bar on this side is set low enough today that it rarely holds up an exit by itself.
  • A second, independent sell can also fire on a bearish reversal candle at a technical ceiling, without waiting for the DI lines to flip at all.
  • Requires roughly 0.3% profit (the fee break-even) before either sell path will fire.
  • Hard stop-loss at −10%, paused while the market looks oversold. The separate account-wide profit cap exists but is currently switched off.
  • On restart, each pair looks back through its own recent history to pick up any still-pending signal instead of waiting from scratch.
Exact numbers
SettingValue
Max concurrent lots5
Trend-strength floor to trade at allADX > 15
Buy-side trend-strength triggerADX > 15 (same as the floor above)
Sell-side trend-strength triggerADX > 5
Trend floor blocks exits too?no (exits exempt)
Add on strengthening trendoff
Dip-add ladderon, every 2% drop
Dip-add sizing rampup to 2x a normal add, by 10% underwater
Add spacingat least 10 bars apart
Hard RSI buy vetoon, blocks buys above RSI 75
Resistance-rejection sell (independent path)on
Breakdown noise buffer0.25% past the latched low
Bar size usedthe bot's own 15-minute candles (no resampling)
Seed latch from history on restarton
Minimum profit to sell≈0.3% (fee break-even, no extra margin)
Stop-loss10%, paused while oversold
Account-wide profit capoff (0%)
Reference

A short glossary

ADX
A 0-100 reading of how strong the current trend is, regardless of direction. Low means "no real trend"; high means "this is a genuine move."
+DI / −DI
A pair of readings that say which side is winning — buyers (+DI) or sellers (−DI). Whichever is higher marks the current direction.
Golden cross
The moment +DI moves above −DI — buyers taking over from sellers.
Bearish cross
The moment −DI moves above +DI — sellers taking over from buyers.
Latch
A specific price the bot remembers from the moment of a crossover, used as the line a later move has to actually break through.
Lot
One individual purchase — a position can be made of several lots bought at different prices.