Basado en la estrategia del indicador Chaikin Money Flow (CMF)


Fecha de creación: 2024-06-07 17:05:04 Última modificación: 2024-06-07 17:05:04
Copiar: 0 Número de Visitas: 625
1
Seguir
1617
Seguidores

Basado en la estrategia del indicador Chaikin Money Flow (CMF) CASHISKING | CASHISKING CMF, EMA, SMA

Descripción general

La estrategia se basa en el indicador de flujo de capital de Chaikin (CMF) y el promedio móvil del índice (EMA) para generar señales de negociación. Primero se calcula el valor del CMF en el período especificado, y luego se usan dos EMA de diferentes períodos para suavizar los datos del CMF. Cuando el EMA rápido genera una señal de compra cuando cruza por encima del EMA lento, lo que genera una señal de venta. La estrategia también establece condiciones de stop loss y stop loss para controlar el riesgo y bloquear las ganancias.

Principio de estrategia

  1. Calcula el valor del flujo de capital de Chaikin (CMF) en un período determinado. El indicador CMF combina datos de precios y volúmenes de transacciones para medir la intensidad de los flujos de capital entrantes y salientes.
  2. Los datos del CMF se suavizan con el uso de dos promedios móviles indexados de diferentes períodos (EMA), el EMA rápido se utiliza para capturar tendencias a corto plazo y el EMA lento para determinar tendencias a largo plazo.
  3. Cuando el EMA rápido cruza por encima del EMA lento, genera una señal de compra; cuando el EMA rápido cruza por debajo del EMA lento, genera una señal de venta.
  4. Después de generar una señal de transacción, la estrategia espera la confirmación de las dos líneas K para evitar falsas señales.
  5. Establezca las condiciones de stop loss y stop stop, donde el precio de stop loss es un determinado porcentaje del precio de apertura de la posición, y el precio de stop stop es un determinado porcentaje del precio de apertura de la posición.

Análisis de las ventajas

  1. Combinación de datos de precios y volúmenes de transacción: El conjunto de indicadores CMF considera los datos de precios y volúmenes de transacción, lo que permite una reflexión más completa de los flujos de capital en el mercado y proporciona una señal de negociación más confiable.
  2. Seguimiento de tendencias: Al usar EMAs de diferentes períodos, la estrategia puede capturar tendencias a corto y largo plazo al mismo tiempo y adaptarse a diferentes entornos de mercado.
  3. Confirmación de la señal: después de generar la señal de negociación, la estrategia espera la confirmación de las dos líneas K, filtrando efectivamente algunas señales falsas y aumentando la tasa de éxito de la operación.
  4. Control de riesgos: Establece condiciones de stop loss y stop-loss que permiten controlar eficazmente el riesgo de una sola transacción, mientras se bloquean los beneficios obtenidos.

Análisis de riesgos

  1. Optimización de parámetros: el rendimiento de la estrategia depende de la elección de los ciclos de CMF y EMA. Diferentes entornos de mercado pueden requerir diferentes configuraciones de parámetros, por lo que se requiere una optimización de parámetros periódica.
  2. Identificación de tendencias: en mercados convulsos o en puntos de cambio de tendencia, la estrategia puede generar más señales falsas, lo que lleva a operaciones frecuentes y pérdidas de fondos.
  3. Puntos de deslizamiento y costos de transacción: las transacciones frecuentes pueden aumentar los puntos de deslizamiento y los costos de transacción, lo que afecta a los beneficios generales de la estrategia.

Dirección de optimización

  1. Parámetros de ajuste dinámico: los parámetros de ciclo de CMF y EMA se ajustan dinámicamente según los cambios en el entorno del mercado para adaptarse a diferentes estados del mercado.
  2. Introducción de otros indicadores: en combinación con otros indicadores técnicos, como el índice de fuerza relativa (RSI) y el rango real medio (ATR), para mejorar la precisión de la identificación de tendencias y la fiabilidad de la señal.
  3. Optimización de las paradas y paradas: ajuste dinámicamente el porcentaje de paradas y paradas en función de la volatilidad del mercado y las preferencias de riesgo para controlar mejor el riesgo y bloquear las ganancias.
  4. Incorporar gestión de posiciones: ajustar dinámicamente el tamaño de las posiciones en función de las tendencias del mercado y la intensidad de las señales, aumentando las posiciones cuando las tendencias son claras y reduciendo las posiciones en caso de incertidumbre

Resumir

La estrategia utiliza el indicador de flujo de fondos de Chaikin y el promedio móvil del índice, combinado con datos de precios y volumen de transacciones, con el seguimiento de tendencias como idea principal, al tiempo que establece condiciones de stop loss y stop loss para controlar el riesgo. La ventaja de la estrategia reside en la capacidad de considerar múltiples factores de manera integral y capturar tendencias en diferentes escalas de tiempo, pero todavía hay espacio para la optimización en la configuración de parámetros y la identificación de tendencias.

Código Fuente de la Estrategia
/*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)