
A estratégia é um sistema de negociação inteligente que combina o clássico cruzamento de equilíbrio e a identificação de forma de linha K na análise técnica. A estratégia capta com precisão os pontos de inflexão da tendência do mercado através da análise da relação entre a linha K e a entidade, combinada com o sinal de cruzamento de equilíbrio binário. O sistema não apenas observa a movimentação dos preços, mas também ajusta dinamicamente os parâmetros de negociação, aumentando a adequação da estratégia, calculando a amplitude média das ondas.
A lógica central da estratégia é dividida em duas partes principais:
O módulo de reconhecimento de forma de linha K identifica um potencial sinal de inversão calculando a relação proporcional entre a linha de sombra de cima para baixo e a entidade. O sistema define um parâmetro de múltiplo de linha de sombra ajustável (wickMultiplier) e um parâmetro de porcentagem de corpo (bodyPercentage) para otimizar a qualidade do sinal. Quando a linha K apresenta uma linha de sombra de cima ou de baixo que cumpre as condições, o sistema emite um sinal de fazer mais ou fazer vazio.
O sistema de duplo equilíbrio cruzado usa uma média móvel simples de 14 e 28 períodos (SMA) como indicador de tendência. Quando a média de curto prazo atravessa a média de longo prazo para cima, o sistema gera um sinal de duplo equilíbrio; Quando a média de curto prazo atravessa a média de longo prazo para baixo, o sistema gera um sinal de duplo equilíbrio.
A estratégia, através da combinação de reconhecimento de forma de linha K e sistema de cruzamento de linha uniforme, constrói um quadro de decisão de negociação relativamente completo. A vantagem da estratégia reside no seu rigoroso mecanismo de filtragem de sinais e capacidade de ajuste de parâmetros flexíveis, mas também requer atenção à otimização de parâmetros e à adaptabilidade ao ambiente de mercado.
/*backtest
start: 2024-10-28 00:00:00
end: 2024-11-27 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5 indicator("Wick Reversal Setup", overlay=true)
// Input parameters
wickMultiplier = input.float(3.5, title="Wick Multiplier", minval=0.5, maxval=20)
bodyPercentage = input.float(0.25, title="Body Percentage", minval=0.1, maxval=1.0)
// Calculate the average range over 50 periods
avgRange = ta.sma(high - low, 50)
// Define the lengths of wicks and bodies
bodyLength = math.abs(close - open)
upperWickLength = high - math.max(close, open)
lowerWickLength = math.min(close, open) - low
totalRange = high - low
// Long signal conditions
longSignal = (close > open and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or
(close < open and lowerWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or
(close == open and close != high and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or
(open == high and close == high and totalRange >= avgRange)
// Short signal conditions
shortSignal = (close < open and (high - open) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or
(close > open and (high - close) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or
(close == open and close != low and lowerWickLength >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or
(open == low and close == low and totalRange >= avgRange)
// Plot signals
plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Long")
plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Short")
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Sahaj_Beriwal
//@version=5
strategy("My strategy", overlay=true, margin_long=100, margin_short=100)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
if (longCondition)
strategy.entry("L", strategy.long)
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if (shortCondition)
strategy.entry("S", strategy.short)