En la carga de los recursos... Cargando...

Esta estrategia genera señales comerciales basadas en el flujo de dinero de Chaikin (CMF)

El autor:¿ Qué pasa?, Fecha: 2024-06-07 17:05:04
Las etiquetas:

El dinero en efectivo Se trata de los siguientes tipos de riesgo:

Resumen general

Esta estrategia genera señales comerciales basadas en el indicador de flujo de dinero (CMF) de Chaikin y promedios móviles exponenciales (EMA). Primero calcula los valores de CMF para un período especificado, luego utiliza dos EMA con períodos diferentes para suavizar los datos de CMF. Una señal de compra se genera cuando la EMA rápida cruza por encima de la EMA lenta, mientras que una señal de venta se genera cuando la EMA rápida cruza por debajo de la EMA lenta. La estrategia también establece condiciones de stop-loss y take-profit para gestionar el riesgo y bloquear las ganancias.

Principios de estrategia

  1. Calcular los valores del flujo de dinero de Chaikin (CMF) para un período especificado. CMF incorpora datos de precio y volumen para medir la fuerza del flujo de dinero dentro y fuera del mercado.
  2. Aplicar dos promedios móviles exponenciales (EMA) con períodos diferentes para suavizar los datos del CMF. La EMA rápida captura tendencias a corto plazo, mientras que la EMA lenta identifica tendencias a largo plazo.
  3. Generar una señal de compra cuando la EMA rápida cruza por encima de la EMA lenta, y una señal de venta cuando la EMA rápida cruza por debajo de la EMA lenta.
  4. Después de que se genera una señal comercial, la estrategia espera la confirmación de dos velas para evitar señales falsas.
  5. Establecer condiciones de stop-loss y take-profit. El precio de stop-loss es un cierto porcentaje del precio de entrada, mientras que el precio de take-profit es un cierto porcentaje del precio de entrada.

Análisis de ventajas

  1. Combina datos de precios y volumen: El indicador CMF considera de manera exhaustiva los datos de precios y volumen, proporcionando un reflejo más fiable del flujo de dinero del mercado y generando señales comerciales más precisas.
  2. Seguimiento de tendencias: al utilizar EMA con diferentes períodos, la estrategia puede capturar tendencias a corto y largo plazo, adaptándose a varios entornos de mercado.
  3. Confirmación de señal: Después de que se genera una señal de negociación, la estrategia espera la confirmación de dos velas, filtrando efectivamente algunas señales falsas y mejorando la tasa de éxito de las operaciones.
  4. Gestión del riesgo: la estrategia incorpora condiciones de stop-loss y take-profit, lo que controla eficazmente el riesgo de las operaciones individuales al tiempo que garantiza las ganancias obtenidas.

Análisis de riesgos

  1. Optimización de parámetros: el rendimiento de la estrategia depende de la selección de los períodos CMF y EMA.
  2. Reconocimiento de tendencias: en mercados inestables o en puntos de inflexión de tendencias, la estrategia puede generar más señales falsas, lo que conduce a operaciones frecuentes y pérdidas de capital.
  3. Costos de deslizamiento y operaciones: Las operaciones frecuentes pueden aumentar los costes de deslizamiento y operaciones, lo que afecta a la rentabilidad general de la estrategia.

Direcciones de optimización

  1. Ajuste dinámico de parámetros: ajuste dinámico de los parámetros del período CMF y del período EMA basados en los cambios en las condiciones del mercado para adaptarse a diferentes estados del mercado.
  2. Incorporar otros indicadores: Combinar otros indicadores técnicos, como el índice de fuerza relativa (RSI) y el rango verdadero promedio (ATR), para mejorar la precisión del reconocimiento de tendencias y la fiabilidad de las señales.
  3. Optimizar el stop-loss y el take-profit: ajustar dinámicamente los porcentajes de stop-loss y take-profit en función de la volatilidad del mercado y las preferencias de riesgo para gestionar mejor el riesgo y fijar las ganancias.
  4. Implementar el tamaño de las posiciones: ajustar dinámicamente los tamaños de las posiciones en función de las tendencias del mercado y la fuerza de la señal.

Resumen de las actividades

Esta estrategia utiliza el indicador de flujo de dinero Chaikin y promedios móviles exponenciales, combinando datos de precio y volumen con un enfoque principal en el seguimiento de tendencias. También establece condiciones de stop-loss y take-profit para gestionar el riesgo. Las ventajas de la estrategia se encuentran en su capacidad para considerar de manera integral múltiples factores y capturar tendencias en diferentes escalas de tiempo. Sin embargo, todavía hay espacio para la optimización en la configuración de parámetros y el reconocimiento de tendencias.


/*backtest
start: 2023-06-01 00:00:00
end: 2024-06-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("CASHISKING", overlay=false)

// Kullanıcı girişleri ile parametreler
cmfPeriod = input.int(200, "CMF Periyodu", minval=1)
emaFastPeriod = input.int(80, "Hızlı EMA Periyodu", minval=1)
emaSlowPeriod = input.int(160, "Yavaş EMA Periyodu", minval=1)
stopLossPercent = input.float(3, "Stop Loss Yüzdesi", minval=0.1) / 100
stopGainPercent = input.float(5, "Stop Gain Yüzdesi", minval=0.1) / 100

// CMF hesaplama fonksiyonu
cmfFunc(close, high, low, volume, length) =>
    clv = ((close - low) - (high - close)) / (high - low)
    valid = not na(clv) and not na(volume) and (high != low)
    clv_volume = valid ? clv * volume : na
    sum_clv_volume = ta.sma(clv_volume, length)
    sum_volume = ta.sma(volume, length)
    cmf = sum_volume != 0 ? sum_clv_volume / sum_volume : na
    cmf

// CMF değerlerini hesaplama
cmf = cmfFunc(close, high, low, volume, cmfPeriod)

// EMA hesaplamaları
emaFast = ta.ema(cmf, emaFastPeriod)
emaSlow = ta.ema(cmf, emaSlowPeriod)

// Göstergeleri çiz
plot(emaFast, color=color.blue, title="EMA 23")
plot(emaSlow, color=color.orange, title="EMA 50")

// Alım ve Satım Sinyalleri
crossOverHappened = ta.crossover(emaFast, emaSlow)
crossUnderHappened = ta.crossunder(emaFast, emaSlow)

// Kesişme sonrası bekleme sayacı
var int crossOverCount = na
var int crossUnderCount = na

if (crossOverHappened)
    crossOverCount := 0

if (crossUnderHappened)
    crossUnderCount := 0

if (not na(crossOverCount))
    crossOverCount += 1

if (not na(crossUnderCount))
    crossUnderCount += 1

// Alım ve Satım işlemleri
if (crossOverCount == 2)
    strategy.entry("Buy", strategy.long)
    crossOverCount := na  // Sayaç sıfırlanır

if (crossUnderCount == 2)
    strategy.entry("Sell", strategy.short)
    crossUnderCount := na  // Sayaç sıfırlanır

// Stop Loss ve Stop Gain hesaplama
longStopPrice = strategy.position_avg_price * (1 - stopLossPercent)
shortStopPrice = strategy.position_avg_price * (1 + stopLossPercent)
longTakeProfitPrice = strategy.position_avg_price * (1 + stopGainPercent)
shortTakeProfitPrice = strategy.position_avg_price * (1 - stopGainPercent)

// Stop Loss ve Stop Gain'i uygula
if (strategy.position_size > 0 and strategy.position_avg_price > 0)
    strategy.exit("Stop", "Buy", stop=longStopPrice, limit=longTakeProfitPrice)
else if (strategy.position_size < 0 and strategy.position_avg_price > 0)
    strategy.exit("Stop", "Sell", stop=shortStopPrice, limit=shortTakeProfitPrice)


Más.