
A estratégia de recuperação de equilíbrio de equilíbrio é uma estratégia que combina os indicadores técnicos e a forma do preço, fazendo várias manobras de tomada de posição em pontos de resistência de suporte. A estratégia usa indicadores de equilíbrio para identificar a direção da tendência do mercado, usando indicadores de forma baseados no valor máximo do preço para auxiliar na determinação de pontos de reversão, combinados com altos e baixos do período anterior para determinar as posições críticas de suporte e resistência, realizando operações reversíveis nesses pontos, pertence ao significado típico da estratégia de reversão.
A estratégia é baseada nos seguintes passos para determinar o momento da operação:
O indicador Alligator de três linhas medianas é usado para determinar a direção da tendência. Quando a linha de preço quebra as linhas laterais do indicador, é considerado um sinal de ruptura mais forte.
O indicador usa o padrão Peak-Trough para identificar o momento em que o preço se reverteu na região de sobrevenda. A ruptura do ponto máximo de uma determinada direção do Peak-Trough é considerada um possível sinal de reversão.
Combinando os pontos de suporte e resistência para determinar o ponto de entrada específico para a reversão. Fazer mais curto espaço quando o preço se aproxima do suporte ou da resistência anterior.
O uso do indicador de linha média da EMA ajuda a determinar a direção da tendência de longo prazo. Por exemplo, em situações de turbulência, a operação de curto prazo é dominada por uma inversão de salto alto e, em situações de tendência, é dominada por uma manobra de tendência.
O método de parada móvel é usado para controlar perdas individuais.
A estratégia tem as seguintes vantagens:
A combinação de vários sinais de indicadores aumenta a precisão do julgamento.
A utilização da resistência de suporte crítico para a reversão é uma operação de alta probabilidade.
O método de stop loss móvel permite limitar os perdas individuais.
A estratégia também apresenta os seguintes riscos:
A combinação de múltiplos indicadores sugere que a frequência de operação pode ser elevada e que é necessário prestar atenção ao controle de custos de transação.
O fracasso de um ponto crítico é o maior risco, e se o preço não se reverte perto do suporte ou resistência esperado, os prejuízos podem ser maiores.
Em situações de forte volatilidade, o stop-loss móvel pode ser ultrapassado, resultando em um aumento dos prejuízos.
A estratégia pode ser melhorada em vários aspectos:
Ajuste otimizado de pesos de múltiplos indicadores para encontrar a melhor combinação de parâmetros.
Aumentar os algoritmos de aprendizagem de máquina para auxiliar na determinação da taxa de sucesso dos pontos-chave.
Adicionar um indicador de volume de transações para evitar a cobertura de preços com forte flutuação, mas com volume insuficiente.
Otimizar o modelo de stop loss móvel, garantindo a eficácia do stop loss e, ao mesmo tempo, minimizando a probabilidade de stop loss desnecessário.
Em resumo, a estratégia de recuperação de equilíbrio de equilíbrio usando vários indicadores, como equilíbrio, forma de preço e resistência de suporte, é uma estratégia técnica típica. Ela tem a vantagem de ter alta precisão de julgamento e alta probabilidade de operação, mas também precisa ter em conta o risco de falhas de pontos-chave e quebrar o stop loss móvel.
/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vhurtadocos
//@version=5
strategy('Estrategia EMA Resistencia Soporte', shorttitle='Estrategia EMA RESISTENCIA Y SOPORTE', overlay=true, margin_long=100, margin_short=100, pyramiding = 10 )
//INICIO DE CONDICIONES BASICAS
/// Alligator
smma(src, length) =>
smma = 0.0
sma_1 = ta.sma(src, length)
smma := na(smma[1]) ? sma_1 : (smma[1] * (length - 1) + src) / length
smma
lipsLength = input(title='🐲 Lips Length', defval=5)
teethLength = input(title='🐲 Teeth Length', defval=8)
jawLength = input(title='🐲 Jaw Length', defval=13)
lipsOffset = input(title='🐲 Lips Offset', defval=3)
teethOffset = input(title='🐲 Teeth Offset', defval=5)
jawOffset = input(title='🐲 Jaw Offset', defval=8)
lips = smma(hl2, lipsLength)
teeth = smma(hl2, teethLength)
jaw = smma(hl2, jawLength)
// Fractals
n = input.int(title='📌 Period', defval=2, minval=2)
upFractal = high[n + 2] < high[n] and high[n + 1] < high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 3] < high[n] and high[n + 2] < high[n] and high[n + 1] == high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 4] < high[n] and high[n + 3] < high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 5] < high[n] and high[n + 4] < high[n] and high[n + 3] == high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 6] < high[n] and high[n + 5] < high[n] and high[n + 4] == high[n] and high[n + 3] <= high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n]
dnFractal = low[n + 2] > low[n] and low[n + 1] > low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 3] > low[n] and low[n + 2] > low[n] and low[n + 1] == low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 4] > low[n] and low[n + 3] > low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 5] > low[n] and low[n + 4] > low[n] and low[n + 3] == low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 6] > low[n] and low[n + 5] > low[n] and low[n + 4] == low[n] and low[n + 3] >= low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n]
plotshape(title='📌 Up-Fractal', series=upFractal, style=shape.triangleup, location=location.abovebar, offset=-2, color=color.new(color.olive, 0), text="R")
plotshape(title='📌 Down-Fractal', series=dnFractal, style=shape.triangledown, location=location.belowbar, offset=-2, color=color.new(color.maroon, 0), text="S", textcolor = color.new(color.maroon,0))
// Resistance, Support
showRS = input(title='⤒⤓ Show Res-Sup', defval=true)
lengthRS = input(title='⤒⤓ Res-Sup Length', defval=13)
highRS = ta.valuewhen(high >= ta.highest(high, lengthRS), high, 0)
lowRS = ta.valuewhen(low <= ta.lowest(low, lengthRS), low, 0)
plot(title='⤒ Resistance', series=showRS and highRS ? highRS : na, color=highRS != highRS[1] ? na : color.olive, linewidth=1, offset=0)
plot(title='⤓ Support', series=showRS and lowRS ? lowRS : na, color=lowRS != lowRS[1] ? na : color.maroon, linewidth=1, offset=0)
// EMA de 8 períodos
ema8 = ta.ema(close, 8)
plot(title='ema8', series=ema8, color=color.new(#dbef41, 0), offset=0)
// EMA de 21 períodos
ema21 = ta.ema(close, 21)
plot(title='ema21', series=ema21, color=color.new(#e12c0c, 0), offset=0)
// EMA de 50 períodos
ema50 = ta.ema(close, 50)
plot(title='ema50', series=ema50, color=color.new(#3419de, 0), offset=0)
// EMA de 200 períodos
ema200 = ta.ema(close, 200)
plot(title='ema200', series=ema200, color=color.new(#f6f6f4, 0), offset=0)
// Definiciones originales...
// ... (incluyendo tus definiciones de Alligator, Fractals, etc.)
// Guardamos el último soporte y resistencia
var float lastSupport = na
var float lastResistance = na
// Detectando un nuevo soporte y resistencia
newSupportDetected = low == lowRS
if newSupportDetected
lastSupport := low
// Lógica de entrada y salida
// Condiciones de entrada basadas en soportes recién formados
longCondition = low == lowRS
if longCondition
strategy.entry("Long", strategy.long)
// Salida (take profit) cuando detectamos una nueva resistencia después de entrar en una posición long
newResistanceDetected = high == highRS
if newResistanceDetected and strategy.position_size > 0
strategy.close("Long")
// Agregar una condición para el stop loss
longStopLossPrice = close * 0.95
if strategy.position_size > 0 and close <= longStopLossPrice
strategy.close("Long")
// Pintamos los soportes y resistencias
plotshape(longCondition, style=shape.triangledown, location=location.belowbar, color=color.red)
plotshape(newResistanceDetected, style=shape.triangleup, location=location.abovebar, color=color.green)
// Resto del código para plotear las EMAs y fractales
// ...