Kauf- und Verkaufsstrategien basierend auf Volumen-Heatmaps und Echtzeitpreisen

EMA VWAP SMA
Erstellungsdatum: 2024-05-24 17:16:58 zuletzt geändert: 2024-05-24 17:16:58
Kopie: 2 Klicks: 570
1
konzentrieren Sie sich auf
1617
Anhänger

Kauf- und Verkaufsstrategien basierend auf Volumen-Heatmaps und Echtzeitpreisen

Überblick

Die Strategie kombiniert eine Heatmap mit einem Echtzeitpreis und erzeugt ein Kauf- und Verkaufssignal durch die Analyse der Preise und der Verteilung des Kaufvolumens über einen bestimmten Zeitraum. Die Strategie berechnet zunächst mehrere Preisniveaus basierend auf den aktuellen Preisen und dem prozentualen Anteil des festgelegten Preisbereichs. Die Strategie berechnet dann die Kauf- und Verkaufsabläufe für jede Preisstufe über einen bestimmten Zeitraum und berechnet die kumulierte Kauf- und Verkaufsabläufe.

Strategieprinzip

  1. Es werden mehrere Preisniveaus berechnet, die sich aus dem Prozentsatz des aktuellen Preises und der festgelegten Preisspanne ergeben.
  2. Erheben Sie für jede Preisstufe den Kauf- und Verkaufsvolumen in der Vergangenheit und berechnen Sie den kumulierten Kauf- und Verkaufsvolumen.
  3. Die Farbe der Etiketten wird anhand der kumulierten Kauf- und Verkaufsmenge bestimmt und die Etiketten werden angezeigt oder in einer Grafik dargestellt.
  4. Graphische Darstellung der Preiskurve in Echtzeit.
  5. Berechnen Sie EMA, VWAP usw.
  6. Die Beurteilung, ob die Kaufbedingungen erfüllt sind, basiert auf der Beziehung des Preises zu Indikatoren wie EMA, VWAP und Umsatzbedingungen. Wenn die Kaufbedingungen erfüllt sind und zuvor kein Signal erzeugt wurde, wird ein Kaufsignal erzeugt.
  7. Entsprechend der Beziehung zwischen dem Preis und anderen Indikatoren wie der EMA und der Umsatzmenge wird entschieden, ob die Verkaufsbedingungen erfüllt sind. Wenn sie erfüllt sind und zuvor kein Signal erzeugt wurden, wird ein Verkaufssignal erzeugt. Wenn zwei aufeinanderfolgende Negativstränge erzeugt wurden und zuvor kein Signal erzeugt wurde, wird ein Verkaufssignal erzeugt.
  8. Aufzeichnung der aktuellen Kauf- und Verkaufszustände und Aktualisierung der Signalerzeugung.

Analyse der Stärken

  1. In Kombination mit einem Heatmap von Transaktionsvolumen und Echtzeit-Preisen kann die Verteilung von Preisen und Transaktionsvolumen visuell dargestellt und als Referenz für Handelsentscheidungen verwendet werden.
  2. Die Einführung von Indikatoren wie EMA, VWAP und anderen, die die Kriterien der Strategie bereichern und die Zuverlässigkeit der Strategie verbessern.
  3. Die Angabe von Preisen, Indizes und Transaktionsvolumen ist ein umfassenderer und stabiler Kauf- und Verkaufssignal.
  4. Es wurden Einschränkungen für die Signalerzeugung eingestellt, um die fortlaufende Erzeugung von sich wiederholenden Signalen zu vermeiden und falsche Signale zu reduzieren.

Risikoanalyse

  1. Die Performance der Strategie kann von Parameter-Einstellungen wie Preis-Range-Prozentsatz und Rücklaufzeit beeinflusst werden, die je nach Situation angepasst und optimiert werden müssen.
  2. Indikatoren wie EMA, VWAP und andere haben selbst eine gewisse Verzögerung und Einschränkung und können unter bestimmten Marktbedingungen nicht mehr wirken.
  3. Diese Strategie wird hauptsächlich in stark trendigen Märkten angewendet, die in einem wackligen Markt mehr Falschsignale erzeugen können.
  4. Die Risikokontrollmaßnahmen der Strategie sind relativ einfach und es fehlen Risikomanagementmittel wie Stop-Loss- und Positionsmanagement.

Optimierungsrichtung

  1. Die Einführung weiterer Technik- und Stimmungsindikatoren wie RSI, MACD, Bollinger Bands usw. bereichert die Entscheidungsgrundlage für die Strategie.
  2. Optimierung der Bedingungen für die Erzeugung von Kauf- und Verkaufssignalen, um die Genauigkeit und Zuverlässigkeit der Signale zu verbessern. Es kann in Betracht gezogen werden, die Analyse mehrerer Zeitrahmen einzuführen, um die Richtung der Trends zu bestätigen.
  3. Risikokontrollmaßnahmen wie Stop-Loss- und Positionsmanagement, angemessene Stop-Loss- und Positionsgrößen und die Risikothek für Einzelgeschäfte.
  4. Parameteroptimierung und Rückverfolgung der Strategie, um die optimale Kombination von Parametern und den Marktzugang zu ermitteln.
  5. Erwägen Sie, diese Strategie mit anderen Strategien zu kombinieren, um die Vorteile der verschiedenen Strategien zu nutzen und die Stabilität und Ertragsfähigkeit insgesamt zu verbessern.

Zusammenfassen

Die Strategie hat den Vorteil, dass sie die Verteilung von Preisen und Transaktionen visuell darstellt und verschiedene Faktoren berücksichtigt, um Signale zu erzeugen. Es gibt jedoch auch einige Einschränkungen und Risiken, wie die Auswirkungen von Parameter-Einstellungen, die Rückständigkeit der Indikatoren und die Abhängigkeit von trendigen Märkten. Daher müssen die Strategien in der Praxis weiter optimiert und verbessert werden, um die Stabilität und Profitabilität der Strategie zu verbessern.

Strategiequellcode
/*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)