Fortgeschrittene WaveTrend- und EMA Ribbon Fusion-Handelsstrategie

WT EMA HLC3 SMA MA
Erstellungsdatum: 2025-01-06 15:21:57 zuletzt geändert: 2025-01-06 15:21:57
Kopie: 3 Klicks: 405
1
konzentrieren Sie sich auf
1617
Anhänger

Fortgeschrittene WaveTrend- und EMA Ribbon Fusion-Handelsstrategie

Überblick

Diese Strategie ist ein fortschrittliches Handelssystem, das den WaveTrend-Oszillator mit EMA-Gleitdurchschnittsbändern kombiniert. Durch die Integration dieser beiden technischen Indikatoren wird eine Handelsstrategie entwickelt, mit der Wendepunkte in Markttrends präzise erfasst werden können. Die Strategie übernimmt dynamische Stop-Profit- und Stop-Loss-Einstellungen und strebt höhere Renditen bei gleichzeitiger Wahrung der Kapitalsicherheit an.

Strategieprinzip

Der Kern der Strategie besteht darin, Handelssignale durch die Koordination des WaveTrend-Indikators und der acht gleitenden Durchschnitte der EMA zu identifizieren. Der WaveTrend-Indikator misst den überkauften oder überverkauften Zustand des Marktes, indem er die Abweichung zwischen dem Preis und dem gleitenden Durchschnitt berechnet. Das EMA-Gleitdurchschnittsband bestätigt die Trendrichtung durch Kreuzung gleitender Durchschnitte verschiedener Zeiträume. Speziell:

  1. Wenn EMA2 EMA8 kreuzt oder ein blaues Dreieckssignal erscheint (EMA2 kreuzt EMA3) und kein Blutrautenmuster vorhanden ist, wird ein langes Signal ausgelöst.
  2. Wenn EMA8 EMA2 kreuzt oder ein blutiges Rautenmuster erscheint, wird ein kurzes Signal ausgelöst.
  3. Die Stop-Loss-Einstellung verwendet den Extrempunkt nach dem vorherigen Rückwärtssignal, wodurch das Risiko effektiv kontrolliert werden kann.
  4. Das Gewinnziel wird auf das 2- bis 3-fache der Stop-Loss-Distanz festgelegt, was ein gutes Risiko-Rendite-Verhältnis widerspiegelt

Strategische Vorteile

  1. Doppelter Bestätigungsmechanismus verbessert die Zuverlässigkeit von Handelssignalen
  2. Dynamische Stop-Loss-Einstellungen können sich besser an Marktschwankungen anpassen
  3. Mit klarer Risiko-Rendite-Verhältnis-Einstellung
  4. Die Verwendung von EMA-Gleitenden Durchschnittsbändern hilft, den allgemeinen Markttrend zu bestimmen
  5. Der WaveTrend-Indikator kann überkaufte und überverkaufte Marktbedingungen effektiv identifizieren
  6. Die Strategielogik ist klar, leicht zu verstehen und umzusetzen

Strategisches Risiko

  1. In volatilen Märkten können häufig Fehlsignale auftreten
  2. Dynamischer Stop-Loss kann bei volatilen Schwankungen leicht ausgelöst werden
  3. Indikatoren, die auf historischen Daten beruhen, können bei drastischen Marktveränderungen versagen.
  4. Die Verwendung mehrerer technischer Indikatoren kann zu verzögerten Signalen führen Lösung:
  • Volatilitätsfilter können hinzugefügt werden, um falsche Signale in volatilen Märkten zu reduzieren
  • Erwägen Sie die Verwendung einer lockereren Stop-Loss-Einstellung
  • Mechanismus zur Bestätigung der Trendstärke hinzufügen

Richtung der Strategieoptimierung

  1. Einführung von Marktvolatilitätsindikatoren (wie ATR), um den Stop-Loss-Abstand dynamisch anzupassen
  2. Fügen Sie einen Lautstärkebestätigungsmechanismus hinzu, um die Signalzuverlässigkeit zu verbessern
  3. Erwägen Sie das Hinzufügen eines Trendstärkefilters, um nur in stark trendigen Märkten zu handeln
  4. Optimieren Sie die WaveTrend-Parameter, um sich besser an unterschiedliche Marktumgebungen anzupassen
  5. Untersuchen Sie die Synergie von Signalen in verschiedenen Zeiträumen

Zusammenfassen

Dies ist ein komplettes Handelssystem, das Trendfolge und Oszillatoren aus der technischen Analyse kombiniert. Durch die kombinierte Verwendung von WaveTrend- und EMA-Gleitdurchschnittsbändern können Sie nicht nur den allgemeinen Trend erfassen, sondern auch rechtzeitig am Wendepunkt des Trends in den Markt einsteigen. Der dynamische Stop-Profit- und Stop-Loss-Verwaltungsmechanismus verleiht der Strategie gute Möglichkeiten zur Risikokontrolle. Der Optimierungsspielraum der Strategie liegt vor allem in der Verbesserung der Signalfilterung und des Risikomanagements.

Strategiequellcode
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("VuManChu Cipher A Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.fixed, default_qty_value=1.0)

// === 函数定义 ===
// WaveTrend函数
f_wavetrend(_src, _chlen, _avg, _malen) =>
    _esa = ta.ema(_src, _chlen)
    _de = ta.ema(math.abs(_src - _esa), _chlen)
    _ci = (_src - _esa) / (0.015 * _de)
    _tci = ta.ema(_ci, _avg)
    _wt1 = _tci
    _wt2 = ta.sma(_wt1, _malen)
    [_wt1, _wt2]

// EMA Ribbon函数
f_emaRibbon(_src, _e1, _e2, _e3, _e4, _e5, _e6, _e7, _e8) =>
    _ema1 = ta.ema(_src, _e1)
    _ema2 = ta.ema(_src, _e2)
    _ema3 = ta.ema(_src, _e3)
    _ema4 = ta.ema(_src, _e4)
    _ema5 = ta.ema(_src, _e5)
    _ema6 = ta.ema(_src, _e6)
    _ema7 = ta.ema(_src, _e7)
    _ema8 = ta.ema(_src, _e8)
    [_ema1, _ema2, _ema3, _ema4, _ema5, _ema6, _ema7, _ema8]

// === 变量声明 ===
var float stopPrice = na      // 止损价格变量
var float targetPrice = na    // 止盈价格变量
var float lastLongPrice = na
var float lastShortPrice = na
var float highestSinceLastLong = na
var float lowestSinceLastShort = na

// === WaveTrend参数 ===
wtChannelLen = input.int(9, title = 'WT Channel Length')
wtAverageLen = input.int(13, title = 'WT Average Length')
wtMASource = hlc3
wtMALen = input.int(3, title = 'WT MA Length')

// === EMA Ribbon参数 ===
ema1Len = input.int(5, "EMA 1 Length")
ema2Len = input.int(11, "EMA 2 Length")
ema3Len = input.int(15, "EMA 3 Length")
ema4Len = input.int(18, "EMA 4 Length")
ema5Len = input.int(21, "EMA 5 Length")
ema6Len = input.int(24, "EMA 6 Length")
ema7Len = input.int(28, "EMA 7 Length")
ema8Len = input.int(34, "EMA 8 Length")

// === 计算指标 ===
// WaveTrend计算
[wt1, wt2] = f_wavetrend(wtMASource, wtChannelLen, wtAverageLen, wtMALen)

// WaveTrend交叉条件
wtCross = ta.cross(wt1, wt2)
wtCrossDown = wt2 - wt1 >= 0

// EMA Ribbon计算
[ema1, ema2, ema3, ema4, ema5, ema6, ema7, ema8] = f_emaRibbon(close, ema1Len, ema2Len, ema3Len, ema4Len, ema5Len, ema6Len, ema7Len, ema8Len)

// === 交易信号 ===
longEma = ta.crossover(ema2, ema8)
shortEma = ta.crossover(ema8, ema2)
redCross = ta.crossunder(ema1, ema2)
blueTriangle = ta.crossover(ema2, ema3)
redDiamond = wtCross and wtCrossDown
bloodDiamond = redDiamond and redCross

// 更新最高最低价
if not na(lastLongPrice)
    highestSinceLastLong := math.max(high, nz(highestSinceLastLong))
if not na(lastShortPrice)
    lowestSinceLastShort := math.min(low, nz(lowestSinceLastShort))

// === 交易信号条件 ===
longCondition = longEma or (blueTriangle and not bloodDiamond)
shortCondition = shortEma or bloodDiamond

// === 执行交易 ===
if (longCondition)
    // 记录多头入场价格
    lastLongPrice := close
    // 重置最高价跟踪
    highestSinceLastLong := high
    
    stopPrice := nz(lowestSinceLastShort, close * 0.98)  // 使用前一个空头信号后的最低价作为止损
    float riskAmount = math.abs(close - stopPrice)
    targetPrice := close + (riskAmount * 2)  // 止盈为止损距离的2倍
    
    strategy.entry("做多", strategy.long)
    strategy.exit("多头止盈止损", "做多", limit=targetPrice, stop=stopPrice)

if (shortCondition)
    // 记录空头入场价格
    lastShortPrice := close
    // 重置最低价跟踪
    lowestSinceLastShort := low
    
    stopPrice := nz(highestSinceLastLong, close * 1.02)  // 使用前一个多头信号后的最高价作为止损
    float riskAmount = math.abs(stopPrice - close)
    targetPrice := close - (riskAmount * 3)  // 止盈为止损距离的2倍
    
    strategy.entry("做空", strategy.short)
    strategy.exit("空头止盈止损", "做空", limit=targetPrice, stop=stopPrice)

// === 绘制信号 ===
plotshape(longCondition, style=shape.triangleup, color=color.green, location=location.belowbar, size=size.small, title="做多信号")
plotshape(shortCondition, style=shape.triangledown, color=color.red, location=location.abovebar, size=size.small, title="做空信号")

// 绘制止损线
plot(strategy.position_size > 0 ? stopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="多头止损线")
plot(strategy.position_size < 0 ? stopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="空头止损线")

// 绘制止盈线
plot(strategy.position_size > 0 ? targetPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="多头止盈线")
plot(strategy.position_size < 0 ? targetPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="空头止盈线")