Stratégie de rupture de tendance dynamique multi-périodes de l'axe central

RSI PP R1 S1 EMA TF
Date de création: 2025-03-31 17:27:39 Dernière modification: 2025-03-31 17:27:39
Copier: 4 Nombre de clics: 332
2
Suivre
319
Abonnés

Stratégie de rupture de tendance dynamique multi-périodes de l’axe central Stratégie de rupture de tendance dynamique multi-périodes de l’axe central

Aperçu

Cette stratégie est une stratégie de trading de rupture de tendance dynamique basée sur l’axe inter-multicyclique et l’indice de force relative (RSI). La stratégie vise à capturer les opportunités de tendance dans les marchés financiers en combinant des niveaux de support et de pression de prix périodiques avec l’indicateur RSI, tout en offrant une gestion de position et un mécanisme de contrôle des risques.

Principe de stratégie

Les principes de base de la stratégie comprennent les étapes clés suivantes:

  1. Calcul central des prix pluricycliques:
  • Calcul des tensions de support critiques en utilisant le prix de clôture, le prix le plus élevé et le prix le plus bas de la ligne K précédente au niveau de la courbe
  • Calculer le support typique (S1, S2, S3) et le point de contrainte (R1, R2, R3)
  • Sensibilité des points de pression de soutien ajustée par facteur dynamique
  1. L’indicateur RSI est optimisé pour la dynamique:
  • Calcul de l’indicateur RSI à 21 cycles
  • Introduction de l’indice des moyennes mobiles (EMA) et du RSI à l’arrêt
  • Construction d’un composé combinant le RSI original et le relâchement EMA
  1. Le signal de transaction est généré:
  • Entrée à plusieurs têtes: 0 sur l’indicateur composé
  • Résultat: le prix le plus élevé atteint le seuil de pression de R3
  • Entrée à vide: prix le plus bas au-dessous du support S3
  • Début de saison à la tête nue: 0 sur le score composite

Avantages stratégiques

  1. Perspective multi-cyclique: filtrer efficacement le bruit du marché à court terme en introduisant des données au niveau de la périphérie
  2. Gestion flexible des positions: un mécanisme de coupe par tranches pour réduire le risque de transaction unique
  3. Construction d’indicateurs dynamiques: combinaison du RSI et de l’EMA pour améliorer la précision du signal
  4. Une logique de négociation symétrique multi-zones: une stratégie flexible pour différents environnements de marché
  5. Risques maîtrisés: arrêt de perte intégré et arrêt de freinage par étapes

Risque stratégique

  1. Résistance des indicateurs: le RSI et le centre des prix peuvent présenter des problèmes de retard
  2. Sensitivité des paramètres: la performance de la stratégie est fortement dépendante de la sélection des paramètres
  3. Effets sur les coûts des transactions: des frais de transaction élevés peuvent être dus à des transactions fréquentes
  4. Extrême situation du marché: revirement de tendance et forte volatilité peuvent entraîner l’échec de la stratégie

Orientation de l’optimisation de la stratégie

  1. Présentation des algorithmes d’apprentissage automatique pour optimiser la sélection des paramètres
  2. Un mécanisme de filtrage pour augmenter le volume et la volatilité des transactions
  3. Vérification des signaux combinée à d’autres indicateurs techniques
  4. Développement d’algorithmes de stop-loss et d’arrêt dynamiques
  5. Introduction de modèles de gestion de la taille des positions plus complexes

Résumer

La stratégie a été construite en utilisant l’analyse intégrée de plusieurs cycles et indicateurs pour construire une approche de trading de rupture de tendance relativement robuste. Son avantage central réside dans la capture dynamique des tendances du marché et la gestion des risques de finesse. Les espaces d’optimisation futurs comprennent l’intelligence des algorithmes et l’incrédulité des modèles de contrôle des risques.

Code source de la stratégie
/*backtest
start: 2024-03-31 00:00:00
end: 2025-03-29 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © yuxishejiang

//@version=6
//@version=5
strategy(title="BTC中轴策略优化-V2", overlay=true, pyramiding=1, initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.075)

// 核心参数
strat_dir_input = input.string(title="Strategy Direction", defval="long", options=["long", "short"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

// 指标计算
higherTF = input.timeframe("W", "Higher Timeframe")
pc = request.security(syminfo.tickerid, higherTF, close[1], barmerge.gaps_off, barmerge.lookahead_on)
ph = request.security(syminfo.tickerid, higherTF, high[1], barmerge.gaps_off, barmerge.lookahead_on)
pl = request.security(syminfo.tickerid, higherTF, low[1], barmerge.gaps_off, barmerge.lookahead_on)

PP = (ph + pl + pc) / 3
R1 = PP + (PP - pl)
S1 = PP - (ph - PP)
R2 = PP + (ph - pl)
S2 = PP - (ph - pl)
factor = input.int(2, "Factor")
R3 = ph + factor * (PP - pl)
S3 = pl - 2 * (ph - PP)

length = input.int(21, "RSI Length")
p = close
vrsi = ta.rsi(p, length)
pp_ema = ta.ema(vrsi, length)
d = (vrsi - pp_ema) * 5
cc = (vrsi + d + pp_ema) / 2

// 仓位管理变量
var float entry_qty = na

// 交易执行逻辑
longEntry = ta.crossover(cc, 0)
longExit = ta.crossover(high, R3)  // 使用实时最高价判断

shortEntry = ta.crossunder(low, S3)  // 改为使用S3支撑位
shortExit = ta.crossunder(cc, 0)     // 同步修改为下穿

if (longEntry)
    strategy.entry("Long", strategy.long)
    entry_qty := strategy.position_size

if (strategy.position_size > 0 and longExit)
    strategy.close("Long", comment="5M背离离场")

if (shortEntry)
    strategy.entry("Short", strategy.short)
    entry_qty := strategy.position_size

if (strategy.position_size < 0 and shortExit)
    strategy.close("Short", comment="空头离场")

// 止盈止损模块
per(pcnt) =>
    strategy.position_size != 0 ? math.round(math.abs(pcnt/100 * strategy.position_avg_price / syminfo.mintick)) : na

stoploss = input.float(15, "Stop Loss (%)", minval=0.01)
tp1 = input.float(3, "Take Profit 1 (%)", minval=0.01)
tp2 = input.float(5, "Take Profit 2 (%)", minval=0.01)
tp3 = input.float(7, "Take Profit 3 (%)", minval=0.01)
tp4 = input.float(10, "Take Profit 4 (%)", minval=0.01)

// 分阶段平仓逻辑
if strategy.position_size != 0
    qty_total = math.abs(entry_qty)
    qty1 = math.floor(qty_total * 0.25)
    qty2 = math.floor(qty_total * 0.25)
    qty3 = math.floor(qty_total * 0.25)
    qty4 = qty_total - (qty1 + qty2 + qty3)
    
    if strategy.position_size > 0
        strategy.exit("x1", qty=qty1, profit=per(tp1), loss=per(stoploss))
        strategy.exit("x2", qty=qty2, profit=per(tp2), loss=per(stoploss))
        strategy.exit("x3", qty=qty3, profit=per(tp3), loss=per(stoploss))
        strategy.exit("x4", qty=qty4, profit=per(tp4), loss=per(stoploss))
    else
        strategy.exit("x1", qty=qty1, profit=per(tp1), loss=per(stoploss))
        strategy.exit("x2", qty=qty2, profit=per(tp2), loss=per(stoploss))
        strategy.exit("x3", qty=qty3, profit=per(tp3), loss=per(stoploss))
        strategy.exit("x4", qty=qty4, profit=per(tp4), loss=per(stoploss))

// 可视化部分保持不变
// 多头入场可视化
if (longEntry)
    label.new(bar_index, low, "多头入场", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)

// 多头离场可视化
if (strategy.position_size > 0 and longExit)
    label.new(bar_index, high, "多头离场", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)

// 空头入场可视化
if (shortEntry)
    label.new(bar_index, high, "空头入场", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)

// 空头离场可视化
if (strategy.position_size < 0 and shortExit)
    label.new(bar_index, low, "空头离场", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)