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

Stratégie de percée de l' élan de rebond à triple fond

Auteur:ChaoZhang est là., Date: 2025-01-10 à 15h49
Les étiquettes:Le taux d'intérêtATR- Je vous en prie.SMA

 Triple Bottom Rebound Momentum Breakthrough Strategy

Résumé

Cette stratégie est un système de trading quantitatif basé sur l'analyse technique, axé principalement sur l'identification des modèles de triple bas et des signaux de percée de l'élan sur le marché.

Principes de stratégie

La logique de base comprend les éléments clés suivants: 1. Utilisation de croisements de moyennes mobiles rapides (5 périodes) et lentes (20 périodes) pour confirmer la direction de la tendance du marché Identification automatique de trois points bas consécutifs (bas1, bas2, bas3) pour former un motif triple bas Utiliser l'indicateur ATR pour calculer la volatilité et définir des niveaux dynamiques de stop-loss et de take profit 4. Confirmation des signaux d'entrée longs lorsque le prix dépasse le sommet de rebond précédent après le troisième bas, combiné aux signaux de croisement MA 5. Création de canaux parallèles pour visualiser les fourchettes de mouvements de prix à des fins de référence supplémentaire sur le marché 6. Mise en œuvre de conditions dynamiques de stop-loss et de prise de profit basées sur l'ATR lors de l'exécution des transactions

Les avantages de la stratégie

  1. Combine plusieurs indicateurs techniques pour améliorer la fiabilité du signal
  2. Utilise l'ATR pour ajuster dynamiquement les niveaux de stop-loss et de take-profit, en s'adaptant aux changements de volatilité du marché
  3. Automatise l'identification des modèles triple fond, réduisant le jugement subjectif
  4. Mettre en œuvre des restrictions d'intervalle de négociation pour prévenir le suréchange
  5. Fournit une référence claire à la structure du marché grâce à des outils de visualisation (canaux et étiquettes parallèles)
  6. Fonctionne avec une logique de stratégie claire pour une maintenance et une optimisation faciles

Risques stratégiques

  1. Peut générer de faux signaux sur des marchés très volatils
  2. Le processus d'identification du modèle triple fond peut être affecté par le bruit du marché
  3. Les multiplicateurs ATR fixes peuvent ne pas convenir à toutes les conditions du marché
  4. L'établissement peut subir des pertes consécutives pendant les périodes de renversement de tendance
  5. Les paramètres d'intervalle de négociation peuvent manquer certains signaux valides.

Directions d'optimisation de la stratégie

  1. Incorporer des indicateurs de volume pour confirmer la validité du rebond
  2. Ajustez dynamiquement les multiplicateurs ATR en fonction des différentes conditions du marché
  3. Ajouter des filtres de force de tendance pour améliorer la qualité des signaux de trading
  4. Optimiser l'algorithme d'identification du triple fond pour augmenter la précision
  5. Incorporer l'analyse du cycle de marché pour optimiser les réglages des intervalles de négociation
  6. Considérez l'ajout d'une analyse de symétrie des modèles de prix

Résumé

Cette stratégie met en œuvre un système de trading de triple rebond de rupture de fond de manière programmatique, combinant plusieurs indicateurs techniques et mesures de gestion des risques avec une bonne praticité.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("反彈三次突破策略", overlay=true, initial_capital=100000, commission_value=0.001425, slippage=1)

// === 參數設定 ===
fast_length = input.int(5, title="快速均線週期")
slow_length = input.int(20, title="慢速均線週期")
atr_period = input.int(14, title="ATR 週期")
atr_factor = input.float(2.0, title="ATR 因子")
profit_factor = input.float(2.0, title="止盈因子")

// === 計算均線 ===
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.ema(close, slow_length)

// === 均線交叉訊號 ===
long_signal = ta.crossover(fast_ma, slow_ma)
short_signal = ta.crossunder(fast_ma, slow_ma)

// === 計算 ATR ===
atr = ta.atr(atr_period)

// === 反彈三次突破策略 ===
var float low1 = na
var float low2 = na
var float low3 = na
var bool trend_down = false
var bool long_breakout = false
var line lower_line = na
var line upper_line = na

if (na(low1) or na(low2) or na(low3))
    // 初始化低點
    low1 := na
    low2 := na
    low3 := na

if (close < low3 or na(low3))
    // 更新低點
    low1 := low2
    low2 := low3
    low3 := close
    trend_down := true

if (trend_down and close > low2 and close > low1)
    // 確認反轉且第三次反彈比第二次高
    trend_down := false
    long_breakout := true

// 清除前一個反彈通道
if (not na(lower_line))
    line.delete(lower_line)
if (not na(upper_line))
    line.delete(upper_line)

// 繪製新的反彈通道
if (not na(low1) and not na(low3))    
    lower_line := line.new(x1=bar_index[2], y1=low1, x2=bar_index, y2=low3, color=color.yellow, width=2)
    upper_line := line.new(x1=bar_index[2], y1=low1 + (low3 - low1), x2=bar_index, y2=low3 + (low3 - low1), color=color.yellow, width=2)

// === 進出場條件 ===
var float last_long_exit = na
var float last_short_exit = na
var float stop_loss_long = na
var float take_profit_long = na
var float stop_loss_short = na
var float take_profit_short = na

var label stop_loss_label_long = na
var label take_profit_label_long = na
var label stop_loss_label_short = na
var label take_profit_label_short = na

if (long_signal or long_breakout)
    if na(last_short_exit) or (time - last_short_exit) > 2 * 60 * 60 * 1000  // 確保多頭出場後有一段時間間隔
        // 做多
        strategy.entry("做多", strategy.long)
        // 止損設置為最近低點下方
        stop_loss_long := low3 - atr_factor * atr
        take_profit_long := close + profit_factor * atr  // 設定止盈位置
        strategy.exit("止盈/止損", "做多", stop=stop_loss_long, limit=take_profit_long)
        last_long_exit := time  // 記錄多頭出場時間

        // 刪除之前的止盈止損標籤
        if (not na(stop_loss_label_long))
            label.delete(stop_loss_label_long)
        if (not na(take_profit_label_long))
            label.delete(take_profit_label_long)

        // 繪製新的止盈止損標籤
        stop_loss_label_long := label.new(x=bar_index, y=stop_loss_long, text=str.tostring(math.round(stop_loss_long * 10) / 10), color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)
        take_profit_label_long := label.new(x=bar_index, y=take_profit_long, text=str.tostring(math.round(take_profit_long * 10) / 10), color=color.green, style=label.style_label_up, textcolor=color.white, size=size.small)

if (short_signal)
    if na(last_long_exit) or (time - last_long_exit) > 2 * 60 * 60 * 1000  // 確保空頭出場後有一段時間間隔
        // 做空
        strategy.entry("做空", strategy.short)
        // 止損設置為最近高點上方
        stop_loss_short := high + atr_factor * atr
        take_profit_short := close - profit_factor * atr  // 設定止盈位置
        strategy.exit("止盈/止損", "做空", stop=stop_loss_short, limit=take_profit_short)
        last_short_exit := time  // 記錄空頭出場時間

        // 刪除之前的止盈止損標籤
        if (not na(stop_loss_label_short))
            label.delete(stop_loss_label_short)
        if (not na(take_profit_label_short))
            label.delete(take_profit_label_short)

        // 繪製新的止盈止損標籤
        stop_loss_label_short := label.new(x=bar_index, y=stop_loss_short, text=str.tostring(math.round(stop_loss_short * 10) / 10), color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)
        take_profit_label_short := label.new(x=bar_index, y=take_profit_short, text=str.tostring(math.round(take_profit_short * 10) / 10), color=color.green, style=label.style_label_up, textcolor=color.white, size=size.small)

Relationnée

Plus de