Reconnaissance de modèles multiples et stratégie de trading en centile SR

SR BP TP FIBO ATR SMA
Date de création: 2024-12-05 16:30:14 Dernière modification: 2024-12-05 16:30:14
Copier: 0 Nombre de clics: 400
1
Suivre
1617
Abonnés

Reconnaissance de modèles multiples et stratégie de trading en centile SR

Aperçu

Il s’agit d’un système de stratégies combinant l’identification de formes d’analyses techniques multiples et les niveaux de résistance de support. La stratégie consiste principalement à identifier les formes de fond double (les formes de fond d’Adam et d’Eve) et à prendre des décisions commerciales en combinant les niveaux de rétroaction de Fibonacci et les lignes de résistance de support.

Principe de stratégie

La stratégie utilise un mécanisme de triple vérification pour prendre des décisions de transaction: d’abord, l’algorithme spécifique identifie les formes de deux fonds, y compris les “fonds d’Adam” plus pointus et les “fonds d’Eve” plus rondes; ensuite, les niveaux de rétroaction de Fibonacci ((0.618 et 1.618) sont utilisés pour déterminer la zone cible; enfin, la transaction est confirmée par la vérification des niveaux de résistance de support. La génération du signal de transaction nécessite à la fois la reconnaissance de la forme, le niveau de Fibonacci et le niveau de résistance de support.

Avantages stratégiques

  1. Le mécanisme de vérification multiple a considérablement amélioré la fiabilité des signaux de transaction
  2. Capturer avec précision les points de basculement du marché grâce à des algorithmes de reconnaissance de forme
  3. Les niveaux de Fibonacci sont utilisés pour fournir des zones cibles précises.
  4. La vérification des niveaux de résistance de support augmente la sécurité des transactions
  5. Les paramètres de stratégie sont hautement ajustables et peuvent s’adapter à différents environnements de marché
  6. Un degré élevé d’automatisation réduit les biais de jugement subjectif

Risque stratégique

  1. La détection des formes pourrait être en retard et affecter le timing de l’entrée
  2. Des signaux erronés dans des marchés très volatils
  3. L’efficacité des niveaux de résistance de soutien est influencée par l’environnement du marché
  4. Une mauvaise configuration des paramètres peut entraîner des transactions excessives
  5. Les observations sont plus longues et peuvent laisser passer des opportunités plus rapides.

Orientation de l’optimisation de la stratégie

  1. L’introduction d’indicateurs de volatilité pour filtrer les conditions du marché
  2. Ajout de filtres de tendance pour améliorer la précision de la reconnaissance de formes
  3. Méthode de calcul pour optimiser le niveau de résistance au support
  4. Ajout d’indicateurs de transaction comme confirmation auxiliaire
  5. Développement de mécanismes de freinage plus flexibles
  6. L’introduction d’algorithmes d’apprentissage automatique pour améliorer la précision de la reconnaissance de formes

Résumer

La stratégie a été construite en utilisant des méthodes d’analyse techniques multiples telles que l’identification des formes, les niveaux de Fibonacci et les lignes de résistance de soutien. L’avantage de la stratégie réside dans le fait que son mécanisme de vérification multiple offre une fiabilité élevée, et sa réglabilité lui permet de s’adapter à différents environnements de marché. Bien qu’il existe des risques inhérents, la stratégie est susceptible d’obtenir une performance stable dans les transactions réelles grâce à une optimisation et à une amélioration continues.

Code source de la stratégie
/*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)