QFL 3C Scalper
QFL 3C Scalper is a spot-only strategy inspired by the Quickfingers Luc base-and-crack concept. It identifies confirmed price bases from completed candles, waits for price to fall a configured percentage below a selected base, and then manages the long position with a base order, optional DCA ladder, two partial profit orders, a trailing final portion, and a fixed safety stop.
The strategy can coordinate entries across several pairs on the same exchange so that one group-level trade limit controls portfolio exposure.
warning
QFL 3C is a high-risk averaging strategy. For USDT-BTC, the defaults can allocate 1000 USDT to the initial order and another 3000 USDT across three DCA orders, plus fees. Reduce order sizes for your account and validate signals before enabling live orders.
info
The detector is a deterministic QFL-compatible approximation. It does not claim to reproduce a proprietary third-party signal formula whose complete rules are not public.
Trading lifecycle
QFL 3C moves through five practical phases:
- Confirm a price base.
- Wait for a crack below that base.
- Place and manage the base order.
- Manage DCA and staged profit exits.
- Close the position and enter cooldown.
It is long-only and opens at most one managed trade per pair.
Base detection
Only completed candles are used. The default detector evaluates up to 500 one-hour candles.
For base detection, the strategy uses the lower edge of each candle body rather than its wick. A candle becomes a candidate when this body low is a local pivot compared with candles to its left and right.
BASE_PIVOT_LEFT and BASE_PIVOT_RIGHT set those comparison widths. Larger values demand a more isolated low and usually produce fewer candidates.
A candidate becomes a confirmed base only when candle bodies rebound by at least BASE_MIN_BOUNCE_PCT within BASE_BOUNCE_WINDOW. It is rejected if price closes too far below it first, controlled by BASE_PRECONFIRM_INVALIDATION_PCT.
Nearby confirmed bases are merged according to BASE_MERGE_TOLERANCE_PCT. BASE_MAX_AGE_CANDLES removes old bases from consideration.
Crack and entry confirmation
The crack level is:
confirmed base × (1 - QFL_DROP_PCT / 100)
For example, a base at 100 with QFL_DROP_PCT = 4.7 produces a crack at 95.30.
ENTRY_CONFIRMATION_MODE offers two choices:
thresholdqualifies when the ask reaches or falls below the crack.reboundfirst arms at the crack, records the lowest ask, and then requires a rebound ofENTRY_REBOUND_PCT.
ENTRY_REBOUND_TIMEOUT_SECONDS abandons an armed rebound setup if it does not confirm in time. Set it to 0 for no timeout.
Rebound mode can avoid entering during the first part of a fast decline, but it may enter higher or miss a move that never rebounds.
Entry safety gates
Before a live base order, the strategy checks:
QFL_LIVE_TRADING,BUY_ENABLED, and valid market data;- spread at or below
MAX_SPREAD_PCT; - rolling volume at or above
MIN_DAILY_VOLUME_BTC; - no unmanaged open orders;
- a clean existing asset balance when required;
- sufficient available USDT for the complete plan on a pair such as
USDT-BTC, when required; - an available shared coordinator slot.
VOLUME_UNIT_MODE must match the exchange candle feed. For a market shown in Gunbot as USDT-BTC, choose base_asset when the raw candle volume is measured in BTC, or quote_notional when it is already expressed as a USDT value. A wrong mode makes the BTC-equivalent liquidity gate misleading.
Signal-only validation
QFL_LIVE_TRADING defaults to false. In this mode QFL 3C detects bases and cracks, evaluates gates, and updates chart/sidebar information without placing or cancelling orders.
Before live use:
- Keep the pair period at 60 minutes.
- Confirm that completed candle history is available.
- Inspect whether bases and cracks appear at sensible levels.
- Verify rolling volume and spread.
- Configure amount precision, price precision, and minimum notional explicitly.
- Reduce the initial-order and DCA amounts. For
USDT-BTC, these values are in USDT. - Enable live trading only after the complete plan is understood.
warning
Do not switch a position that still requires management into signal-only mode. Reconcile and finish the active cycle first.
Base-order management
BASE_ORDER_QUOTE is the initial limit-order value before reinvestment.
If the order remains open for ENTRY_REPRICE_SECONDS, the strategy cancels it, confirms cancellation, and can replace only the unfilled remainder near the current ask.
ENTRY_MAX_AGE_SECONDS limits the total time allowed for the entry. 0 leaves the total duration unlimited.
AMOUNT_DECIMALS, PRICE_DECIMALS, and MIN_ORDER_NOTIONAL must match the exchange and pair. Their current defaults (-1, -1, and 0) are placeholders that cause the strategy to pause rather than guess. Set verified live values before enabling orders.
DCA ladder
DCA levels remain anchored to the VWAP of the original base-order fill. Later DCA fills change the overall average cost used by take profits, but do not move the ladder’s anchor or the safety-stop anchor.
With the defaults:
| Order | Distance below base VWAP | Value for USDT-BTC |
|---|---|---|
| DCA 1 | 2.5% | 1000 |
| DCA 2 | 5.0% | 1000 |
| DCA 3 | 7.5% | 1000 |
DCA_STEP_MULTIPLIER changes how spacing grows from one level to the next. DCA_VOLUME_MULTIPLIER changes later order sizes. Only one unfilled DCA order is managed at a time.
Set MAX_DCA_ORDERS to 0 to disable the ladder.
Staged profit exits
Take-profit levels are recalculated from the fee-aware average cost after additional buys.
The default plan is:
- TP1 sells 50% at +1%.
- TP2 sells another 25% at +2%.
- TP3 arms at +3%, then trails the remaining 25%.
After TP3 arms, TP3_TRAILING_DEVIATION_PCT defines the reversal from the highest observed bid that closes the runner.
TP_TARGET_MODE = net compensates the target levels for expected sell fees. gross applies the configured percentages without that compensation.
The three TP*_VOLUME_PCT values must total exactly 100. Treat them as portions of the original acquired position, not portions of whatever remains at each stage.
Safety stop
The safety stop is fixed below the original base-order VWAP:
base-order VWAP × (1 - STOP_LOSS_PCT / 100)
DCA does not move this anchor lower. That prevents averaging down from continually expanding the stop distance, although the loss on total allocated capital can still be substantial.
STOP_LOSS_TIMEOUT_SECONDS requires price to remain at or below the stop for the configured duration. 0 reacts immediately.
Stop handling takes priority over DCA and profit orders. After the cycle is confirmed closed, COOLDOWN_SECONDS delays new scanning.
Portfolio coordinator
Pairs on the same exchange with the same COORDINATOR_GROUP_ID share:
- a maximum number of active trades;
- a per-pair limit;
- optional reinvestment of positive realized group P/L.
MAX_ACTIVE_TRADES_PER_PAIR must remain 1. MAX_ACTIVE_TRADES controls group-wide concurrency.
When REINVEST_ENABLED is active, REINVEST_PCT determines how much positive group P/L can increase future base and DCA sizes. Negative group P/L does not reduce the configured sizes.
REINVEST_ALLOCATION_MODE currently supports group_capacity.
Keep ALLOW_UNCOORDINATED_ENTRY disabled unless you deliberately accept entries when the shared capacity check is unavailable. Enabling it can exceed the intended group exposure.
Good market conditions
QFL 3C is designed for:
- liquid USDT spot pairs;
- an identifiable base followed by a sharp temporary crack;
- sufficient depth for several limit orders;
- markets where deep deviations often rebound toward average cost;
- portfolios with enough reserved capital for the entire ladder.
The method can suit volatile, broadly liquid markets that produce panic wicks or rapid sell-offs into established structure.
It is dangerous during sustained structural declines, illiquid crashes, or regime changes where an old base no longer represents support. A larger QFL drop filters shallow moves but does not make a falling market safe. DCA improves average cost by increasing exposure, not by reducing risk.
Creating the strategy
Create a spot strategy and choose QFL 3C Scalper as both buy and sell method.
Recommended first setup:
- Use a supported USDT spot pair.
- Keep
PERIODandQFL_TIMEFRAME_MINUTESat 60. - Leave
QFL_LIVE_TRADINGdisabled. - Set verified exchange precision and minimum-notional values.
- Reduce base and DCA sizes.
- Confirm the full-capital requirement fits the account.
- Start with a small coordinator group.
- Inspect several signal-only cracks before considering live orders.
Strategy settings
Safety and execution
| Setting | Description |
|---|---|
BUY_ENABLED | Allows strategy buy orders. |
SELL_ENABLED | Allows strategy sell orders. Do not disable it during a managed position. |
PERIOD | Pair candle period. The editor supports 60 for this strategy. |
QFL_LIVE_TRADING | Master order switch. false keeps the strategy signal-only. |
ALLOW_FETCHED_TIMEFRAME | Allows the required timeframe to be fetched when the pair period differs. Keeping the pair at 60 is safer. |
AMOUNT_DECIMALS | Verified order-quantity precision. The default -1 pauses live operation rather than guessing. |
PRICE_DECIMALS | Verified limit-price precision. The default -1 pauses live operation rather than guessing. |
MIN_ORDER_NOTIONAL | Verified exchange minimum order value. The default 0 must be replaced for live use. |
MAX_SPREAD_PCT | Maximum permitted spread for a new entry. |
TRADING_FEE_PCT | Fallback fee estimate when complete exchange fee data is unavailable. |
Base detector
| Setting | Description |
|---|---|
QFL_TIMEFRAME_MINUTES | Detector timeframe; currently 60 minutes. |
QFL_CANDLE_COUNT | Maximum completed candles evaluated. |
QFL_DROP_PCT | Distance below a confirmed base that defines the crack. |
BASE_PIVOT_LEFT | Completed candles to the left of a local base candidate. |
BASE_PIVOT_RIGHT | Completed candles to the right required for confirmation. |
BASE_MIN_BOUNCE_PCT | Minimum candle-body recovery required to confirm a base. |
BASE_BOUNCE_WINDOW | Candles allowed for that recovery. |
BASE_MERGE_TOLERANCE_PCT | Distance within which nearby confirmed bases merge. |
BASE_MAX_AGE_CANDLES | Maximum age of an eligible base. |
BASE_PRECONFIRM_INVALIDATION_PCT | Close below a candidate that rejects it before confirmation. |
Entry and base order
| Setting | Description |
|---|---|
ENTRY_CONFIRMATION_MODE | Selects threshold crack entry or rebound confirmation. |
ENTRY_REBOUND_PCT | Recovery from the post-crack low required in rebound mode. |
ENTRY_REBOUND_TIMEOUT_SECONDS | Maximum wait for rebound confirmation; 0 disables expiry. |
BASE_ORDER_QUOTE | Initial order value before reinvestment. For USDT-BTC, this value is in USDT. |
ENTRY_REPRICE_SECONDS | Open-order age before cancellation and replacement of the unfilled remainder. |
ENTRY_MAX_AGE_SECONDS | Maximum total entry duration; 0 means unlimited. |
DCA
| Setting | Description |
|---|---|
DCA_ORDER_QUOTE | Starting USDT value for each DCA order on USDT-BTC, before scaling and reinvestment. |
MAX_DCA_ORDERS | Maximum DCA fills planned for a cycle. |
DCA_FIRST_DEVIATION_PCT | First DCA distance below original base-order VWAP. |
DCA_STEP_MULTIPLIER | Multiplier controlling how later spacing grows. |
DCA_VOLUME_MULTIPLIER | Multiplier controlling later DCA order values. |
Take profit, stop, and cooldown
| Setting | Description |
|---|---|
TP1_PCT | First target above current fee-aware average cost. |
TP1_VOLUME_PCT | Original acquired quantity assigned to TP1. |
TP2_PCT | Second target above current fee-aware average cost. |
TP2_VOLUME_PCT | Additional original quantity assigned to TP2. |
TP3_PCT | Level that arms trailing for the final portion. |
TP3_VOLUME_PCT | Original quantity assigned to the trailing runner. |
TP3_TRAILING_DEVIATION_PCT | Reversal from the best bid that closes the runner. |
TP_TARGET_MODE | net includes expected exit fees; gross does not. |
STOP_LOSS_PCT | Safety-stop distance below original base-order VWAP. |
STOP_LOSS_TIMEOUT_SECONDS | Required time at or below the stop; 0 reacts immediately. |
COOLDOWN_SECONDS | Delay after a confirmed flat exit before new scanning. |
Capital and liquidity
| Setting | Description |
|---|---|
MAX_ACTIVE_TRADES | Maximum simultaneous trades in one exchange/coordinator group. |
MAX_ACTIVE_TRADES_PER_PAIR | Per-pair limit; must remain 1. |
MIN_DAILY_VOLUME_BTC | Minimum rolling 24-candle volume expressed as estimated BTC value. |
VOLUME_UNIT_MODE | Selects base_asset or quote_notional interpretation of candle volume. |
REINVEST_ENABLED | Allows positive realized group P/L to increase future order sizes. |
REINVEST_PCT | Percentage of positive group P/L eligible for allocation. |
REINVEST_ALLOCATION_MODE | Allocation algorithm; currently group_capacity. |
REQUIRE_CLEAN_ASSET_BALANCE | Blocks entry when existing asset quantity exceeds allowed dust. |
CLEAN_ASSET_DUST | Existing asset quantity tolerated by the clean-balance check. |
REQUIRE_FULL_TRADE_CAPITAL | Requires enough available USDT on USDT-BTC for the initial order, full DCA plan, and fee reserve. |
FEE_RESERVE_PCT | Extra capital included in the full-plan requirement. |
Coordinator
| Setting | Description |
|---|---|
COORDINATOR_GROUP_ID | Identifier shared by pairs using the same slots and reinvestment pool. |
COORDINATOR_LOCK_STALE_SECONDS | Age after which an abandoned coordinator update lock may be treated as stale. |
COORDINATOR_HEARTBEAT_STALE_SECONDS | Age used during safe cleanup of inactive reservations; open positions are not removed by age alone. |
ALLOW_UNCOORDINATED_ENTRY | Allows entry without coordinator confirmation. Leave disabled for bounded group exposure. |
Backtesting
| Setting | Description |
|---|---|
BF_SINCE | Start of the selected backtesting period. |
BF_UNTIL | End of the selected backtesting period. |
DEEP_TESTING | Enables deeper historical reconstruction in the editor. |
Practical tuning directions
For fewer and deeper signals, increase QFL_DROP_PCT. For faster confirmation after a crack, use threshold mode; for evidence of recovery, use rebound mode.
Change DCA spacing and volume together only after calculating maximum capital and stop exposure. Increasing either multiplier can make later ladder steps much larger than the defaults.
Keep TP percentages ordered from lowest to highest and make the three volume percentages total exactly 100.
Use coordinator groups to express real portfolio limits. A pair-level backtest cannot model several pairs competing for the same slots and capital.
Important limitations
- QFL bases are algorithmic approximations, not guaranteed support.
- DCA increases exposure during adverse movement.
- The stop is anchored to original base VWAP, not the lower combined average cost.
- Current precision defaults are deliberate pause values, not usable live settings.
- Signal-only validation does not reproduce fills, partial fills, cancellations, or latency.
- Single-pair backtests cannot reproduce shared coordinator contention.
- Candle-volume interpretation depends on the exchange feed.
- Manual orders or pre-existing asset balances can conflict with safe ownership tracking.
QFL 3C Scalper is best treated as a complete portfolio-aware trade plan, not a single dip-buy signal. The quality of the base matters, but sizing the full ladder and keeping the coordinator and safety gates intact matter just as much.