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

La stratégie de négociation au niveau des SR

Auteur:ChaoZhang est là., Date: 2024-12-05 16h30 et 14h
Les étiquettes:R.R.BPTPFIBOATRSMA

img

Résumé

Il s'agit d'un système complet de stratégie de trading qui combine la reconnaissance de plusieurs modèles d'analyse technique avec des niveaux de support et de résistance. La stratégie fonctionne principalement en identifiant des modèles de double fond (fond d'Adam et d'Eve), en intégrant des niveaux de rétraction de Fibonacci et en utilisant des lignes de support et de résistance pour les décisions de trading.

Principes de stratégie

La stratégie utilise un mécanisme de triple vérification pour les décisions de trading: d'abord, elle identifie des modèles de double bas grâce à des algorithmes spécifiques, y compris le plus net Adam bottom et le plus arrondi Eve bottom; deuxièmement, elle utilise des niveaux de rétractation de Fibonacci (0,618 et 1,618) pour déterminer les zones cibles; enfin, elle confirme les signaux de trading par la vérification des niveaux de support et de résistance. Les signaux de trading ne sont générés que lorsque les conditions de reconnaissance de modèle, de niveau de Fibonacci et de niveau de support/résistance sont simultanément remplies. Plus précisément, un signal long est déclenché lorsque le niveau de support/résistance est au-dessus de l'extension de 1,618 Fibonacci, tandis qu'un signal court est déclenché lorsque le niveau de support/résistance est en dessous de l'extension de 0,618 Fibonacci.

Les avantages de la stratégie

  1. Les mécanismes de vérification multiples améliorent considérablement la fiabilité des signaux de négociation
  2. Les algorithmes de reconnaissance de modèles captent avec précision les points tournants du marché
  3. Les niveaux de Fibonacci fournissent des zones cibles précises
  4. La vérification des niveaux de support/résistance augmente la sécurité des transactions
  5. Paramètres hautement réglables adaptés aux différentes conditions du marché
  6. Un degré élevé d'automatisation réduit les préjugés subjectifs

Risques stratégiques

  1. La reconnaissance des modèles peut avoir une latence, ce qui affecte le moment de l'entrée
  2. Des signaux erronés peuvent se produire sur des marchés très volatils
  3. L'efficacité du niveau de support/résistance est influencée par les conditions du marché
  4. Des paramètres mal réglés peuvent entraîner une survente
  5. Requiert des périodes d'observation plus longues, potentiellement manquant des opportunités rapides

Directions d'optimisation de la stratégie

  1. Introduction d'indicateurs de volatilité pour filtrer les conditions du marché
  2. Ajouter des filtres de tendance pour améliorer la précision de la reconnaissance de modèles
  3. Optimiser les méthodes de calcul du niveau de support/résistance
  4. Inclure des indicateurs de volume comme confirmation
  5. Développer des mécanismes plus souples de stop-loss et de take-profit
  6. Mettre en œuvre des algorithmes d'apprentissage automatique pour améliorer la précision de la reconnaissance de modèles

Résumé

Cette stratégie construit un système de trading relativement complet en utilisant de manière complète plusieurs méthodes d'analyse technique, y compris la reconnaissance de modèles, les niveaux de Fibonacci et les lignes de support / résistance. Sa force réside dans la grande fiabilité fournie par de multiples mécanismes de vérification, tandis que sa réglabilité permet l'adaptation à différentes conditions du marché. Bien que certains risques inhérents existent, grâce à l'optimisation et à l'amélioration continues, la stratégie promet une performance stable dans le trading réel.


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

//@version=5
strategy("Double Bottom with Support/Resistance Strategy - Aynet", overlay=true)

// Inputs
lookbackPeriod = input(21, "Lookback Period")
swingLowThreshold = input(1.5, "Swing Low Threshold")
fibLevel1 = input(0.618, "Fibonacci Level 1")
fibLevel3 = input(1.618, "Fibonacci Level 2")
srPeriod = input(21, "Support/Resistance Period") 
srThreshold = input(3, "Support/Resistance Touch Points")

// Support/Resistance Function
get_sr_level(idx) =>
    var level = 0.0
    var count = 0
    
    if bar_index % srPeriod == 0
        highCount = 0
        lowCount = 0
        for i = 0 to srPeriod - 1
            if math.abs(high[i] - high) < (high * 0.001)
                highCount += 1
            if math.abs(low[i] - low) < (low * 0.001)
                lowCount += 1
                
        if highCount >= srThreshold
            level := high
            count := highCount
        if lowCount >= srThreshold
            level := low
            count := lowCount
            
    [level, count]

// Pattern Detection Functions
isSwingLow(src, left, right) =>
    isLow = true
    for i = 0 to left + right
        if src[i] < src[right]
            isLow := false
    isLow

getSpikeSharpness(index) =>
    priceRange = high[index] - low[index]
    bodyRange = math.abs(close[index] - open[index])
    sharpness = priceRange / bodyRange
    sharpness

// Pattern Variables
var float firstBottom = na
var float secondBottom = na
var bool isAdam = false
var bool isEve = false
var float level1Value = na
var float level3Value = na

// Pattern Detection
bottom = isSwingLow(low, lookbackPeriod, lookbackPeriod)
if bottom
    sharpness = getSpikeSharpness(0)
    if na(firstBottom)
        firstBottom := low
        isAdam := sharpness > swingLowThreshold
    else if low <= firstBottom * 1.02 and low >= firstBottom * 0.98
        secondBottom := low
        isEve := sharpness <= swingLowThreshold

// Calculate Fibonacci
if not na(secondBottom)
    highPoint = ta.highest(high, lookbackPeriod)
    fibDistance = highPoint - math.min(firstBottom, secondBottom)
    level1Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel1
    level3Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel3

// Get S/R Level
[srLevel, srCount] = get_sr_level(0)

// Trading Logic
longCondition = srLevel > level3Value
shortCondition = srLevel < level1Value

if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

// Reset Pattern
if high > ta.highest(high[1], lookbackPeriod)
    firstBottom := na
    secondBottom := na
    isAdam := false
    isEve := false
var table logo = table.new(position.top_right, 1, 1)
table.cell(logo, 0, 0, 'Double Bottom with Support/Resistance Strategy - Aynet', text_size=size.large, text_color=color.white)
// Plots
plot(level1Value, "0.236", color=color.rgb(245, 0, 0), style=plot.style_line)
plot(level3Value, "0.618", color=color.rgb(82, 166, 255), style=plot.style_line)
plot(srLevel, "S/R Level", color=color.white)

plotshape(bottom and not na(firstBottom) and na(secondBottom), "Adam Bottom", shape.circle, location.belowbar, color.green)
plotshape(bottom and not na(secondBottom), "Eve Bottom", shape.circle, location.belowbar, color.yellow)

Relationnée

Plus de