Com base na estratégia do indicador Chaikin Money Flow (CMF)


Data de criação: 2024-06-07 17:05:04 última modificação: 2024-06-07 17:05:04
cópia: 0 Cliques: 625
1
focar em
1617
Seguidores

Com base na estratégia do indicador Chaikin Money Flow (CMF) CASHISKING | CASHISKING CMF, EMA, SMA

Visão geral

A estratégia gera um sinal de negociação com base no indicador de fluxo de capital de Chaikin (CMF) e na média móvel do índice (EMA). Primeiro, calcula-se o valor do CMF no período especificado e, em seguida, os EMAs de dois períodos diferentes são usados para suavizar os dados do CMF. Quando o EMA rápido gera um sinal de compra quando cruza o EMA lento, o contrário gera um sinal de venda.

Princípio da estratégia

  1. Para calcular o valor do fluxo de capital de Chaikin (CMF) em um período de tempo determinado, o indicador CMF combina dados de preços e volumes de transação para medir a intensidade de entrada e saída de capital.
  2. O EMA utiliza duas médias móveis indexadas de diferentes períodos para o tratamento suave dos dados do CMF. O EMA rápido é usado para capturar tendências de curto prazo e o EMA lento é usado para determinar tendências de longo prazo.
  3. Quando a EMA rápida cruza acima da EMA lenta, gera um sinal de compra; quando a EMA rápida cruza abaixo da EMA lenta, gera um sinal de venda.
  4. A estratégia espera a confirmação das duas linhas K após a geração do sinal de transação para evitar falsos sinais.
  5. Configure as condições de stop loss e stop loss, com o preço de stop loss sendo uma determinada porcentagem do preço de abertura e o preço de stop loss sendo uma determinada porcentagem do preço de abertura.

Análise de vantagens

  1. Combinação de dados de preços e volumes de transação: A síntese do indicador CMF considera os dados de preços e volumes de transação, o que permite refletir de forma mais abrangente os fluxos de capital do mercado e fornecer sinais de negociação mais confiáveis.
  2. Seguimento de tendências: Usando EMAs de diferentes períodos, a estratégia pode capturar tendências de curto e longo prazo simultaneamente, adaptando-se a diferentes condições de mercado.
  3. Confirmação de sinais: após a geração de sinais de negociação, a estratégia aguarda a confirmação de duas linhas K, efetivamente filtrando alguns sinais falsos e aumentando a taxa de sucesso da negociação.
  4. Controle de risco: configuração de condições de stop loss e stop-loss para controlar efetivamente o risco de uma única transação, ao mesmo tempo em que bloqueia os lucros obtidos.

Análise de Riscos

  1. Optimização de parâmetros: O desempenho da estratégia depende da escolha do ciclo do CMF e do EMA. Diferentes ambientes de mercado podem exigir diferentes configurações de parâmetros, portanto, a otimização de parâmetros é necessária periodicamente.
  2. Identificação de tendências: Em mercados de turbulência ou pontos de mudança de tendência, a estratégia pode produzir mais falsos sinais, resultando em transações frequentes e perda de capital.
  3. Pontos de deslizamento e custos de transação: transações frequentes podem aumentar os pontos de deslizamento e os custos de transação, afetando o lucro geral da estratégia.

Direção de otimização

  1. Parâmetros de ajuste dinâmico: De acordo com a mudança do ambiente de mercado, ajuste dinâmico dos parâmetros de ciclo do CMF e do EMA para se adaptar a diferentes condições de mercado.
  2. Introdução de outros indicadores: em combinação com outros indicadores técnicos, como o índice de força relativa (RSI) e a amplitude real média (ATR), para melhorar a precisão da identificação de tendências e a confiabilidade do sinal.
  3. Optimizar o Stop Loss e o Stop Out: Ajustar dinamicamente a porcentagem de Stop Loss e Stop Out de acordo com a volatilidade do mercado e as preferências de risco para melhor controlar o risco e bloquear os lucros.
  4. Adere ao gerenciamento de posições: ajuste dinamicamente o tamanho das posições de acordo com as tendências do mercado e a intensidade dos sinais, aumentando as posições quando as tendências são claras e diminuindo as posições em caso de incerteza.

Resumir

A estratégia utiliza o indicador de fluxo de capital da Chaikin e a média móvel do índice, combinando dados de preços e volume de transações, com o acompanhamento de tendências como principal idéia, além de definir condições de parada e parada para controlar o risco. A vantagem da estratégia reside na capacidade de considerar fatores multifacetados e capturar tendências em diferentes escalas de tempo, mas ainda há espaço para otimização na configuração de parâmetros e identificação de tendências.

Código-fonte da estratégia
/*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)