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

Stratégie de négociation quantitative basée sur des schémas d'inversion aux niveaux de soutien et de résistance

Auteur:ChaoZhang est là., Date: 2024-06-07 16:45:09 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie est basée sur des modèles d'inversion (marteau, engulf et doji) et des niveaux de support et de résistance dans l'analyse technique, la négociation sur un graphique d'une heure.

L'idée principale de la stratégie est d'entrer dans une position longue lorsqu'un modèle d'inversion haussier (comme un marteau, un engorgement haussier ou un doji) apparaît près d'un niveau de support, et d'entrer dans une position courte lorsqu'un modèle d'inversion baissier (comme un marteau, un engorgement baissier ou un doji) apparaît près d'un niveau de résistance.

La logique de la stratégie

  1. Calculer le plus bas bas et le plus haut haut dans la période de rétrospective spécifiée en utilisant les fonctions ta.lowest() et ta.highest() pour déterminer les niveaux de support et de résistance.
  2. Vérifiez si le chandelier actuel forme un marteau, un motif engloutissant ou un doji.
  3. Si une tendance haussière apparaît près d'un niveau de support, entrez dans une position longue; si une tendance baissière apparaît près d'un niveau de résistance, entrez dans une position courte.
  4. Définir le prix de prise de profit à 3% au-dessus du prix d'entrée et le prix de stop-loss à 1% au-dessous du prix d'entrée.
  5. Fermez la position lorsque le prix atteint le niveau de prise de profit ou d'arrêt de perte.

Les avantages de la stratégie

  1. Combine des modèles d'inversion et des niveaux de support et de résistance clés, améliorant la fiabilité des signaux de trading.
  2. Les niveaux de prise de profit et de stop-loss sont définis, contrôlant ainsi efficacement le risque.
  3. Convient à la fois pour les marchés en tendance et en variation, pour saisir les opportunités d'inversion potentielles.
  4. Code simple et facile à comprendre, facilitant la mise en œuvre.

Risques stratégiques

  1. Dans les marchés à fourchette, des signaux d'inversion fréquents peuvent entraîner des surtrades et des pertes de commission.
  2. L'identification des niveaux de soutien et de résistance dépend du choix de la période de réflexion, et différentes périodes de réflexion peuvent donner des résultats différents.
  3. La fiabilité des modèles d'inversion n'est pas absolue et les faux signaux peuvent entraîner des pertes.

Les solutions:

  1. Ajuster les paramètres et les conditions de confirmation des schémas d'inversion pour réduire les faux signaux.
  2. Incorporer d'autres indicateurs techniques ou des indicateurs de sentiment du marché pour améliorer la fiabilité du signal.
  3. Ajuster les niveaux de prise de bénéfices et de stop-loss de manière appropriée pour s'adapter aux différentes conditions du marché.

Directions d'optimisation de la stratégie

  1. Mettre en place des indicateurs de volume pour confirmer la validité des modèles d'inversion.
  2. Considérez les niveaux de support et de résistance à partir de plusieurs délais pour améliorer la précision des niveaux de support et de résistance.
  3. Combiner les indicateurs de tendance, tels que les moyennes mobiles, pour négocier dans le sens de la tendance et éviter les transactions contre-tendance.
  4. Optimiser les niveaux de prise de profit et de stop-loss en les ajustant dynamiquement en fonction de la volatilité du marché afin d'obtenir de meilleurs ratios risque/rendement.

Résumé

Cette stratégie capte les opportunités de trading potentielles en identifiant les modèles de renversement près des niveaux de support et de résistance. Elle est simple à utiliser et applicable à différents environnements de marché. Cependant, le succès de la stratégie dépend de l'identification précise des modèles de renversement et des niveaux de support et de résistance. En optimisant les conditions de confirmation des signaux de trading, en incorporant d'autres indicateurs techniques et en ajustant dynamiquement les niveaux de profit et de stop loss, la performance de la stratégie peut être encore améliorée.


/*backtest
start: 2024-05-07 00:00:00
end: 2024-06-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

//@version=5
strategy("Reversal Patterns at Support and Resistance", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Parameters
support_resistance_lookback = input.int(50, title="Support/Resistance Lookback Period")
reversal_tolerance = input.float(0.01, title="Reversal Tolerance (percent)", step=0.01) / 100
take_profit_percent = input.float(3, title="Take Profit (%)") / 100
stop_loss_percent = input.float(1, title="Stop Loss (%)") / 100

// Functions to identify key support and resistance levels
findSupport() =>
    ta.lowest(low, support_resistance_lookback)

findResistance() =>
    ta.highest(high, support_resistance_lookback)

// Identify reversal patterns
isHammer() =>
    body = math.abs(close - open)
    lowerWick = open > close ? (low < close ? close - low : open - low) : (low < open ? open - low : close - low)
    upperWick = high - math.max(open, close)
    lowerWick > body * 2 and upperWick < body

isEngulfing() =>
    (close[1] < open[1] and close > open and close > open[1] and open < close[1]) 
    (close[1] > open[1] and close < open and close < open[1] and open > close[1])

isDoji() =>
    math.abs(open - close) <= (high - low) * 0.1

// Identify support and resistance levels
support = findSupport()
resistance = findResistance()

// Check for reversal patterns at support and resistance
hammerAtSupport = isHammer() and (low <= support * (1 + reversal_tolerance))
engulfingAtSupport = isEngulfing() and (low <= support * (1 + reversal_tolerance))
dojiAtSupport = isDoji() and (low <= support * (1 + reversal_tolerance))

hammerAtResistance = isHammer() and (high >= resistance * (1 - reversal_tolerance))
engulfingAtResistance = isEngulfing() and (high >= resistance * (1 - reversal_tolerance))
dojiAtResistance = isDoji() and (high >= resistance * (1 - reversal_tolerance))

// Trading logic
if (hammerAtSupport or engulfingAtSupport or dojiAtSupport)
    strategy.entry("Long", strategy.long)
    stop_level = low * (1 - stop_loss_percent)
    take_profit_level = close * (1 + take_profit_percent)
    strategy.exit("Take Profit/Stop Loss", from_entry="Long", stop=stop_level, limit=take_profit_level)

if (hammerAtResistance or engulfingAtResistance or dojiAtResistance)
    strategy.entry("Short", strategy.short)
    stop_level = high * (1 + stop_loss_percent)
    take_profit_level = close * (1 - take_profit_percent)
    strategy.exit("Take Profit/Stop Loss", from_entry="Short", stop=stop_level, limit=take_profit_level)

// Plot support and resistance levels for visualization
plot(support, color=color.green, linewidth=1, title="Support Level")
plot(resistance, color=color.red, linewidth=1, title="Resistance Level")

// Plot reversal patterns on the chart for visualization
plotshape(series=hammerAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer at Support")
plotshape(series=engulfingAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Engulfing at Support")
plotshape(series=dojiAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Doji at Support")

plotshape(series=hammerAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Hammer at Resistance")
plotshape(series=engulfingAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulfing at Resistance")
plotshape(series=dojiAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Doji at Resistance")


Plus de