Basierend auf der Chaikin Money Flow (CMF) Indikatorstrategie


Erstellungsdatum: 2024-06-07 17:05:04 zuletzt geändert: 2024-06-07 17:05:04
Kopie: 0 Klicks: 625
1
konzentrieren Sie sich auf
1617
Anhänger

Basierend auf der Chaikin Money Flow (CMF) Indikatorstrategie CASHISKING | CASHISKING CMF, EMA, SMA

Überblick

Die Strategie basiert auf dem Chaikin Cashflow-Indikator (CMF) und dem Index-Moving Average (EMA), um ein Handelssignal zu erzeugen. Zuerst werden die CMF-Werte innerhalb des angegebenen Zeitraums berechnet, dann werden die CMF-Daten mit zwei unterschiedlichen Zeitraums-EMA ausgeglichen. Wenn ein schneller EMA ein Kaufsignal erzeugt, wenn er sich über einem langsameren EMA kreuzt, erzeugt dies ein Verkaufsignal. Die Strategie setzt auch Stop-Loss- und Stop-Stop-Bedingungen, um Risiken zu kontrollieren und Gewinne zu sperren.

Strategieprinzip

  1. Der CMF-Wert, der die Preise und Transaktionsvolumen kombiniert, wird verwendet, um die Intensität der Ein- und Ausflüsse zu messen.
  2. Indikatorische Moving Averages (EMA) mit zwei verschiedenen Perioden werden verwendet, um die CMF-Daten zu verarbeiten. Schnelle EMAs werden verwendet, um kurzfristige Trends zu erfassen, und langsame EMAs werden verwendet, um langfristige Trends zu bestimmen.
  3. Wenn ein schneller EMA oberhalb eines langsameren EMA kreuzt, erzeugt er ein Kaufsignal. Wenn ein schneller EMA unterhalb eines langsameren EMA kreuzt, erzeugt er ein Verkaufssignal.
  4. Die Strategie wartet auf die Bestätigung der beiden K-Linien, um ein falsches Signal zu vermeiden.
  5. Setzen Sie Stop-Loss- und Stop-Stop-Bedingungen, wobei der Stop-Loss-Preis ein bestimmter Prozentsatz des Eröffnungspreises ist und der Stop-Stop-Preis ein bestimmter Prozentsatz des Eröffnungspreises.

Analyse der Stärken

  1. Kombination von Preisen und Transaktionsvolumen: Die CMF-Index-Synthese berücksichtigt Preise und Transaktionsvolumen, wodurch die Marktkapitalflüsse umfassender reflektiert werden und ein zuverlässigeres Handelssignal bereitgestellt wird.
  2. Trend-Tracking: Durch die Verwendung von EMAs in verschiedenen Zyklen kann die Strategie sowohl kurzfristige als auch langfristige Trends erfassen und sich an unterschiedliche Marktbedingungen anpassen.
  3. Signalbestätigung: Nach der Erzeugung eines Handelssignals wartet die Strategie auf die Bestätigung der beiden K-Linien, um einige falsche Signale zu filtern und die Erfolgsrate des Handels zu erhöhen.
  4. Risikokontrolle: Die Einstellung von Stop-Loss- und Stop-Stop-Bedingungen ermöglicht eine effektive Kontrolle des Risikos eines einzelnen Handels und die Sperrung der erzielten Gewinne.

Risikoanalyse

  1. Parameter-Optimierung: Die Strategie ist abhängig von der Zyklus-Auswahl der CMF und EMA, die in verschiedenen Marktumgebungen möglicherweise unterschiedliche Parameter-Einstellungen benötigt, so dass regelmäßige Parameter-Optimierung erforderlich ist.
  2. Trenderkennung: In einem wackligen Markt oder an einem Trendwendepunkt kann die Strategie mehr Falschsignale erzeugen, was zu häufigen Transaktionen und Verlusten von Geldern führt.
  3. Schlupfpunkte und Transaktionskosten: Häufige Transaktionen können Schlupfpunkte und Transaktionskosten erhöhen und die Gesamtergebnisse der Strategie beeinträchtigen.

Optimierungsrichtung

  1. Dynamische Anpassung der Parameter: Die Periodiparameter von CMF und EMA werden dynamisch angepasst, um sie an veränderte Marktbedingungen anzupassen.
  2. Einführung von anderen Indikatoren: In Kombination mit anderen technischen Indikatoren, wie dem Relative Strength Index (RSI) und der Average True Rate (ATR), um die Genauigkeit der Trenderkennung und die Zuverlässigkeit der Signale zu verbessern.
  3. Optimierung von Stop-Loss- und Stop-Off-Prozessen: Anpassung der Stop-Loss- und Stop-Off-Prozentsätze dynamisch an die Marktvolatilität und die Risikopräferenz, um Risiken besser zu kontrollieren und Gewinne zu sichern.
  4. Positionsverwaltung: Positionsgröße wird dynamisch angepasst, je nach Markttrend und Signalstärke, erhöht bei klaren Trends und verringert bei Unsicherheiten.

Zusammenfassen

Die Strategie nutzt die Chaikin-Flussindikatoren und Index-Moving Averages, kombiniert mit Preis- und Transaktionsvolumen-Daten, um Trendverfolgung als Hauptidee zu nutzen und gleichzeitig Stop-Loss- und Stop-Stop-Bedingungen für die Risikokontrolle einzurichten. Der Vorteil der Strategie liegt in der Fähigkeit, verschiedene Faktoren zu berücksichtigen und Trends auf verschiedenen Zeitskalen zu erfassen.

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