Estrategia de cuadrícula de posición variable siguiendo tendencias

EMA RSI MACD ATR ADX
Fecha de creación: 2024-03-29 15:23:23 Última modificación: 2024-03-29 15:23:23
Copiar: 0 Número de Visitas: 1147
1
Seguir
1617
Seguidores

Estrategia de cuadrícula de posición variable siguiendo tendencias

Descripción general

La estrategia es una estrategia de trending que sigue una grilla de posiciones variables, que utiliza principalmente EMA, RSI y formas de absorción para determinar la dirección de la tendencia y el momento de entrada. La estrategia ajusta el stop loss y la posición de parada en función del tamaño de la entidad de absorción, mientras que permite al usuario elegir entre hacer solo más, hacer solo vacío o hacer mucho más vacío.

Principio de estrategia

La estrategia utiliza la línea EMA de 200 ciclos para determinar la dirección de la tendencia general, cuando el precio está en una tendencia ascendente cuando está por encima de la EMA y está en una tendencia descendente cuando está por debajo de la EMA. El RSI de 9 ciclos se utiliza para determinar la dinámica, el RSI mayor a 50 considera que la dinámica de los múltiples es fuerte, y el menor a 50 considera que la dinámica de los vacíos es fuerte.

La estrategia determina la posición de los paros y paradas en función del tamaño de la entidad de forma de absorción. La posición de parada es el doble de la de la entidad de absorción, mientras que el parador mínimo se establece en el 0,3% del precio de entrada para evitar que la distancia de parada sea demasiado pequeña para que se produzcan paradas frecuentes. La posición de parada es la amplitud de parada multiplicada por un coeficiente de ganancias y pérdidas preestablecido para asegurar que el coeficiente de ganancias y pérdidas se fije.

Ventajas estratégicas

  1. Seguimiento de tendencias: la estrategia utiliza varios indicadores para evaluar las tendencias, lo que ayuda a intervenir en las primeras etapas de la formación de las tendencias y capturar las tendencias.

  2. Paradas de pérdidas dinámicas: ajusta la posición de las paradas de pérdidas según el tamaño de la entidad de forma de absorción, aumenta el espacio de paradas cuando la tendencia es fuerte, reduce el rango de pérdidas cuando la tendencia es débil, controla el posicionamiento de manera flexible.

  3. El usuario puede personalizar la dirección de la operación, las preferencias de riesgo y otros parámetros para adaptarse a las diferentes necesidades del usuario.

  4. Ofrecer la opción MACD como condición de filtro de tendencia para confirmar aún más la fuerza de la tendencia y aumentar la ganancia de entrada.

Riesgo estratégico

  1. Error de juicio de tendencia: aunque la estrategia utiliza el juicio combinado de varios indicadores, en algunos casos puede haber errores de juicio de tendencia que causan pérdidas.

  2. Amplitud de contracción: Si el cuerpo de absorción es pequeño, la distancia entre el deterioro y la detención es muy cercana, lo que provoca un deterioro en la relación ganancia-pérdida, algo que es más común en situaciones de temblor.

  3. Optimización de parámetros: los parámetros óptimos pueden variar considerablemente según los diferentes estándares y períodos, lo que requiere una configuración y optimización continuas del usuario.

Dirección de optimización de la estrategia

  1. Determinación de tendencias: se puede intentar introducir más herramientas de confirmación de tendencias, como las bandas de Brin, el índice de dirección promedio (ADX), etc., para mejorar la precisión de la determinación de tendencias.

  2. Optimización de la parada de pérdidas: Considere la introducción de indicadores relacionados con la volatilidad, como el ATR, y ajuste dinámicamente la distancia de parada de pérdidas para reducir el riesgo de que sea demasiado pequeña.

  3. Administración de posiciones: ajuste dinámico del tamaño de las posiciones según la fuerza de la tendencia y la ganancia de la cuenta, etc. Aumente las posiciones cuando la tendencia es fuerte y la ganancia es estable, y reduzca los costos de las operaciones frecuentes.

  4. Sinergia multi-ciclo, multi-variedad: prueba de señales de tendencia entre ciclos y entre variedades, mejora la probabilidad de captura de tendencias, al tiempo que dispersa el riesgo de un solo ejemplar o ciclo.

Resumir

La estrategia de seguimiento de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la trayectoria de la tr

Código Fuente de la Estrategia
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © niosupetranmartinez
//@version=5
strategy("Trend Follower Scalping Strategy", overlay=true, process_orders_on_close = true)

// Inputs
emaLen = input(200, 'EMA Length')
rsiLen = input(9, 'RSI Length')
trendDirection = input.string("Both", 'Trend Direction', options=["Long Only", "Short Only", "Both"])
risk_reward_ratio = input(2, 'Risk Reward Ratio')
useMacdFilter = input.bool(true, "Use MACD Filter")
macdTimeframe = input("5", "MACD Timeframe")

// EMA and RSI
ema200 = ta.ema(close, emaLen)
customRsi = ta.rsi(close, rsiLen)

// MACD Filter
[macdLine, signalLine, _] = request.security(syminfo.tickerid, macdTimeframe, ta.macd(close, 12, 26, 9))


// Majority Body Candle Identification Function
isMajorityBodyCandle(candleOpen, candleClose, high, low) =>
    bodySize = math.abs(candleClose - candleOpen)
    fullSize = high - low
    bodySize / fullSize > 0.6

// Engulfing Patterns
isBullishEngulfing = close > open and close[1] < open[1] and (close - open) > (open[1] - close[1]) and isMajorityBodyCandle(open, close, high, low)
isBearishEngulfing = close < open and close[1] > open[1] and (open - close) > (close[1] - open[1]) and isMajorityBodyCandle(open, close, high, low)

// Entry Conditions with MACD Filter
longCondition = close > ema200 and customRsi > 50 and isBullishEngulfing and (not useMacdFilter or macdLine > signalLine)
shortCondition = close < ema200 and customRsi < 50 and isBearishEngulfing and (not useMacdFilter or macdLine < signalLine)

// Trade Execution
var float stopLossPrice = na
var float entryPrice = na

// Long Entry
if (longCondition and (trendDirection == "Long Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(close - open)
    minimumStopLoss = entryPrice * 0.997
    calculatedStopLoss = entryPrice - (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss < minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = entryPrice - stopLossPrice
    takeProfitPrice = entryPrice + (risk_reward_ratio * risk)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice)

// Short Entry
if (shortCondition and (trendDirection == "Short Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(open - close)
    minimumStopLoss = entryPrice * 1.003
    calculatedStopLoss = entryPrice + (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss > minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = stopLossPrice - entryPrice
    takeProfitPrice = entryPrice - (risk_reward_ratio * risk)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice)

// Plotting
plot(ema200, color=color.blue, linewidth=2, title="EMA 200")