Carte thermique du hub de liquidité multi-périodes

MTF
Date de création: 2024-12-20 14:20:11 Dernière modification: 2024-12-20 14:20:11
Copier: 0 Nombre de clics: 433
1
Suivre
1617
Abonnés

Carte thermique du hub de liquidité multi-périodes

Aperçu

La stratégie est un système de trading quantitatif basé sur la détection de points de jonction de la liquidité sur plusieurs périodes de temps. Il identifie les principaux niveaux de support et de résistance en analysant le comportement des prix sur trois périodes de temps différentes: 15 minutes, 1 heure et 4 heures, et prend des décisions de trading sur cette base. Le système intègre des fonctions de gestion de fonds, y compris des paramètres de stop-loss sur des montants fixes, tout en fournissant des commentaires visuels intuitifs pour aider les traders à mieux comprendre la structure du marché.

Principe de stratégie

Le cœur de la stratégie consiste à détecter les pivots de prix sur plusieurs périodes de temps à l’aide des fonctions ta.pivothigh et ta.pivotlow. Pour chaque période de temps, le système utilise des lignes K de référence droites et droites (en supposant 7) pour identifier les hauts et les bas importants. Lorsqu’un nouveau pivot bas apparaît sur une période de temps donnée, le système génère des signaux multiples. Lorsqu’un nouveau pivot haut apparaît, le système génère des signaux blancs.

Avantages stratégiques

  1. L’analyse multi-périodes offre une vue plus complète du marché et aide à saisir différents niveaux d’opportunités de trading.
  2. La logique de transaction basée sur des hubs a une base d’analyse technique solide, facile à comprendre et à exécuter
  3. La gestion intégrée des fonds permet de contrôler efficacement le risque de chaque transaction
  4. L’interface visuelle affiche instantanément l’état de la transaction, y compris la position, le niveau de stop loss et la zone de profit
  5. Les paramètres de la stratégie sont réglables, adaptatifs et optimisés en fonction des différentes conditions du marché

Risque stratégique

  1. Les signaux à périodes multiples peuvent entrer en conflit et nécessitent un mécanisme de priorité raisonnable.
  2. Les arrêts-stop à un montant fixe peuvent ne pas être adaptés à toutes les conditions du marché et il est recommandé de les ajuster en fonction de la dynamique volatile.
  3. Le retard de détection des hubs pourrait entraîner un retard d’entrée
  4. Pendant une période de forte volatilité, un faux signal de rupture peut apparaître.
  5. Attention aux différences de fluidité dans les différentes périodes

Orientation de l’optimisation de la stratégie

  1. Introduction d’un indicateur de volatilité qui modifie dynamiquement le niveau de stop loss
  2. Ajout d’un mécanisme de confirmation des transactions pour améliorer la fiabilité des hubs
  3. Développer un système de priorité des cycles de temps pour résoudre les conflits de signaux
  4. L’intégration de filtres de tendance pour éviter une survente des marchés horizontaux
  5. Considérer l’ajout d’analyses de la structure des prix pour améliorer la précision des heures d’entrée

Résumer

La stratégie de quantification de la chaleur des nœuds de fluidité à cycles multiples est un système de négociation structuré et logiquement clair. Grâce à une analyse de marché multidimensionnelle et à une gestion rigoureuse des risques, elle fournit aux traders un cadre de négociation fiable. Bien qu’il existe des risques et des limites inhérents, la stratégie devrait rester stable dans divers environnements de marché grâce à une optimisation et à une amélioration continues.

Code source de la stratégie
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 4h
basePeriod: 4h
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/
// © pmotta41
//@version=5
strategy("GPT Session Liquidity Heatmap Strategy", overlay=true)

// Inputs
timeframe1 = input.timeframe("15", title="Intraday Timeframe 1")
timeframe2 = input.timeframe("60", title="Intraday Timeframe 2")
timeframe3 = input.timeframe("240", title="Higher Timeframe")
leftBars = input.int(7, title="Left Bars for Pivot", minval=2, maxval=20)
rightBars = input.int(7, title="Right Bars for Pivot", minval=2, maxval=20)
takeProfitDollar = input(200, title="Take Profit $$")
stopLossDollar = input(100, title="Stop Loss $$")

// Pivot Detection Function
detectPivot(highs, lows, left, right) =>
    pivotHigh = ta.pivothigh(highs, left, right)
    pivotLow = ta.pivotlow(lows, left, right)
    [pivotHigh, pivotLow]

// Get Pivots from Different Timeframes
[pivotHigh1, pivotLow1] = request.security(syminfo.tickerid, timeframe1, detectPivot(high, low, leftBars, rightBars))
[pivotHigh2, pivotLow2] = request.security(syminfo.tickerid, timeframe2, detectPivot(high, low, leftBars, rightBars))
[pivotHigh3, pivotLow3] = request.security(syminfo.tickerid, timeframe3, detectPivot(high, low, leftBars, rightBars))

// Plot Pivots
plotshape(series=pivotHigh1, title="Pivot High 1", location=location.abovebar, color=color.red, style=shape.labeldown, text="H1")
plotshape(series=pivotLow1, title="Pivot Low 1", location=location.belowbar, color=color.green, style=shape.labelup, text="L1")
plotshape(series=pivotHigh2, title="Pivot High 2", location=location.abovebar, color=color.red, style=shape.labeldown, text="H2")
plotshape(series=pivotLow2, title="Pivot Low 2", location=location.belowbar, color=color.green, style=shape.labelup, text="L2")
plotshape(series=pivotHigh3, title="Pivot High 3", location=location.abovebar, color=color.red, style=shape.labeldown, text="H3")
plotshape(series=pivotLow3, title="Pivot Low 3", location=location.belowbar, color=color.green, style=shape.labelup, text="L3")

// Strategy Logic
buyCondition = pivotLow1 or pivotLow2 or pivotLow3
sellCondition = pivotHigh1 or pivotHigh2 or pivotHigh3

if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.entry("Sell", strategy.short)

// Function to Convert $$ to Points for Stop Loss and Take Profit
moneyToSLPoints(money) =>
    strategy.position_size != 0 ? (money / syminfo.pointvalue / math.abs(strategy.position_size)) / syminfo.mintick : na

p = moneyToSLPoints(takeProfitDollar)
l = moneyToSLPoints(stopLossDollar)

// Exit Conditions
strategy.exit("Exit Buy", from_entry="Buy", profit=p, loss=l)
strategy.exit("Exit Sell", from_entry="Sell", profit=p, loss=l)

// Visualization for Stop Loss and Take Profit Levels
pointsToPrice(pp) =>
    na(pp) ? na : strategy.position_avg_price + pp * math.sign(strategy.position_size) * syminfo.mintick

tp = plot(pointsToPrice(p), style=plot.style_linebr, color=color.green, title="Take Profit Level")
sl = plot(pointsToPrice(-l), style=plot.style_linebr, color=color.red, title="Stop Loss Level")
avg = plot(strategy.position_avg_price, style=plot.style_linebr, color=color.blue, title="Entry Price")
fill(tp, avg, color=color.new(color.green, 90), title="Take Profit Area")
fill(avg, sl, color=color.new(color.red, 90), title="Stop Loss Area")

// Background for Gain/Loss
gainBackground = strategy.position_size > 0 and close > strategy.position_avg_price
lossBackground = strategy.position_size > 0 and close < strategy.position_avg_price
bgcolor(gainBackground ? color.new(color.green, 90) : na, title="Gain Background")
bgcolor(lossBackground ? color.new(color.red, 90) : na, title="Loss Background")