
Esta estrategia utiliza una combinación de promedios móviles, patrones de precios y volúmenes de transacciones para identificar los puntos de inflexión del mercado. La estrategia hace más cuando se cruza una media móvil lenta en una media móvil rápida y se produce una forma de absorción múltiple, se rompe el nivel de resistencia y se aumenta el volumen de transacciones. Por el contrario, la estrategia hace vacío cuando se cruza una media móvil lenta por debajo de la media móvil rápida y se produce una forma de absorción vacía, se cae por debajo del soporte y se aumenta el volumen de transacciones.
La idea central de esta estrategia es utilizar la combinación de un sistema de línea de equilibrio, una forma de precio y un triángulo de potencia para identificar un potencial punto de reversión. En concreto, el cruce de oro y el cruce de muerte en la línea de equilibrio pueden determinar la conversión de la tendencia.
Desde el punto de vista de la lógica del código, primero se calculan las medias móviles rápidas y las medias móviles lentas. Luego se establecen las condiciones de juicio para la absorción múltiple y la absorción en blanco. Al mismo tiempo, se establecen las condiciones de soporte para el nivel de resistencia y el aumento del volumen de transacción.
La mayor ventaja de esta estrategia es que utiliza una combinación de varias señales para identificar reversiones, lo que reduce efectivamente las falsas señales. En concreto, es fácil generar señales de negociación erróneas basándose solo en una sola línea media, forma de precio o cantidad. Sin embargo, si las tres señales aparecen al mismo tiempo, la tasa de éxito de la predicción de reversión aumenta considerablemente.
Además, esta estrategia utiliza tanto la tendencia como la reversión. La tendencia debe existir antes de que aparezca una señal de reversión. Es decir, esta estrategia solo busca oportunidades de reversión en el contexto de la tendencia.
El mayor riesgo de esta estrategia es el fracaso de la reversión, es decir, que el precio continúe bajando después de emitir varias señales; o que el precio continúe subiendo después de emitir una señal de falta. Esto generalmente se debe a un error de juicio, y la señal de reversión es solo una falsa apariencia, o solo un ajuste a corto plazo, y luego continúa la tendencia original.
La solución consiste en ajustar el parámetro de la línea media para identificar tendencias de ciclos más largos; al mismo tiempo, aumentar adecuadamente el margen de parada de pérdidas, para detener los pérdidas a tiempo después de que la reversión falle. Además, también se puede combinar más factores para confirmar la reversión, como la forma de los precios de los ciclos más largos.
Esta estrategia se puede optimizar en los siguientes aspectos:
Ajuste los parámetros de la línea media para identificar períodos más apropiados.
Prueba diferentes algoritmos de soporte de resistor, como el soporte de resistor de Pareto.
Prueba diferentes indicadores de volumen de transacciones, como el índice de fluctuación de la energía, el índice de fluctuación del volumen de transacciones, etc.
Aumentar las señales de cambio de tendencia, como la evolución de los precios a largo plazo, el aumento drástico de las transacciones, etc.
Combinado con el índice de acciones para la confirmación de mercado, el índice de acciones para confirmar la inversión de acciones individuales.
La estrategia se puede optimizar aún más al probar diferentes combinaciones de parámetros, lo que aumenta la rentabilidad y la probabilidad de ganar.
Esta estrategia integra los tres factores para identificar reversiones: el sistema de línea media, la forma de los precios y el volumen de las transacciones, lo que permite una combinación eficaz de múltiples señales. Busca oportunidades de reversión solo en el contexto de la tendencia y evita el comercio aleatorio.
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Profit Table Strategy", overlay=true)
// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(20, title="Slow MA Length")
takeProfitPercent = input(1, title="Take Profit (%)") / 100
stopLossPercent = input(1, title="Stop Loss (%)") / 100
trailingStopPercent = input(1, title="Trailing Stop (%)") / 100
// Price action conditions
bullishEngulfing = close > open and close > open[1] and open < close[1] and open[1] > close[1]
bearishEngulfing = close < open and close < open[1] and open > close[1] and open[1] < close[1]
// Support and resistance levels
supportLevel = input(100, title="Support Level")
resistanceLevel = input(200, title="Resistance Level")
// Volume conditions
volumeCondition = volume > ta.sma(volume, 20)
// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// Buy condition
buyCondition = (fastMA > slowMA) and (close > resistanceLevel) and bullishEngulfing and volumeCondition
// Sell condition
sellCondition = (fastMA < slowMA) and (close < supportLevel) and bearishEngulfing and volumeCondition
// Strategy logic
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition)
// Calculate take profit, stop loss, and trailing stop levels
takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent)
trailingStopLevel = strategy.position_avg_price * (1 - trailingStopPercent)
// Plotting levels on the chart
plot(supportLevel, color=color.blue, style=plot.style_line, linewidth=2, title="Support Level")
plot(resistanceLevel, color=color.purple, style=plot.style_line, linewidth=2, title="Resistance Level")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit Level")
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss Level")
plot(trailingStopLevel, color=color.orange, style=plot.style_line, linewidth=2, title="Trailing Stop Level")
// Plotting buy and sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)