Stratégie de négociation en renversement de l'élan de l'offre et de la demande

Auteur:ChaoZhang est là., Date: 2024-01-22 17h34:05
Les étiquettes:

img

Résumé

Cette stratégie combine des indicateurs de dynamique et des moyennes mobiles pour identifier les tendances du marché et les points d'inversion pour le trading lorsque la tendance change de direction. Elle appartient aux stratégies de trading de tendance et de contre-tendance.

La logique de la stratégie

1. Identification de l'offre et de la demande

Distinguer la relation entre l'offre et la demande en fonction de la plage haute et basse de Kline. Les zones rouges indiquent que l'offre dépasse les zones d'offre de la demande. Les zones vertes indiquent que la demande dépasse les zones d'offre de la demande.

2. Le jugement de tendance de l'EMA

Tracez l'EMA de la période 200 et déterminez la tendance haussière et la tendance baissière en comparant le prix avec l'EMA.

3. Marquage des zones longues et courtes

Déterminez les zones d'inversion en fonction des points hauts et bas des 2 dernières bougies:

  • Zone HH (Zone plus élevée) - 2 plus hauts de bougies consécutifs font plus haut haut
  • LL Zone (Lower Low Zone) - 2 bas de bougie consécutifs font bas bas
  • Zone LH (zone inférieure élevée) - Récent renversement de la plus haute haute à la plus basse haute
  • Zone HL (Zone basse supérieure) - Récent renversement du bas bas vers le bas supérieur

4. ATR arrêt de perte de suivi

Le montant de la valeur ATR pour la période 14 doit être multiplié par un facteur 2 pour obtenir le niveau de stop loss.

5. Entrée et sortie de stop-loss

Surveillez la relation de prix avec les points hauts/baissés des bougies précédentes. Le signal long est déclenché lorsque le prix dépasse le niveau le plus élevé précédent. Le signal court est déclenché lorsque le prix dépasse le niveau le plus bas précédent. Retardez la confirmation du signal d'entrée jusqu'à la 3e bougie pour éviter de faux signaux. Sortez avec un stop loss lorsque le prix dépasse le niveau de stop loss ATR.

Analyse des avantages

  1. Utiliser de multiples indicateurs pour identifier les tendances et les principales zones d'inversion afin d'améliorer le taux de rentabilité.
  2. L'ATR peut limiter efficacement le risque de perte par transaction.
  3. La confirmation tardive du signal d'entrée réduit au minimum les faux échanges.

Analyse des risques

  1. S'appuyer uniquement sur des indicateurs techniques sans tenir compte des informations fondamentales peut entraîner des échecs commerciaux dus à des données clés manquantes.
  2. ATR stop loss peut être dépassé par une forte volatilité entraînant des pertes.
  3. Les signaux fréquents de renversement de la EMA sur les marchés à courants variés peuvent entraîner une survente.

Solution au risque:

  1. Compléter les données économiques et les jugements politiques.
  2. Permettre un tampon plus large pour le coefficient de multiplicateur ATR.
  3. Ajuster le paramètre de la période ATR pour éviter une sensibilité au cours des plages.

Des possibilités d'amélioration

  1. Compléter les indicateurs techniques tels que le MACD, le RSI, etc. pour améliorer le timing.
  2. Testez en arrière différentes combinaisons de paramètres de période et de multiplicateur pour optimisation.
  3. Envisagez d'ajouter un filtre de ré-éclatement pour éviter les coups de fouet de signal.
  4. Utiliser l'apprentissage automatique, etc. pour optimiser dynamiquement les paramètres.

Conclusion

Cette stratégie combine l'analyse de l'offre/de la demande, la détermination des tendances, l'identification de l'inversion et les modules de gestion des risques pour repérer efficacement les opportunités d'inversion du marché dans les domaines clés.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-20 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supply and Demand Zones with EMA and Trailing Stop", shorttitle="SD Zones", overlay=true)

showBuySignals = input(true, title="Show Buy Signals", group="Signals")
showSellSignals = input(true, title="Show Sell Signals", group="Signals")
showHLZone = input(true, title="Show HL Zone", group="Zones")
showLHZone = input(true, title="Show LH Zone", group="Zones")
showHHZone = input(true, title="Show HH Zone", group="Zones")
showLLZone = input(true, title="Show LL Zone", group="Zones")

emaLength = input(200, title="EMA Length", group="EMA Settings")
atrLength = input(14, title="ATR Length", group="Trailing Stop")
atrMultiplier = input(2, title="ATR Multiplier", group="Trailing Stop")

// Function to identify supply and demand zones
getZones(src, len, mult) =>
    base = request.security(syminfo.tickerid, "D", close)
    upper = request.security(syminfo.tickerid, "D", high)
    lower = request.security(syminfo.tickerid, "D", low)
    multiplier = request.security(syminfo.tickerid, "D", mult)
    zonetype = base + multiplier * len
    zone = src >= zonetype
    [zone, upper, lower]

// Identify supply and demand zones
[supplyZone, _, _] = getZones(close, high[1] - low[1], 1)
[demandZone, _, _] = getZones(close, high[1] - low[1], -1)

// Plot supply and demand zones
bgcolor(supplyZone ? color.new(color.red, 80) : na)
bgcolor(demandZone ? color.new(color.green, 80) : na)

// EMA with Linear Weighted method
ema = ta.ema(close, emaLength)

// Color code EMA based on its relation to candles
emaColor = close > ema ? color.new(color.green, 0) : close < ema ? color.new(color.red, 0) : color.new(color.yellow, 0)

// Plot EMA
plot(ema, color=emaColor, title="EMA")

// Entry Signal Conditions after the third candle
longCondition = ta.crossover(close, high[1]) and (bar_index >= 2)
shortCondition = ta.crossunder(close, low[1]) and (bar_index >= 2)

// Trailing Stop using ATR
atrValue = ta.atr(atrLength)
trailStop = close - atrMultiplier * atrValue

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("TrailStop", from_entry="Buy", loss=trailStop)

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("TrailStop", from_entry="Sell", loss=trailStop)

// Plot Entry Signals
plotshape(series=showBuySignals ? longCondition : na, title="Buy Signal", color=color.new(color.green, 0), style=shape.triangleup, location=location.belowbar)
plotshape(series=showSellSignals ? shortCondition : na, title="Sell Signal", color=color.new(color.red, 0), style=shape.triangledown, location=location.abovebar)

// Plot Trailing Stop
plot(trailStop, color=color.new(color.red, 0), title="Trailing Stop")

// Plot HH, LL, LH, and HL zones
plotshape(series=showHHZone and ta.highest(high, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HH Zone", color=color.new(color.blue, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showLLZone and ta.lowest(low, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LL Zone", color=color.new(color.blue, 80), style=shape.triangledown, location=location.belowbar)
plotshape(series=showLHZone and ta.highest(high, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LH Zone", color=color.new(color.orange, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showHLZone and ta.lowest(low, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HL Zone", color=color.new(color.orange, 80), style=shape.triangledown, location=location.belowbar)


Plus de