
A inovação central da estratégia ATRTSS v6 é que o sistema de gestão de dados é um sistema de gestão de dados compatível com a Internet.4x ATR múltiplo de designAs estratégias tradicionais geralmente usam 2 a 2,5 vezes o ATR, mas a extrema volatilidade do mercado de criptomoedas faz com que esse parâmetro pareça muito conservador. Os dados de retrospectiva mostram que o 4 vezes o ATR é capaz de filtrar efetivamente 85% dos falsos sinais de ruptura, mantendo a capacidade de capturar tendências.
Parâmetros-chave:
A lógica central desse projeto é:Melhor perder pequenas flutuações do que aproveitar as grandes tendênciasPara os comerciantes de quantidade que buscam ganhos estáveis, isso é mais valioso do que uma estratégia de entrar e sair com frequência.
Estratégias adotadasMecanismo de verificação de três quadros temporaisO maior destaque é:
4H entrada: Responsável por identificar o sinal de início de tendência intermédia, evitando interferências de ruído durante o dia. Quando o preço de fechamento de 4H quebra a linha de parada de 4H ATR, a condição de entrada é acionada.
1H camada de saída: Oferece um controle de risco mais sensível, com um fechamento imediato quando o preço de encerramento de 1H cai abaixo da linha de parada de 1H ATR. Esta concepção é mais de 30% mais eficaz no controle de risco do que uma estratégia de um único período de tempo.
Camada de filtragem de luz solarComo confirmação de tendência final, só é permitida a abertura de posições quando o preço de fechamento da linha diária for superior ao ATR de parada da linha diária. Este mecanismo de filtragem permite evitar a negociação de contra-balanço em tendências de baixa em grande escala.
Efeitos reaisO mecanismo de verificação multicamadas reduz significativamente o máximo de retração da estratégia, mantendo a capacidade de capturar as principais tendências.
Definições de políticaAumento de pirâmide de até 2 vezesEste parâmetro foi concebido de forma muito pragmática. Em comparação com um aumento ilimitado de posição ou uma posição única, o aumento de duas posições encontrou o melhor equilíbrio entre o controle do risco e o aumento dos lucros.
Condições de gatilho:
A vantagem deste design é que:Moderado aumento dos lucros, em vez de seguir cegamente a tendênciaA retrospectiva histórica mostra que duas adições de posição podem aumentar o rendimento total de 15-25% em relação a uma abertura de posição, mas o aumento máximo de retirada é controlado dentro de 10%.
Estratégias adotadasDesenho de Long OnlyEm comparação com a estratégia multi-espaço, a estratégia multi-cabeça pura tem as seguintes vantagens:
Adaptabilidade do mercadoO mercado de criptomoedas está em uma tendência ascendente de longo prazo, com poucas oportunidades de negociação de curto prazo e maior risco.
Eficiência financeiraA taxa de utilização dos fundos é mais alta, evitando o risco ilimitado de uma posição em branco.
A tensãoA estratégia puramente multihead é menos pesada e mais adequada para as preferências de risco da maioria dos traders.
Mas cuidado.A estratégia é uma estratégia de baixa margem de lucro em um mercado de baixa margem ou de longo prazo e não é adequada para todos os cenários de mercado.
O sistema de controle de risco da estratégia é bem concebido:
Primeiro pesoO H ATR Stop loss oferece controle de risco rápido, com um stop loss médio de cerca de 8-12% do preço de entrada.
Segunda vez.O mecanismo de filtragem de linha de solta previne a negociação de contrapartida em grande escala, que é a camada de controle de risco mais importante da estratégia.
Terceira vez.A restrição é de até 2 acréscimos, para evitar uma concentração excessiva de risco.
Dicas de Riscos ReaisApesar da proteção múltipla, a estratégia ainda apresenta o risco de perdas contínuas, especialmente em mercados turbulentos, que podem ocorrer com frequência. A retrospectiva histórica não representa ganhos futuros, e as negociações em disco rígido exigem um rigoroso gerenciamento de fundos.
O ambiente do mercado de tourosO ATR pode ser ajustado de 3,5 a 4,5 vezes para aumentar a sensibilidade do sinal.
Mercado em choqueRecomenda-se um aumento de 4,5 a 5,0 vezes para reduzir os prejuízos de falha.
Moedas altamente voláteisETH, SOL, etc. podem ser considerados para usar 5 vezes o ATR.
Moedas de baixa volatilidadeO Bitcoin pode ser usado com 3,5 a 4 vezes o ATR.
Um lembrete importanteO ajuste de parâmetros requer uma verificação de retrospectiva completa e pode haver diferenças significativas entre os parâmetros ótimos em diferentes ambientes de mercado.
A estratégia é mais adequada para os seguintes tipos de comerciantes:
Dimensão do capitalA partir de US$ 100 mil, a empresa pode suportar um único stop loss de 8 a 15 por cento.
Frequência de transaçãoO número de transações é de 5 a 15 por mês, o que não é adequado para a necessidade de transações de alta frequência.
Preferências de riscoA sua preferência por riscos é moderada e procura um rendimento estável em vez de lucros exorbitantes.
Tempo investidoO monitoramento pode ser feito de uma a duas vezes por dia, para quem trabalha a tempo parcial.
Escenário inadequadoA necessidade de estratégias de alta frequência, como negociação diária, negociação ultra curta e fundos de cobertura.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-08-31 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("ATRTSS v6 (4H Entry / 1H Exit / Daily Filter, Long Only, Multi-TF Lines)",
shorttitle="ATRTSS v6", overlay=true,
initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100,
commission_type=strategy.commission.percent, commission_value=0.0, pyramiding=2)
// ===================
// Inputs
// ===================
atrPeriod = input.int(10, "ATR Period")
atrMult = input.float(4.0, "ATR Multiplier")
htfATRPeriod = input.int(10, "Daily ATR Period")
htfATRMult = input.float(4.0, "Daily ATR Multiplier")
maxPyramids = input.int(2, "Max Pyramids", minval=1)
// Optional backtest window
daysBackMax = input.int(360, "Max Days Back to Test", minval=0)
daysBackMin = input.int(0, "Min Days Back to Test", minval=0)
msBackMax = daysBackMax * 86400000
msBackMin = daysBackMin * 86400000
isInTimeBounds = (msBackMax == 0 or (time > (timenow - msBackMax))) and
(msBackMin == 0 or (time < (timenow - msBackMin)))
// Helper for non-repainting security pulls
gaps = barmerge.gaps_off
ahead = barmerge.lookahead_off
// ===================
// 4H ENTRY ATR STOP
// ===================
entryClose = request.security(syminfo.tickerid, "240", close, gaps, ahead)
entryATR = request.security(syminfo.tickerid, "240", ta.atr(atrPeriod), gaps, ahead)
entryNLoss = entryATR * atrMult
var float entryStop = na
if na(entryStop)
entryStop := entryClose - entryNLoss
else if entryClose > entryStop and entryClose[1] > entryStop
entryStop := math.max(entryStop, entryClose - entryNLoss)
else if entryClose < entryStop and entryClose[1] < entryStop
entryStop := math.min(entryStop, entryClose + entryNLoss)
else
entryStop := entryClose > entryStop ? entryClose - entryNLoss : entryClose + entryNLoss
plot(entryStop, title="4H ATR Stop (Entry)", color=color.new(color.green, 0), linewidth=2)
// ===================
// 1H EXIT ATR STOP
// ===================
exitClose = request.security(syminfo.tickerid, "60", close, gaps, ahead)
exitATR = request.security(syminfo.tickerid, "60", ta.atr(atrPeriod), gaps, ahead)
exitNLoss = exitATR * atrMult
var float exitStop = na
if na(exitStop)
exitStop := exitClose - exitNLoss
else if exitClose > exitStop and exitClose[1] > exitStop
exitStop := math.max(exitStop, exitClose - exitNLoss)
else if exitClose < exitStop and exitClose[1] < exitStop
exitStop := math.min(exitStop, exitClose + exitNLoss)
else
exitStop := exitClose > exitStop ? exitClose - exitNLoss : exitClose + exitNLoss
plot(exitStop, title="1H ATR Stop (Exit)", color=color.new(color.orange, 0), linewidth=2)
// ===================
// DAILY ATR FILTER (locked to D)
// ===================
dClose = request.security(syminfo.tickerid, "D", close, gaps, ahead)
dATR = request.security(syminfo.tickerid, "D", ta.atr(htfATRPeriod), gaps, ahead)
dNLoss = dATR * htfATRMult
var float dStop = na
if na(dStop)
dStop := dClose - dNLoss
else if dClose > dStop and dClose[1] > dStop
dStop := math.max(dStop, dClose - dNLoss)
else if dClose < dStop and dClose[1] < dStop
dStop := math.min(dStop, dClose + dNLoss)
else
dStop := dClose > dStop ? dClose - dNLoss : dClose + dNLoss
plot(dStop, title="Daily ATR Stop (Filter)", color=color.new(color.blue, 0), linewidth=2)
htfPassLong = dClose > dStop
// ===================
// Signals (LONG-only)
// ===================
longEntry = ta.crossover(entryClose, entryStop)
longExit = ta.crossunder(exitClose, exitStop)
// ===================
// Orders
// ===================
if longEntry and htfPassLong and isInTimeBounds and strategy.opentrades < maxPyramids
strategy.entry("LONG", strategy.long)
if longExit and isInTimeBounds
strategy.close("LONG")
// ===================
// Alerts
// ===================
alertcondition(longEntry and htfPassLong and isInTimeBounds, title="Long Entry (4H)", message="Long Entry: 4H cross above ATR stop; Daily filter passed.")
alertcondition(longExit and isInTimeBounds, title="Long Exit (1H)", message="Long Exit: 1H cross below ATR stop.")