Les ressources ont été chargées... Je charge...

La tendance avancée de la vague et la stratégie de négociation de la fusion sur ruban de l'EMA

Auteur:ChaoZhang est là., Date: 2025-01-06 15h21 et 57
Les étiquettes:WTLe taux d'intérêtHLC3SMA- Je vous en prie.

img

Résumé

Cette stratégie est un système de trading avancé qui combine l'indicateur d'oscillateur WaveTrend avec des rubans EMA. En intégrant ces deux indicateurs techniques, elle crée une stratégie de trading capable de capturer avec précision les points d'inversion de tendance du marché.

Principes de stratégie

Le noyau de la stratégie réside dans l'utilisation synergique de l'indicateur WaveTrend et de huit lignes EMA pour identifier les signaux de trading. L'indicateur WaveTrend mesure les conditions de surachat et de survente du marché en calculant l'écart entre le prix et les moyennes mobiles. Le ruban EMA confirme la direction de la tendance à travers des croisements de différentes moyennes mobiles de période.

  1. Les signaux longs sont déclenchés lorsque l'EMA2 dépasse l'EMA8 ou lorsqu'un signal triangulaire bleu apparaît (l'EMA2 dépasse l'EMA3) sans motif en diamant de sang.
  2. Les signaux courts sont déclenchés lorsque l'EMA8 dépasse l'EMA2, ou lorsqu'un motif de diamant sanguin apparaît
  3. Le stop-loss est défini au point extrême après le précédent contre-signal, ce qui permet de contrôler efficacement le risque.
  4. Les objectifs de prise de profit sont fixés à 2-3 fois la distance de stop-loss, ce qui démontre un bon rapport risque/rendement

Les avantages de la stratégie

  1. Le mécanisme de double confirmation améliore la fiabilité des signaux de négociation
  2. Les paramètres de stop-loss dynamiques s'adaptent mieux à la volatilité du marché
  3. Paramètres clairs du ratio risque/rendement
  4. Le ruban EMA aide à déterminer les tendances globales du marché
  5. L'indicateur WaveTrend identifie efficacement les conditions de surachat/survente du marché
  6. Une logique stratégique claire, facile à comprendre et à exécuter

Risques stratégiques

  1. Peut générer de fréquents faux signaux sur différents marchés
  2. Les arrêts dynamiques peuvent être facilement déclenchés en cas de forte volatilité
  3. Les indicateurs basés sur des données historiques peuvent échouer lors de changements de régime du marché
  4. Plusieurs indicateurs techniques peuvent entraîner un décalage du signal Les solutions:
  • Ajouter des filtres de volatilité pour réduire les faux signaux sur les marchés variés
  • Considérez l'utilisation de paramètres de stop-loss plus larges
  • Ajouter des mécanismes de confirmation de la force de tendance

Directions d'optimisation

  1. Introduction d'indicateurs de volatilité (tels que l'ATR) pour l'ajustement dynamique du stop-loss
  2. Ajouter un mécanisme de confirmation du volume pour améliorer la fiabilité du signal
  3. Envisager d'ajouter des filtres de force de tendance aux transactions uniquement sur les marchés à forte tendance
  4. Optimiser les paramètres de WaveTrend pour une meilleure adaptation aux différentes conditions du marché
  5. Étudier la synergie des signaux sur différentes périodes

Résumé

Il s'agit d'un système de trading complet qui combine les indicateurs de suivi de tendance et d'oscillateur dans l'analyse technique. Grâce à l'utilisation coordonnée des rubans WaveTrend et EMA, il peut à la fois capturer les tendances majeures et entrer en temps opportun aux points d'inversion de tendance. Le mécanisme de gestion dynamique de stop-loss et take-profit fournit une bonne capacité de contrôle des risques. Le potentiel d'optimisation de la stratégie réside principalement dans l'amélioration du filtrage des signaux et de la gestion des risques.


/*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="空头止盈线")

Relationnée

Plus de