
O Value Break Tracking Stop Loss Strategy é um sistema de negociação quantitativa projetado especificamente para a negociação de ativos digitais, que capta o comportamento de ruptura do mercado, colocando um pendrive (“stop loss” para compra e “stop loss” para venda) em um ponto de extremo de preço local. A estratégia também implementa um mecanismo de tracking stop loss, iniciando um mecanismo de proteção para bloquear a receita, uma vez que a posição atinge um nível de ganho predeterminado.
A estratégia baseia-se nos princípios de comportamento de preços e gestão de risco dinâmico, e sua lógica central pode ser dividida nas seguintes partes-chave:
Identificação de extremos locaisA estratégia usa uma janela de tempo definida (o parâmetro BarsN) para calcular os pontos altos e baixos locais como pontos de potencial ruptura. Concretamente, usa uma linha K (BarsN * 2 + 1) para determinar os preços mais altos e mais baixos locais.
Configuração de lista de espera:
Filtro de tempoA estratégia permite que o comerciante defina um horário de negociação e negocie apenas dentro de um intervalo de horas especificado, o que ajuda a evitar períodos de negociação indesejáveis.
Calculação do nível de lucro e prejuízo:
Mecanismos de rastreamento de perda:
Ao analisar o código em profundidade, a estratégia mostra as seguintes vantagens significativas:
Captura automática de brechasA estratégia permite capturar automaticamente as rupturas de preços, sem a necessidade de monitorar manualmente o mercado, por meio da configuração de suspensões de preços em níveis críticos.
Gestão de Riscos DinâmicosA utilização de um sistema de stop-loss baseado na percentagem do preço atual permite uma maior flexibilidade na gestão de riscos e adapta-se a diferentes níveis de preços.
Mecanismo de proteção de lucrosA estratégia é capaz de bloquear efetivamente os lucros obtidos, reduzindo a retirada, enquanto mantém espaço para o aumento.
Função de filtragem de tempoPermitir que os traders escolham os melhores momentos de negociação de acordo com as características do mercado, evitando a negociação em períodos de baixa volatilidade ou imprevisíveis.
Altamente adaptávelOs parâmetros da estratégia podem ser ajustados de acordo com as condições do mercado, como ajustar a janela de cálculo dos extremos locais, a porcentagem de stop-loss, etc., para adaptá-los a diferentes ambientes de mercado.
Disciplina rígidaComo uma estratégia de automação, elimina a influência dos fatores emocionais nas decisões de negociação, executando as transações de acordo com regras predefinidas.
A estratégia, apesar de ter várias vantagens, também apresenta alguns riscos e limitações:
Risco de Falso BreakoutA solução é aumentar os indicadores de confirmação ou ajustar o tamanho do intervalo de pedidos para o tamanho do buffer, a fim de reduzir a probabilidade de ações falsas serem desencadeadas.
Sensibilidade do parâmetroO desempenho da estratégia é altamente dependente da configuração de parâmetros, como BarsN, TPasPctBTC e SLasPctBTC. Parâmetros inadequados podem levar a um mau desempenho. É recomendado encontrar a melhor combinação de parâmetros por meio de retrospecção.
Incompleta gestão de fundos: Embora o parâmetro RiskPercent seja definido no código, ele não é aplicado ao cálculo do tamanho da posição. Isso pode levar a uma má gestão do risco.
Capacidade de resposta limitada a situações extremasEm situações de alta volatilidade ou condições extremas de mercado, a simples ruptura de limites locais e a parada de percentual fixo podem não ser suficientes para gerenciar o risco de forma eficaz.
Ponto de deslizamento e atraso de execuçãoEm uma transação real, a execução de ordens pode sofrer deslizes ou atrasos, afetando a performance da estratégia.
Dependência do mercado únicoA estratégia é projetada para ativos específicos e pode não ser aplicada a outros ativos com características diferentes do mercado.
Com base na análise do código, a estratégia pode ser otimizada nas seguintes direções:
Gestão de posições dinâmicas: Implementar o cálculo do tamanho da posição dinâmica com base no parâmetro de RiscoPercent, ajustando o tamanho da posição de acordo com o tamanho da conta e o risco atual do mercado, para um controle de risco mais preciso.
Mecanismo de confirmação múltiplaIntrodução de indicadores técnicos adicionais para a confirmação de rupturas, como rupturas de volume de transação, indicadores de momentum ou indicadores de tendência, para reduzir as falsas rupturas de transação.
Parâmetros de adaptaçãoIntrodução de parâmetros que se ajustam automaticamente com base na volatilidade do mercado ou outras características do mercado, permitindo que a estratégia se adapte melhor a diferentes condições de mercado.
Estratégia de bloqueio de lotesA implementação de um mecanismo de parada por lotes, permitindo que algumas posições sejam retiradas em diferentes níveis de lucro, bloqueando parte dos lucros e mantendo um espaço de lucro maior.
Filtragem do estado do mercadoAumentar o estado do mercado (trend, oscilação, etc.), ajustar os parâmetros da estratégia ou parar de negociar em diferentes estados de mercado.
Optimização de Stop LossA implementação de um stop loss dinâmico baseado no ATR ou em outros indicadores de volatilidade torna o stop loss mais racional.
Quadro de avaliação e otimizaçãoDesenvolver uma estrutura de feedback mais abrangente, avaliar o desempenho da estratégia em diferentes períodos e com diferentes parâmetros, e encontrar o melhor conjunto de parâmetros.
O Value Break Tracking Stop Loss Strategy é um sistema de negociação automatizado de engenho concebido para gerenciar o risco através da captura de breakouts de extremos locais e da aplicação de tracking stop loss. Sua principal vantagem reside na execução automática, gestão de risco dinâmica e mecanismos de proteção de lucros, o que o torna uma ferramenta de negociação potencialmente eficaz.
No entanto, a eficácia da estratégia é altamente dependente da configuração de parâmetros e condições de mercado. A robustez e adaptabilidade da estratégia podem ser significativamente aumentadas pela implementação de medidas de otimização recomendadas, como gerenciamento de posição dinâmica, mecanismo de confirmação múltipla e parâmetros de adaptação.
Para os comerciantes, é recomendável fazer um bom feedback antes da aplicação no mercado real, encontrar o conjunto de parâmetros mais adequado para o ambiente de mercado atual e considerar a combinação com outras ferramentas de análise para confirmar os sinais de negociação. Ao mesmo tempo, monitorar e avaliar continuamente o desempenho da estratégia, ajustar os parâmetros em tempo hábil de acordo com as mudanças do mercado para manter a eficácia da estratégia.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-06 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("BTC Trading Robot", overlay=true, pyramiding=1, initial_capital=100000)
//============== Input Groups ==============//
// Trading Profile
group_trading = "BTC"
systemType = input.int(1, title="Trading System (1:BTC)", group=group_trading)
// Common Trading Inputs
group_common = "Trading Inputs"
RiskPercent = input.float(4.0, title="Risk as % of trading capital", group=group_common)
TradeComment = input.string("BTC trading robot", title="Trade Comment", group=group_common)
SHInput = input.int(0, title="Start Hour (0 = no filter)", group=group_common)
EHInput = input.int(0, title="End Hour (0 = no filter)", group=group_common)
// Gold Related Inputs
group_BTC = "BTC Related Input"
TPasPctBTC = input.float(0.2, title="TP as % of Price", group=group_BTC)
SLasPctBTC = input.float(0.1, title="SL as % of Price", group=group_BTC)
TSLasPctofTPBTC = input.float(5.0, title="Trail SL as % of TP", group=group_BTC)
TSLTgrasPctofTPBTC = input.float(7.0, title="Trail Tgra SL as % of TP", group=group_BTC)
// Other parameters
BarsN = 5
OrderDistPoints = 100.0
//============== Calculate Trade Parameters ==============//
var float Tppoints = 0.0
var float Slpoints = 0.0
var float TslTriggerPoints = 0.0
var float TslPoints = 0.0
price = close
// Adjust parameters based on system type (using 1 for Gold)
if systemType == 1
Tppoints := price * TPasPctBTC
Slpoints := price * SLasPctBTC
OrderDistPoints := Tppoints / 2.0
TslPoints := Tppoints * TSLTgrasPctofTPBTC / 100.0
TslTriggerPoints := Tppoints * TSLTgrasPctofTPBTC / 100.0
//============== Time Filter ==============//
currentHour = hour(time)
inSession = true
if SHInput != 0 and currentHour < SHInput
inSession := false
if EHInput != 0 and currentHour >= EHInput
inSession := false
//============== Find Local High and Low ==============//
localHigh = ta.highest(high, BarsN * 2 + 1)
localLow = ta.lowest(low, BarsN * 2 + 1)
//============== Entry Orders ==============//
if inSession and strategy.position_size == 0
// For a BuyStop order: only submit if current price is less than the desired entry level minus a buffer.
if price < localHigh - OrderDistPoints * syminfo.mintick
strategy.order("BuyStop", strategy.long, stop=localHigh, comment="BuyStop")
// For a SellStop order: only submit if current price is greater than the desired entry level plus a buffer.
if price > localLow + OrderDistPoints * syminfo.mintick
strategy.order("SellStop", strategy.short, stop=localLow, comment="SellStop")
//============== Trailing Stop Logic ==============//
if strategy.position_size > 0 // Long positions
longProfit = price - strategy.position_avg_price
if longProfit > TslTriggerPoints * syminfo.mintick
strategy.exit("Long Exit", from_entry="BuyStop", stop=price - TslPoints * syminfo.mintick, limit=strategy.position_avg_price + Tppoints * syminfo.mintick)
if strategy.position_size < 0 // Short positions
shortProfit = strategy.position_avg_price - price
if shortProfit > TslTriggerPoints * syminfo.mintick
strategy.exit("Short Exit", from_entry="SellStop", stop=price + TslPoints * syminfo.mintick, limit=strategy.position_avg_price - Tppoints * syminfo.mintick)