O recurso está a ser carregado... Carregamento...

Esta estratégia gera sinais de negociação baseados no fluxo de dinheiro de Chaikin (CMF)

Autora:ChaoZhang, Data: 2024-06-07 17:05:04
Tags:

CASHING CMF, EMA, SMA

Resumo

Esta estratégia gera sinais de negociação baseados no indicador de fluxo de dinheiro (CMF) Chaikin e na média móvel exponencial (EMA). Primeiro, calcula os valores do CMF para um período especificado, em seguida, usa dois EMAs com períodos diferentes para suavizar os dados do CMF. Um sinal de compra é gerado quando o EMA rápido cruza acima do EMA lento, enquanto um sinal de venda é gerado quando o EMA rápido cruza abaixo do EMA lento. A estratégia também define condições de stop-loss e take-profit para gerenciar o risco e bloquear os lucros.

Princípios de estratégia

  1. Calcule os valores de fluxo de dinheiro Chaikin (CMF) para um período especificado. CMF incorpora dados de preço e volume para medir a força do fluxo de dinheiro para dentro e para fora do mercado.
  2. Aplicar duas médias móveis exponenciais (EMA) com períodos diferentes para suavizar os dados do CMF. A EMA rápida capta tendências de curto prazo, enquanto a EMA lenta identifica tendências de longo prazo.
  3. Gerenciar um sinal de compra quando a EMA rápida cruza acima da EMA lenta e um sinal de venda quando a EMA rápida cruza abaixo da EMA lenta.
  4. Depois de um sinal de negociação ser gerado, a estratégia espera a confirmação de duas velas para evitar falsos sinais.
  5. Defina as condições de stop-loss e take-profit. O preço stop-loss é uma certa porcentagem do preço de entrada, enquanto o preço take-profit é uma certa porcentagem do preço de entrada.

Análise das vantagens

  1. Combina dados de preço e volume: O indicador CMF considera de forma abrangente os dados de preço e volume, proporcionando um reflexo mais fiável do fluxo de caixa do mercado e gerando sinais de negociação mais precisos.
  2. Rastreamento de tendências: Ao utilizar EMAs com diferentes períodos, a estratégia pode capturar tendências de curto e longo prazo, adaptando-se a vários ambientes de mercado.
  3. Confirmação do sinal: Depois de um sinal de negociação ser gerado, a estratégia aguarda a confirmação de duas velas, filtrando efetivamente alguns sinais falsos e melhorando a taxa de sucesso dos negócios.
  4. Gerenciamento de riscos: a estratégia incorpora condições de stop-loss e take-profit, que controlam efetivamente o risco de negociações individuais, garantindo os lucros obtidos.

Análise de riscos

  1. Optimização de parâmetros: o desempenho da estratégia depende da seleção de períodos CMF e EMA.
  2. Reconhecimento de tendências: Em mercados instáveis ou em pontos de virada da tendência, a estratégia pode gerar mais sinais falsos, levando a negociações frequentes e perdas de capital.
  3. Custos de deslizamento e negociação: a negociação frequente pode aumentar os custos de deslizamento e negociação, afetando a rentabilidade geral da estratégia.

Orientações de otimização

  1. Ajuste dinâmico dos parâmetros: ajuste dinâmico dos parâmetros dos períodos CMF e EMA com base nas alterações das condições de mercado para se adaptarem aos diferentes estados de mercado.
  2. Incorporar outros indicadores: combinar outros indicadores técnicos, como o índice de força relativa (RSI) e a faixa média verdadeira (ATR), para melhorar a precisão do reconhecimento de tendências e a fiabilidade dos sinais.
  3. Otimizar o stop-loss e o take-profit: ajustar dinamicamente as percentagens de stop-loss e take-profit com base na volatilidade do mercado e nas preferências de risco para gerir melhor o risco e garantir os lucros.
  4. Implementar dimensionamento de posições: ajustar dinamicamente os tamanhos das posições com base nas tendências do mercado e na força do sinal.

Resumo

Esta estratégia utiliza o indicador de fluxo de dinheiro Chaikin e as médias móveis exponenciais, combinando dados de preço e volume com foco primário no rastreamento de tendências. Também define condições de stop-loss e take-profit para gerenciar o risco. As vantagens da estratégia estão em sua capacidade de considerar de forma abrangente vários fatores e capturar tendências em diferentes escalas de tempo.


/*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)


Mais.