
La estrategia utiliza una señal de forma de precio de ruptura de resistencia y un mecanismo de control de riesgo de ruptura de la espiral. Se construye más posiciones después de la ruptura de la resistencia y se vacía las posiciones después de la ruptura de la posición de soporte. Al mismo tiempo, se establece la ruptura de la espiral y la ruptura de la espiral, para controlar eficazmente el riesgo.
La estrategia se basa principalmente en los siguientes puntos:
Utilice la línea media para determinar la dirección de la tendencia. En la estrategia, establezca una línea media rápida y lenta. Una línea lenta en la línea rápida representa un aumento en la línea larga y una línea baja representa una disminución en la línea larga.
Cuando el precio sube más allá de los máximos recientes, se considera una señal de ruptura de la resistencia y se hace una entrada adicional.
Se considera una señal de ruptura de soporte cuando el precio baja y se rompe un mínimo reciente. Se considera una señal de ruptura de soporte cuando el precio baja y se rompe un mínimo reciente.
Establezca un stop loss circular. Establezca una línea de stop loss después de la entrada y realice un funcionamiento de precios alrededor de la línea de stop loss ajustándose a las fluctuaciones de precios.
El stop loss y el stop exit. El stop loss y el stop exit controlan el riesgo de manera efectiva, mientras que el stop stop y el stop exit bloquean los beneficios.
En concreto, la estrategia utiliza el promedio de precios altos y bajos como fuente de precios para calcular la dirección de la tendencia de los EMAs rápidos y lentos. Haga más cuando la línea rápida atraviesa la línea lenta y aparece una señal de ruptura de resistencia, y deje de lado cuando la línea rápida atraviesa la línea lenta y aparece una señal de ruptura de soporte.
La estrategia tiene las siguientes ventajas:
Estabilidad de ganancias. Operaciones de seguimiento de tendencias para obtener ganancias en tendencias de líneas largas a nivel de índices.
El riesgo está bien controlado. La configuración de los circuitos de detención de pérdidas y de la parada de pérdidas, puede detener la pérdida y la salida a tiempo.
La señal es precisa. El punto de resistencia se rompe y el punto de soporte se rompe. La señal es precisa y confiable.
Sencilla y fácil de usar. Las reglas de los indicadores y señales son simples y claras, y la configuración de los parámetros no es compleja.
Adaptación al mercado. Puede operar en diferentes variedades y en cualquier condición de mercado.
La estrategia también tiene algunos riesgos a tener en cuenta:
Riesgo de fracaso de la ruptura. Después de la ruptura del soporte de resistencia, puede haber reajustes y reensayos, lo que provoca pérdidas.
Riesgo de optimización de parámetros. La configuración incorrecta de los parámetros puede causar una señal frecuente o insuficiente. El proceso de optimización debe ser prudente.
Riesgo de fallo de los indicadores. En circunstancias especiales, los indicadores EMA pueden fallar o retrasarse.
Riesgo de reversión de la tendencia. El riesgo de pérdidas puede aumentar cuando se produce una desviación de la dirección del mercado.
Estos riesgos pueden ser controlados y mitigados en gran medida mediante la optimización de los parámetros, la tolerancia adecuada y el seguimiento estricto de las señales.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimización del ciclo de tiempo. Ajuste los parámetros del ciclo de tiempo para calcular la línea media y la forma de los precios, buscando la combinación óptima.
Optimización de la adaptabilidad de las variedades. Ajuste la configuración de los parámetros según las características de las diferentes variedades.
Optimización de las estrategias de detención de pérdidas. Aplicación de métodos de detención más estables y precisos, como detención móvil, detención de vibración, etc.
Optimización de la estrategia de stop-loss. Establezca un stop-loss móvil o un stop-loss indexado para aumentar las ganancias.
Aumentar las condiciones de filtración. Añadir las condiciones de filtración como volumen de transacciones, volatilidad y excluir falsas brechas.
Aumentar la señal de entrada. Agregar más indicadores o formas como confirmación de la señal de entrada.
La estrategia en general funciona bien, la idea central es clara, tiene una gran estabilidad y capacidad de rentabilidad. El control de riesgos y la aplicación de indicadores también son adecuados, es una estrategia de clasificación de ruptura que vale la pena usar. La optimización posterior a través de parámetros y módulos puede perfeccionar la estrategia para adaptarse a más variedades y entornos de mercado complejos.
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 30m
basePeriod: 15m
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/
// © EduardoMattje
//@version=4
strategy("Reversal closing price", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)
src = input(hl2, "Price source")
order_direction = input("Both", "Order direction", options=["Both", "Long", "Short"])
// EMA calculation and plot
ema_long_period = input(80, "EMA long period")
ema_short_period = input(8, "EMA short period")
ema_long = ema(src, ema_long_period)
ema_short = ema(src, ema_short_period)
ema_bull = ema_short > ema_long
ema_bear = ema_short < ema_long
plot(ema_long, "EMA long", ema_bull ? color.green : color.red, 3)
plot(ema_short, "EMA short", ema_bull ? color.green : color.red, 3)
// Settings
risk_reward_ratio = input(2.0, "Risk to reward ratio", minval=1.0, step=0.1)
stop_lookback = input(3, "Stoploss candle lookback", minval=1)
ema_cross_stop = input(true, "Close if EMA crosses in oposite direction")
allow_retracing = input(true, "Allow price retracing")
// RCP calculation
rcp_bull = low[0] < low[1] and low[0] < low[2] and close[0] > close[1]
rcp_bear = high[0] > high[1] and high[0] > high[2] and close[0] < close[1]
// Order placement
in_market = strategy.position_size != 0
long_condition = rcp_bull and ema_bull and not in_market and order_direction != "Short"
short_condition = rcp_bear and ema_bear and not in_market and order_direction != "Long"
bought = strategy.position_size[0] > strategy.position_size[1] and strategy.position_size[1] == 0
sold = strategy.position_size[0] < strategy.position_size[1] and strategy.position_size[1] == 0
closed = not in_market and in_market[1]
long_position = strategy.position_size > 0
short_position = strategy.position_size < 0
buy_price = high + syminfo.mintick
sell_price = low - syminfo.mintick
if long_condition
strategy.entry("Long", true, stop=buy_price)
if short_condition
strategy.entry("Short", false, stop=sell_price)
if allow_retracing
better_price_long = barssince(closed) > barssince(long_condition) and barssince(long_condition) >= 1 and not in_market and ema_bull and buy_price < valuewhen(long_condition, buy_price, 0) and buy_price[0] < buy_price[1]
if better_price_long
strategy.cancel("Long")
strategy.entry("Long", true, stop=buy_price)
better_price_short = barssince(closed) > barssince(short_condition) and barssince(short_condition) >= 1 and not in_market and ema_bear and sell_price > valuewhen(short_condition, sell_price, 0) and sell_price[0] > sell_price[1]
if better_price_short
strategy.cancel("Short")
strategy.entry("Short", false, stop=sell_price)
// Stoploss orders
stop_price = long_position ? valuewhen(bought, lowest(stop_lookback)[1] - syminfo.mintick, 0) : short_position ? valuewhen(sold, highest(3)[1] + syminfo.mintick, 0) : na
stop_comment = "Stoploss triggered"
strategy.close("Long", low <= stop_price, stop_comment)
strategy.close("Short", high >= stop_price, stop_comment)
plot(stop_price, "Stop price", color.red, 2, plot.style_linebr)
// EMA cross close orders
if ema_cross_stop
if long_position and ema_bear
strategy.close("Long", comment=stop_comment)
if short_position and ema_bull
strategy.close("Short", comment=stop_comment)
// Take profit orders
stop_ticks = abs(strategy.position_avg_price - stop_price)
take_profit_price = long_position ? valuewhen(bought, strategy.position_avg_price + stop_ticks * risk_reward_ratio, 0) : short_position ? valuewhen(sold, strategy.position_avg_price - (stop_ticks * risk_reward_ratio), 0) : na
target_comment = "Take profit"
strategy.close("Long", high >= take_profit_price, target_comment)
strategy.close("Short", low <= take_profit_price, target_comment)
plot(take_profit_price, "Target price", color.green, 2, plot.style_linebr)