Documentation Index
Fetch the complete documentation index at: https://uncoded.ch/docs/llms.txt
Use this file to discover all available pages before exploring further.
15-minute entry trigger catches the entry within that regime. Two strategies, one composed system. Better than either alone.Goal
Capture entries onBTCUSDT 15m only when the daily timeframe confirms a tradable regime (uptrending). Avoid entries during sustained daily downtrends.
Why multi-timeframe
Faster timeframes have more noise
Faster timeframes have more noise
15m candles produce many entry signals — but many are noise that won’t follow through. Daily timeframe filters out the regime-mismatched entries.Slower timeframes have fewer entries
Slower timeframes have fewer entries
15m entry timing increases activity within the daily-confirmed regime.The composition is selective
The composition is selective
15m entry signal” is more selective than either alone. Selectivity = better per-trade quality, even at lower trade count.When to pick this recipe
Crypto markets in mixed regimes
You're an experienced operator
You want a more sophisticated strategy
When NOT to pick this recipe
Setup steps — two strategies in composition
Strategy A: Daily trend filter
daily-trend-filter-btcusdt.- Price node:
BTCUSDT, timeframe1d. - Indicator: EMA(50) on price.
- Condition: price
>EMA(50) AND EMA(50) is rising over5daily bars (use therisingtrend condition, length5). - Trigger:
once_per_bar_close. - Webhook: write
trend_filter_btcusdt: trueto a custom config flag.
Strategy A mirror — daily filter OFF
daily-trend-filter-btcusdt-off.- Same Price + EMA setup.
- Condition: price
<EMA(50) OR EMA(50) isfallingover5daily bars. - Trigger:
once_per_bar_close. - Webhook: write
trend_filter_btcusdt: false.
Strategy B: 15m entry trigger
entry-trigger-btcusdt-15m.- Price node:
BTCUSDT, timeframe15m. - Indicator: RSI(14) on price.
- Condition: RSI
<30ANDtrend_filter_btcusdt == true(read the flag set by Strategy A). - Trigger:
once_per_bar_close. - Webhook: write
canBuy: truefor the mode.
Strategy B mirror — entry OFF
entry-trigger-btcusdt-15m-off.- Same Price + RSI.
- Condition: RSI
>70ORtrend_filter_btcusdt == false. - Trigger:
once_per_bar_close. - Webhook: write
canBuy: false.
Test the chain end-to-end
- When daily trend is on AND 15m entry triggers, mode’s
canBuyflips to true. - When daily trend turns off, mode’s
canBuyflips to false regardless of 15m signals. - Database surface (Dashboard) shows the expected configuration state after each step.
Backtest the combined system
Forward-test on small capital
$3,000–$5,000 allocation for 4+ weeks (multi-timeframe recipes have less frequent entries — need longer windows to validate).Expected behavior
Firing frequency
Firing frequency
1/3 to 1/5 of the rate. The trade-off: each entry has higher selectivity.Win rate
Win rate
~70–85% win rate on validated combinations.However: total return depends on win count × avg win size. Lower frequency means total return may be similar or modestly different from less-selective approaches.Drawdown character
Drawdown character
Common mistakes
❌ Running just the entry strategy without the filter
❌ Running just the entry strategy without the filter
trend_filter_btcusdt: true/false, Strategy B’s read of the flag is undefined. Behavior collapses to RSI-only.Fix: build all 4 strategies (A, A-off, B, B-off) before going live.❌ Forgetting the OFF strategies
❌ Forgetting the OFF strategies
❌ Both timeframes on noise-prone settings
❌ Both timeframes on noise-prone settings
length 5 for rising is reasonable. With length 1 (just one bar’s direction), the filter trips constantly.Fix: use trend-detection lengths that match the timeframe’s character (5–20 for daily; 20–50 for hourly).❌ Forward-testing too short
❌ Forward-testing too short