Source: vídeo YouTube
Dzncfb_Fmgs"SETUP PARA OPERAR CRIPTOMOEDAS EM QUALQUER PRAZO OPERACIONAL", extraído via NotebookLM (transcrição completa emcapile-project-vault/raw/chats-claude/2026-04-26-stormer-video-Dzncfb-transcript.md).
Trend-following pullback com 7 EMAs simultâneas alinhadas + entrada no rompimento da máxima do candle de touch + stop atrás da EMA inferior + alvo 3R (parcial em 2R).
[20, 25, 30, 35, 40, 45, 50].[10, 15, 20, 25, 30, 35]
(quando topo do ativo dá raiz ≈ 10).LONG: EMA20 > EMA25 > EMA30 > EMA35 > EMA40 > EMA45 > EMA50
(todas alinhadas e ordem correta, tendência alta clara).
SHORT: ordem invertida.
Skip: lateralização, médias se cruzando, "bagunça".
+1 tick acima do high do candle de
touch. Vale só pro próximo candle.+1 tick acima do high desse novo candle. Repete a cada bar.40% × 3 − 60% × 1 = +0.6R/trade| componente Stormer | infra capile-bot atual | gap |
|---|---|---|
| 7 EMAs alinhadas | src/indicators/ema.py (1 EMA por chamada) |
✅ trivial — chamar 7 vezes |
| Filtro alinhamento estrito | nenhum equivalente | 🟡 helper novo (10 LOC) |
| Pullback toca EMA | src/strategy/pullback.py (EMA9+EMA21+candle) |
🟡 setup diferente |
| Stop-buy order acima do high (entrada condicional) | engine entra no close do bar | 🔴 engine não suporta — precisa simular |
| Stop atrás de EMA inferior (não % fixo nem ATR) | atual: −2% fixo ou X×ATR | 🟡 stop dinâmico baseado em EMA — fácil |
| Alvo 3R | atual: 1.8R | 🟡 só param |
| Realização parcial em 2R | engine já suporta partial_take_profit_pct |
✅ |
O engine atual entra no close do bar de signal. Stormer entra no
rompimento da máxima do bar de touch durante o bar SEGUINTE (e
roll-forward).
Pra simular fielmente, engine precisa:
1. Detectar bar de touch → marca "armed" com entry_trigger = touch_high + tick
2. Bar seguinte: se high >= entry_trigger: entra em entry_trigger.
3. Se não atingiu: atualiza entry_trigger = max(entry_trigger, novo_high + tick) (move pra cima... espera, NÃO. Boss disse "máxima do candle seguinte"). Re-lendo:
"se a entrada não for acionada no candle seguinte, a ordem deve ir sendo movida para a máxima (ou mínima, na venda) do candle seguinte sucessivamente"
Move pra máxima do candle seguinte (que pode ser maior OU menor que o original). Em essência: stop-buy fica sempre 1 tick acima do high da barra IMEDIATAMENTE anterior (rolling).
Em código:
# bar de touch detectado em i:
entry_trigger = candles.high.iloc[i] + tick
armed = True
# pra cada bar seguinte j:
while j < len(candles) and armed:
# check cancel: close abaixo da EMA50?
if candles.close.iloc[j] < ema50.iloc[j]:
armed = False; break
# check trigger
if candles.high.iloc[j] >= entry_trigger:
# entry no preço entry_trigger (não no close)
entry_at(entry_trigger, j)
break
# roll-forward
entry_trigger = candles.high.iloc[j] + tick
j += 1
Esse comportamento "armed pendente" é diferente de tudo no engine atual mas é factível adicionar.
src/strategy/stormer_multi_ema.py que retorna
Signal(side="long", entry=close, stop=ema_below, target=entry+3R)
no bar de touch (entra no close, simplificação).strategies.py, flag no walk_forward.entry_trigger (não entry direto).Começar pela Fase 1 MVP: - Se passar WF em algum símbolo/TF, vale Fase 2 pra teste mais realista. - Se falhar em todos, Fase 2 não vai salvar (a entrada otimista geralmente FAVORECE backtest, não desfavorece).
| # | nome | mecânica | params | TFs | esforço | edge esperado |
|---|---|---|---|---|---|---|
| 1 | stormer_multi_ema_pullback (MVP) | 7 EMAs alinhadas + touch 2ª/3ª EMA + entry close + stop EMA inferior + target 3R | EMAs [20,25,30,35,40,45,50], target_R=3 |
1d, 4h | baixo (50 LOC) | wr ~40%, expectancy +0.6R |
| 2 | stormer_multi_ema + partial 2R | igual #1 + scale-out 50% no 2R | + partial=0.5 | 1d, 4h | trivial (já temos partial no engine) | ⚠ partial sofreu bias intra-bar antes — validar 15m |
| 3 | stormer_multi_ema FIEL (Fase 2) | + stop-buy entry condicional acima do high de touch | igual #1 mas entry diferente | 1d, 4h | médio (150 LOC engine) | provavelmente reduz n_trades e wr melhora |
| 4 | stormer_multi_ema + squeeze filter | só entra quando EMAs estão estreitas (próx do squeeze) | std EMAs/close < threshold | 1d | baixo | menos trades, magnitude maior |
Implementar Fase 1 + sweep WF em 7 símbolos × {1d, 4h}.
Strategies: [[../strategy/bollinger_breakout]] Regimes: [[../regimes/trending_up]]