
O sistema de negociação de reversão de tendência de força de preço interno é uma estratégia de negociação em nível de linha do dia baseada no indicador de força de preço interno (IBS). O núcleo da estratégia consiste em identificar potenciais pontos de reversão de mercado e julgar o estado de sobrevenda e sobrevenda do mercado, monitorando a posição relativa do preço de encerramento da linha de venda anterior dentro de sua faixa de alta e baixa. A estratégia é especialmente adequada para negociação de ações e índices americanos, com parâmetros padrão otimizados para índices principais como SPY/SPX e NDQ/QQ.
O núcleo da estratégia está no cálculo e aplicação do indicador de intensidade de preços internos (IBS). O indicador IBS é calculado através da seguinte fórmula:
IBS = (前一日收盘价 - 前一日最低价) / (前一日最高价 - 前一日最低价)
Os valores do IBS variam entre 0 e 1:
As regras de negociação da estratégia são as seguintes:
A partir de agora, você pode fazer várias inscrições:
A condição para fazer mais jogos:
Além disso, a estratégia também introduziu o parâmetro “percentual de distância mínima entre novas entradas” para garantir que as novas posições sejam abertas apenas quando o preço retroceder o suficiente, reduzindo efetivamente o risco de retorno e otimizando a gestão de fundos.
A precisão do tempo do mercado: o uso do indicador IBS pode capturar com precisão o estado de sobrecompra e sobrevenda do mercado, fornecendo uma base matemática objetiva para entradas e saídas, reduzindo o desvio causado pelo julgamento subjetivo.
Mecanismo de filtragem de tendências: Usando a EMA como um filtro de tendências, assegura-se que a direção da negociação esteja em consonância com a tendência principal, evitando efetivamente o risco de negociação de contrapartida. A estratégia pode ajustar o ciclo de EMA de acordo com diferentes características do mercado, ou desativar completamente esta condição.
Gerenciamento de posição flexível: a estratégia suporta o aumento de posição em forma de pirâmide (até 2 vezes) e introduziu o parâmetro “percentagem mínima de distância de entrada nova”, permitindo um mecanismo de construção de estoque de estoque mais inteligente, que reduz efetivamente o custo médio de manutenção de posição quando o preço retorna.
Controle automático de risco: a estratégia define o limite máximo de tempo de posse, e mesmo que o mercado não tenha acionado o sinal de saída normal, o posicionamento será automaticamente eliminado após o período de negociação máximo predefinido, controlando efetivamente o tempo de exposição ao risco de uma única transação.
Optimização de parâmetros: os parâmetros padrão foram otimizados para os principais índices de mercado, como SPY e QQQ/NDQ, e os usuários podem aplicar diretamente as configurações recomendadas:
Modos de negociação abrangentes: suporte a modalidades de negociação apenas a longo prazo, apenas a curto prazo ou de duas vias, adaptando-se a diferentes ambientes de mercado e estilos de negociação.
Sensibilidade de parâmetros: os valores de entrada e saída do IBS têm um grande impacto no desempenho da estratégia, e a configuração inadequada dos parâmetros pode levar a excessos de negociação ou a perda de oportunidades importantes. É recomendável fazer um bom retorno de dados históricos e otimização de parâmetros para variedades de negociação específicas antes da aplicação em campo.
Risco de mercado de choque: em mercados de choque sem uma tendência óbvia, os sinais de IBS podem ocorrer com frequência, resultando em excesso de negociação e aumento desnecessário de custos de negociação. A solução é adicionar condições de filtragem, como exigir a confirmação de vários sinais de IBS consecutivos ou em combinação com outros indicadores (como o ATR) para julgar a volatilidade do mercado.
Atraso de mudanças de tendência acentuada: Quando o mercado apresenta uma mudança de tendência rápida, o indicador IBS calculado com base nos dados do dia anterior pode reagir com atraso, resultando em uma entrada ou saída de tempo não ideal. Recomenda-se ajustar adequadamente o limiar IBS ou reduzir o tempo máximo de posse em períodos de alta volatilidade.
Risco de gestão de fundos: o uso padrão de 50% dos fundos da conta para negociar, pode levar a uma exposição excessiva ao risco em caso de várias adições. Recomenda-se que o usuário ajuste o tamanho da posição e os parâmetros de adição de acordo com a sua capacidade de assumir riscos.
Limitação de implementação técnica: a estratégia baseia-se na execução de transações no preço de fechamento, que pode enfrentar pontos de deslizamento e diferenças de preço na operação real. Para reduzir esse risco, pode-se considerar o pedido de um determinado período de tempo antes do fechamento ou o uso de uma lista de preço de limite em vez da lista de preço de mercado.
Ajuste de limiar dinâmico: a estratégia atual usa limiares de entrada e saída do IBS fixos, e pode considerar ajustar esses limiares com base na dinâmica da volatilidade do mercado. Por exemplo, aumentar adequadamente o limiar de entrada e reduzir o limiar de saída em períodos de alta volatilidade para reduzir os falsos sinais; configurações mais radicais podem ser adotadas em períodos de baixa volatilidade.
Confirmação de múltiplos períodos de tempo: introdução de uma estrutura de análise de múltiplos períodos de tempo, que exige a confirmação simultânea de sinais de IBS de curto e médio prazo para executar uma transação. Por exemplo, além do sinal de IBS de linha diária, também é possível calcular o valor de IBS de linha diária ou linha de 4 horas, apenas quando vários períodos de tempo mostram um estado de sobrecompra ou sobrevenda, o que aumenta significativamente a qualidade do sinal.
Mecanismos de parada inteligentes: as estratégias atuais dependem apenas dos sinais de saída do IBS e do controle de risco do tempo máximo de posse, podendo ser introduzidas mecanismos de parada mais inteligentes. Por exemplo, paradas dinâmicas baseadas no ATR, paradas de rastreamento ou paradas baseadas em pontos de apoio / resistência, para proteger melhor os lucros e controlar o risco de cada transação.
Adaptação do estado do mercado: introdução de mecanismos de identificação do estado do mercado, usando diferentes configurações de parâmetros em diferentes cenários de mercado (mercado de tendência, mercado de turbulência). Pode ser identificado o estado do mercado através do ADX (índice de direção média) ou outros indicadores de intensidade de tendência, relaxando as condições do IBS em um ambiente de forte tendência, adotando um limite mais rigoroso do IBS em mercados de turbulência.
Otimização de aprendizagem de máquina: Otimização e filtragem de sinais de IBS usando técnicas de aprendizagem de máquina. Identificar quais sinais de IBS são mais propensos a produzir negociações lucrativas por meio de modelos de treinamento e ajustar automaticamente os parâmetros de acordo com as características do mercado para obter o desempenho adaptativo da estratégia.
O sistema de negociação de reversão de tendência de força de preço interno é uma estratégia de negociação em nível de linha do sol que combina a força de preço interno (indicador IBS) e a média móvel do índice (EMA). Esta estratégia é especialmente adequada para ações e índices de negociação dos EUA, para otimizar as decisões de negociação por meio da identificação de potenciais pontos de reversão de mercado e de seguir tendências de longo prazo. O principal benefício está em seu modelo matemático objetivo, gerenciamento de posição flexível e mecanismo de controle de risco embutido.
A estratégia tem parâmetros otimizados para os principais índices de mercado, como SPY/SPX e NDQ/QQQ, e os usuários podem aplicar diretamente as configurações recomendadas para negociar. No entanto, qualquer estratégia de negociação apresenta riscos, incluindo sensibilidade a parâmetros, risco de mercado de turbulência e atraso em mudanças bruscas de tendências.
As futuras direções de otimização incluem o ajuste dinâmico de barreiras, a confirmação de múltiplos ciclos de tempo, o mecanismo de parada inteligente, a auto-adaptação do estado do mercado e a otimização da aprendizagem de máquina. Essas melhorias podem aumentar ainda mais a adaptabilidade e a robustez da estratégia, permitindo que ela mantenha um bom desempenho em diferentes ambientes de mercado.
Como uma estratégia de negociação quantitativa, o sistema de negociação de inversão de tendência de intensidade de preço interno oferece aos comerciantes uma forma de negociação objetiva e baseada em regras, reduzindo a influência dos fatores emocionais nas decisões de negociação e ajudando a alcançar resultados de negociação mais consistentes e previsíveis.
/*backtest
start: 2024-03-05 00:00:00
end: 2025-03-03 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//Implementation by AlgoTradeKit
//v.0.5
//The IBS Trading Strategy is a daily bars long-only trading system, based on the concept of Internal Bar Strength (IBS).
//The strategy aims to identify potential reversals by monitoring how the previous bar’s close positions itself within its high-low range.
//It is suitable for stock and US indices. The default parameters are optimized for SPY/SPX and NDQ/QQQ
//Setting for QQQ: 0.09, 0.985, 220, 0, 14
//Setting for SPY: 0.11, 0.995, 200, 0, 12
//@version=6
strategy("IBS (Internal Bar Strength) Trading Strategy for SPY and NDQ", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, pyramiding = 2, currency = currency.USD, process_orders_on_close=false)
// ***** INPUTS *****
// IBS thresholds
ibsEntryThreshold = input.float(0.09, title="IBS Entry Threshold", step=0.01, tooltip="IBS = (Previous Close - Previous Low) / (Previous High - Previous Low), and IBS value below 0.2 is typically interpreted as an oversold condition, while a value above 0.9 suggests an overbought state.")
ibsExitThreshold = input.float(0.985, title="IBS Exit Threshold", step=0.01, tooltip="IBS = (Previous Close - Previous Low) / (Previous High - Previous Low), and IBS value below 0.2 is typically interpreted as an oversold condition, while a value above 0.9 suggests an overbought state.")
// EMA period (set to 0 to disable the EMA condition)
emaPeriod = input.int(220, title="EMA Period (0 to disable)", minval=0, maxval=5000, step=1, tooltip="Exponential Moving Average Filter Period (0 to disable)")
// Minimum percentage drop required for a new entry (for dollar-cost averaging)
minEntryPct = input.float(0, title="Minimum Distance for New Entry (%)", step=0.05, minval=0.0, maxval=100, tooltip = "Distance in Price from Last Opened Position, in Percentage Terms (%)")
maxTradeDuration = input.int(title="Maximum Trade Duration (days)", defval=14, minval=1, step=1, maxval=1000, tooltip = "Exit at close if maximum trade duration is reached.")
// Persistent variable to record the bar index when the trade is entered.
var int entryBarIndex = na
// ***** EMA CALCULATION *****
// Calculate the EMA globally if the period is greater than 0, otherwise leave as na.
emaValue = emaPeriod > 0 ? ta.ema(close, emaPeriod) : na
// ***** IBS CALCULATION *****
// Calculate IBS using the previous bar’s values.
// Guard against division by zero: if previous high equals previous low, default IBS to 0.5.
prevHigh = high[1]
prevLow = low[1]
prevClose = close[1]
ibs = (prevHigh != prevLow) ? (prevClose - prevLow) / (prevHigh - prevLow) : 0.5
// ***** ENTRY AND EXIT CONDITIONS *****
// Define the EMA condition: if emaPeriod is 0, bypass the EMA check.
emaConditionLong = emaPeriod == 0 or (close > emaValue)
emaConditionShort = emaPeriod == 0 or (close < emaValue)
// Entry: IBS is below the entry threshold and the EMA condition holds.
enterLong = (ibs < ibsEntryThreshold) and emaConditionLong
enterShort = (ibs > ibsExitThreshold) and emaConditionShort
// Exit: IBS is above the exit threshold.
exitLong = ibs > ibsExitThreshold
exitShort = ibs < ibsEntryThreshold
// ***** DOLLAR-COST AVERAGING CONDITION IN PERCENTAGE *****
// Track the last entry price. Reset when there is no open position.
var float lastEntryPrice = na
if strategy.position_size == 0
lastEntryPrice := na
// If there is no previous entry, the condition is met.
// Otherwise, allow a new entry only if the current price is lower than the last entry price
// by at least the predefined percentage (converted to a fraction).
dcaCondition = na(lastEntryPrice) or ((close < lastEntryPrice) and (((lastEntryPrice - close) / lastEntryPrice) >= (minEntryPct / 100)))
dcaConditionShort = na(lastEntryPrice) or ((close > lastEntryPrice) and (((close - lastEntryPrice) / lastEntryPrice) >= (minEntryPct / 100)))
// ***** STRATEGY ORDERS *****
// Enter a long position only if both the entry condition and the DCA condition are met.
if enterLong and dcaCondition
strategy.entry("Long", strategy.long)
lastEntryPrice := close // update the last entry price
entryBarIndex := bar_index
if enterShort and dcaConditionShort
strategy.entry("Short", strategy.short)
lastEntryPrice := close // update the last entry price
entryBarIndex := bar_index
// Compute trade duration in days using the absolute difference
tradeDuration = not na(entryBarIndex) ? math.abs(bar_index - entryBarIndex) : 0
// Exit the long position when the exit condition is met or if the trade duration reaches maxTradeDuration days.
if exitLong or (tradeDuration >= maxTradeDuration)
strategy.close("Long")
// Exit the long position when the exit condition is met or if the trade duration reaches maxTradeDuration days.
if exitShort or (tradeDuration >= maxTradeDuration)
strategy.close("Short")
// ***** PLOTTING *****
// Plot IBS for reference, along with horizontal lines for the entry and exit thresholds.
//plot(ibs, title="IBS", color=color.blue, linewidth=2)
//hline(ibsEntryThreshold, title="IBS Entry Threshold", color=color.green)
//hline(ibsExitThreshold, title="IBS Exit Threshold", color=color.red)