Seguimiento de múltiples tendencias y estrategias de ruptura estructural

EMA RSI SL TP BOS
Fecha de creación: 2024-11-29 15:27:01 Última modificación: 2024-11-29 15:27:01
Copiar: 0 Número de Visitas: 415
1
Seguir
1617
Seguidores

Seguimiento de múltiples tendencias y estrategias de ruptura estructural

Descripción general

Se trata de una estrategia de negociación integral que combina múltiples medias, seguimiento de tendencias, rupturas estructurales y indicadores de movimiento. La estrategia determina las señales de negociación mediante el análisis de la dirección de la tendencia en varios períodos de tiempo, al tiempo que combina la estructura de los precios con la ruptura y la compra de devoluciones. La estrategia utiliza objetivos fijos de stop loss y ganancias para administrar el riesgo y mejorar la precisión de la negociación mediante mecanismos de verificación múltiple.

Principio de estrategia

La estrategia utiliza tres medias móviles de índices (EMA25, EMA50 y EMA200) para determinar la tendencia del mercado. Cuando el precio está por encima de EMA200 y EMA200 se inclina hacia arriba, se considera que está en una tendencia alcista; lo contrario se considera una tendencia descendente. Después de determinar la dirección de la tendencia, la estrategia busca oportunidades de reajuste del precio a EMA25 o EMA50.

Ventajas estratégicas

  1. El mecanismo de verificación múltiple mejora significativamente la fiabilidad de las transacciones
  2. Combinación de análisis de tendencias y dinámicas para reducir el riesgo de falsas rupturas
  3. Objetivos claros de pérdidas y ganancias ayudan a la gestión de las emociones
  4. La lógica de la estrategia es simple, clara, fácil de entender y ejecutar
  5. Aplicable a diferentes entornos de mercado y variedades de comercio

Riesgo estratégico

  1. Las múltiples condiciones pueden llevar a perder algunas oportunidades de negocio
  2. Los objetivos fijos de stop loss y profit pueden no ser adecuados para todos los entornos de mercado.
  3. Los paros pueden ser frecuentes en mercados muy volátiles.
  4. Necesidad de monitorear continuamente el mercado para asegurar la adecuación de los parámetros de la estrategia
  5. En el mercado horizontal puede haber más señales falsas

Dirección de optimización de la estrategia

  1. Introducción de métodos de cálculo de objetivos de pérdidas y ganancias adaptados
  2. Aumentar el análisis del volumen de transacciones como indicador de confirmación auxiliar
  3. Considerar la inclusión de un filtro de fluctuación en el mercado
  4. Selección de períodos de tiempo para optimizar el juicio de tendencias
  5. Aumentar la adaptabilidad de las estrategias en diferentes entornos de mercado

Resumir

Se trata de una estrategia de negociación integrada de diseño razonable que equilibra eficazmente las oportunidades de negociación y el control de riesgos mediante el uso combinado de múltiples indicadores técnicos. La ventaja central de la estrategia reside en su riguroso mecanismo de verificación múltiple, que ayuda a aumentar la tasa de éxito de las operaciones. Aunque hay algunos lugares que necesitan ser optimizados, en general, es un marco estratégico que vale la pena probar.

Código Fuente de la Estrategia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Custom Buy/Sell Strategy", overlay=true)

// Input parameters
ema25 = ta.ema(close, 25)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
rsi = ta.rsi(close, 14)
sl_pips = 10
tp_pips = 15

// Convert pips to price units
sl_price_units = sl_pips * syminfo.pointvalue
tp_price_units = tp_pips * syminfo.pointvalue

// Define conditions for buy and sell signals
uptrend_condition = ema200 < close and ta.rising(ema200, 1)
downtrend_condition = ema200 > close and ta.falling(ema200, 1)

pullback_to_ema25 = low <= ema25
pullback_to_ema50 = low <= ema50
pullback_condition = pullback_to_ema25 or pullback_to_ema50

break_of_structure = high > ta.highest(high, 5)[1]
candle_imbalance = close > open

buy_condition = uptrend_condition and pullback_condition and rsi > 50 and break_of_structure and candle_imbalance

pullback_to_ema25_sell = high >= ema25
pullback_to_ema50_sell = high >= ema50
pullback_condition_sell = pullback_to_ema25_sell or pullback_to_ema50_sell

break_of_structure_sell = low < ta.lowest(low, 5)[1]
candle_imbalance_sell = close < open

sell_condition = downtrend_condition and pullback_condition_sell and rsi < 50 and break_of_structure_sell and candle_imbalance_sell

// Plot signals on the chart
plotshape(series=buy_condition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.large)
plotshape(series=sell_condition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.large)

// Calculate stop loss and take profit levels for buy signals
var float buy_sl = na
var float buy_tp = na

if buy_condition and strategy.position_size == 0
    buy_sl := close - sl_price_units
    buy_tp := close + tp_price_units
    strategy.entry("Buy", strategy.long)
    strategy.exit("TP/SL Buy", from_entry="Buy", limit=buy_tp, stop=buy_sl)
    label.new(bar_index, high, text="Entry: " + str.tostring(close) + "\nSL: " + str.tostring(buy_sl) + "\nTP: " + str.tostring(buy_tp), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

// Calculate stop loss and take profit levels for sell signals
var float sell_sl = na
var float sell_tp = na

if sell_condition and strategy.position_size == 0
    sell_sl := close + sl_price_units
    sell_tp := close - tp_price_units
    strategy.entry("Sell", strategy.short)
    strategy.exit("TP/SL Sell", from_entry="Sell", limit=sell_tp, stop=sell_sl)
    label.new(bar_index, low, text="Entry: " + str.tostring(close) + "\nSL: " + str.tostring(sell_sl) + "\nTP: " + str.tostring(sell_tp), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)

// // Plot stop loss and take profit levels for buy signals
// if not na(buy_sl)
//     line.new(x1=bar_index, y1=buy_sl, x2=bar_index + 1, y2=buy_sl, color=color.red, width=1)
// if not na(buy_tp)
//     line.new(x1=bar_index, y1=buy_tp, x2=bar_index + 1, y2=buy_tp, color=color.green, width=1)

// // Plot stop loss and take profit levels for sell signals
// if not na(sell_sl)
//     line.new(x1=bar_index, y1=sell_sl, x2=bar_index + 1, y2=sell_sl, color=color.red, width=1)
// if not na(sell_tp)
//     line.new(x1=bar_index, y1=sell_tp, x2=bar_index + 1, y2=sell_tp, color=color.green, width=1)