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

Carte thermique du volume d'achat et de vente avec stratégie de prix en temps réel

Auteur:ChaoZhang est là., Date: 2024-05-24 17:16:58 La date est fixée à
Les étiquettes:Le taux d'intérêtVWAPSMA

img

Résumé

Cette stratégie combine une carte thermique de volume et un prix en temps réel pour générer des signaux d'achat et de vente en analysant la distribution du prix et du volume sur une certaine période. La stratégie calcule d'abord plusieurs niveaux de prix en fonction du prix actuel et d'un pourcentage de fourchette de prix fixé. Elle compte ensuite les volumes d'achat et de vente à chaque niveau de prix sur une période passée et calcule les volumes d'achat et de vente cumulés. La couleur des étiquettes est déterminée en fonction des volumes d'achat et de vente cumulés. De plus, la stratégie trace la courbe des prix en temps réel. De plus, la stratégie intègre des indicateurs tels que l'EMA et le VWAP pour générer des signaux d'achat et de vente en fonction de leur relation avec le prix et le volume. Un signal d'achat est généré lorsque les conditions d'achat sont remplies et qu'aucun signal précédent n'a eu lieu. Un signal de vente est généré lorsque les conditions de

Principe de stratégie

  1. Calculer plusieurs niveaux de prix en fonction du prix actuel et d'un pourcentage de fourchette de prix fixé.
  2. Comptez les volumes d'achat et de vente à chaque niveau de prix au cours d'une période passée et calculez les volumes cumulés d'achat et de vente.
  3. Déterminer la couleur des étiquettes en fonction des volumes cumulés d'achat et de vente et afficher les étiquettes ou les formes de graphiques.
  4. Tracez la courbe des prix en temps réel.
  5. Calculer des indicateurs tels que l'EMA et le VWAP.
  6. Déterminez si les conditions d'achat sont remplies en fonction de la relation entre le prix et des indicateurs tels que l'EMA et le VWAP, ainsi que des conditions de volume.
  7. Déterminez si les conditions de vente sont remplies en fonction de la relation entre le prix et les indicateurs tels que l'EMA, ainsi que des conditions de volume. Si elles sont remplies et qu'aucun signal précédent n'a été généré, générez un signal de vente. S'il y a deux bougies rouges consécutives et qu'aucun signal précédent n'a été généré, générez également un signal de vente.
  8. Enregistrer les conditions actuelles d'achat et de vente et mettre à jour l'état d'événement du signal.

Analyse des avantages

  1. La combinaison de la carte thermique des volumes et du prix en temps réel fournit une affichage intuitive de la répartition des prix et du volume, servant de référence pour les décisions de négociation.
  2. L'intégration d'indicateurs tels que l'EMA et le VWAP enrichit le jugement de la stratégie et améliore sa fiabilité.
  3. La stratégie prend en compte plusieurs facteurs, notamment le prix, les indicateurs et le volume, ce qui rend les signaux d'achat et de vente plus complets et plus robustes.
  4. La stratégie fixe des limites à la génération de signaux afin d'éviter la génération continue de signaux répétés, réduisant ainsi les signaux trompeurs.

Analyse des risques

  1. La performance de la stratégie peut être affectée par des paramètres tels que le pourcentage de la fourchette de prix et la période de réflexion, ce qui nécessite des ajustements et des optimisations en fonction de situations spécifiques.
  2. Les indicateurs tels que l'EMA et le VWAP présentent des retards et des limites inhérents, qui peuvent devenir inefficaces dans certains environnements de marché.
  3. La stratégie est principalement adaptée aux marchés en tendance et peut générer plus de faux signaux sur les marchés instables.
  4. Les mesures de contrôle des risques de la stratégie sont relativement simples et ne disposent pas d'outils de gestion des risques tels que le stop-loss et le dimensionnement des positions.

Direction de l'optimisation

  1. Introduire davantage d'indicateurs techniques et d'indicateurs de sentiment du marché, tels que le RSI, le MACD, les bandes de Bollinger, etc., pour enrichir la base de jugement de la stratégie.
  2. Optimiser les conditions de génération des signaux d'achat et de vente pour améliorer la précision et la fiabilité des signaux.
  3. Incorporer des mesures de contrôle des risques telles que le stop-loss et la taille des positions, en fixant des niveaux raisonnables de stop-loss et des tailles de position pour contrôler l'exposition au risque des transactions individuelles.
  4. Effectuer l'optimisation des paramètres et les tests antérieurs sur la stratégie afin de trouver les combinaisons optimales de paramètres et leur applicabilité sur le marché.
  5. Considérer la combinaison de cette stratégie avec d'autres stratégies afin de tirer parti des points forts des différentes stratégies et d'améliorer la stabilité et la rentabilité globales.

Résumé

Cette stratégie génère des signaux d'achat et de vente en combinant une carte thermique du volume, un prix en temps réel et plusieurs indicateurs techniques, fournissant une certaine valeur de référence. L'avantage de la stratégie réside dans sa capacité à afficher intuitivement la distribution du prix et du volume et à prendre en compte de manière globale plusieurs facteurs pour générer des signaux. Cependant, la stratégie présente également certaines limitations et risques, tels que l'impact des paramètres, la nature retardée des indicateurs et la dépendance aux marchés tendance. Par conséquent, dans les applications pratiques, une optimisation et une amélioration supplémentaires de la stratégie sont nécessaires, telles que l'introduction de plus d'indicateurs, l'optimisation des conditions du signal, l'amélioration du contrôle des risques, etc., pour améliorer la robustesse et la rentabilité de la stratégie.


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

//@version=5
strategy("Buy and Sell Volume Heatmap with Real-Time Price Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Settings for Volume Heatmap
lookbackPeriod = input.int(100, title="Lookback Period")
baseGreenColor = input.color(color.green, title="Buy Volume Color")
baseRedColor = input.color(color.red, title="Sell Volume Color")
priceLevels = input.int(10, title="Number of Price Levels")
priceRangePct = input.float(0.01, title="Price Range Percentage")
labelSize = input.string("small", title="Label Size", options=["tiny", "small", "normal", "large"])
showLabels = input.bool(true, title="Show Volume Labels")

// Initialize arrays to store price levels, buy volumes, and sell volumes
var float[] priceLevelsArr = array.new_float(priceLevels)
var float[] buyVolumes = array.new_float(priceLevels)
var float[] sellVolumes = array.new_float(priceLevels)

// Calculate price levels around the current price
for i = 0 to priceLevels - 1
    priceLevel = close * (1 + (i - priceLevels / 2) * priceRangePct)  // Adjust multiplier for desired spacing
    array.set(priceLevelsArr, i, priceLevel)

// Calculate buy and sell volumes for each price level
for i = 0 to priceLevels - 1
    level = array.get(priceLevelsArr, i)
    buyVol = 0.0
    sellVol = 0.0
    for j = 1 to lookbackPeriod
        if close[j] > open[j]
            if close[j] >= level and low[j] <= level
                buyVol := buyVol + volume[j]
        else
            if close[j] <= level and high[j] >= level
                sellVol := sellVol + volume[j]
    array.set(buyVolumes, i, buyVol)
    array.set(sellVolumes, i, sellVol)

// Determine the maximum volumes for normalization
maxBuyVolume = array.max(buyVolumes)
maxSellVolume = array.max(sellVolumes)

// Initialize cumulative buy and sell volumes for the current bar
cumulativeBuyVol = 0.0
cumulativeSellVol = 0.0

// Calculate colors based on the volumes and accumulate volumes for the current bar
for i = 0 to priceLevels - 1
    buyVol = array.get(buyVolumes, i)
    sellVol = array.get(sellVolumes, i)
    cumulativeBuyVol := cumulativeBuyVol + buyVol
    cumulativeSellVol := cumulativeSellVol + sellVol

// Determine the label color based on which volume is higher
labelColor = cumulativeBuyVol > cumulativeSellVol ? baseGreenColor : baseRedColor

// Initialize variables for plotshape
var float shapePosition = na
var color shapeColor = na

if cumulativeBuyVol > 0 or cumulativeSellVol > 0
    if showLabels
        labelText = "Buy: " + str.tostring(cumulativeBuyVol) + "\nSell: " + str.tostring(cumulativeSellVol)
        label.new(x=bar_index, y=high + (high - low) * 0.02, text=labelText, color=color.new(labelColor, 0), textcolor=color.white, style=label.style_label_down, size=labelSize)
    else
        shapePosition := high + (high - low) * 0.02
        shapeColor := labelColor

// Plot the shape outside the local scope
plotshape(series=showLabels ? na : shapePosition, location=location.absolute, style=shape.circle, size=size.tiny, color=shapeColor)

// Plot the real-time price on the chart
plot(close, title="Real-Time Price", color=color.blue, linewidth=2, style=plot.style_line)

// Mpullback Indicator Settings
a = ta.ema(close, 9)
b = ta.ema(close, 20)
e = ta.vwap(close)
volume_ma = ta.sma(volume, 20)

// Calculate conditions for buy and sell signals
buy_condition = close > a and close > e and volume > volume_ma and close > open and low > a and low > e // Ensure close, low are higher than open, EMA, and VWAP
sell_condition = close < a and close < b and close < e and volume > volume_ma

// Store the previous buy and sell conditions
var bool prev_buy_condition = na
var bool prev_sell_condition = na

// Track if a buy or sell signal has occurred
var bool signal_occurred = false

// Generate buy and sell signals based on conditions
buy_signal = buy_condition and not prev_buy_condition and not signal_occurred
sell_signal = sell_condition and not prev_sell_condition and not signal_occurred

// Determine bearish condition (close lower than the bottom 30% of the candle's range)
bearish = close < low + (high - low) * 0.3

// Add sell signal when there are two consecutive red candles and no signal has occurred
two_consecutive_red_candles = close[1] < open[1] and close < open
sell_signal := sell_signal or (two_consecutive_red_candles and not signal_occurred)

// Remember the current conditions for the next bar
prev_buy_condition := buy_condition
prev_sell_condition := sell_condition

// Update signal occurred status
signal_occurred := buy_signal or sell_signal

// Plot buy and sell signals
plotshape(buy_signal, title="Buy", style=shape.labelup, location=location.belowbar, color=color.green, text="Buy", textcolor=color.white)
plotshape(sell_signal, title="Sell", style=shape.labeldown, location=location.abovebar, color=color.red, text="Sell", textcolor=color.white)

// Strategy entry and exit
if buy_signal
    strategy.entry("Buy", strategy.long)

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


Relationnée

Plus de