Sumber daya yang dimuat... Pemuatan...

Pembelian dan Penjualan Heatmap Volume dengan Real-Time Strategi Harga

Penulis:ChaoZhang, Tanggal: 2024-05-24 17:16:58
Tag:EMAVWAPSMA

img

Gambaran umum

Strategi ini menggabungkan peta panas volume dan harga real-time untuk menghasilkan sinyal beli dan jual dengan menganalisis distribusi harga dan volume selama periode tertentu. Strategi pertama menghitung beberapa tingkat harga berdasarkan harga saat ini dan persentase kisaran harga yang ditetapkan. Kemudian menghitung volume beli dan jual di setiap tingkat harga selama periode yang lalu dan menghitung volume beli dan jual kumulatif. Warna label ditentukan berdasarkan volume beli dan jual kumulatif. Selain itu, strategi memetakan kurva harga real-time. Selain itu, strategi menggabungkan indikator seperti EMA dan VWAP untuk menghasilkan sinyal beli dan jual berdasarkan hubungan mereka dengan harga dan volume.

Prinsip Strategi

  1. Menghitung beberapa tingkat harga berdasarkan harga saat ini dan persentase rentang harga yang ditetapkan.
  2. Hitung volume pembelian dan penjualan pada setiap tingkat harga selama periode yang lalu dan hitung volume pembelian dan penjualan kumulatif.
  3. Tentukan warna label berdasarkan volume pembelian dan penjualan kumulatif dan tampilkan label atau bentuk grafik.
  4. Buat grafik kurva harga real-time.
  5. Menghitung indikator seperti EMA dan VWAP.
  6. Tentukan apakah kondisi beli dipenuhi berdasarkan hubungan antara harga dan indikator seperti EMA dan VWAP, serta kondisi volume.
  7. Tentukan apakah kondisi jual dipenuhi berdasarkan hubungan antara harga dan indikator seperti EMA, serta kondisi volume. Jika dipenuhi dan tidak ada sinyal sebelumnya, menghasilkan sinyal jual. Jika ada dua lilin merah berturut-turut dan tidak ada sinyal sebelumnya, juga menghasilkan sinyal jual.
  8. Catat kondisi kondisi beli dan jual saat ini dan perbarui status kejadian sinyal.

Analisis Keuntungan

  1. Kombinasi peta panas volume dan harga real-time memberikan tampilan intuitif dari distribusi harga dan volume, yang berfungsi sebagai referensi untuk keputusan perdagangan.
  2. Penggabungan indikator seperti EMA dan VWAP memperkaya penilaian kondisi strategi dan meningkatkan keandalan.
  3. Strategi ini mempertimbangkan beberapa faktor, termasuk harga, indikator, dan volume, membuat sinyal beli dan jual lebih komprehensif dan kuat.
  4. Strategi ini menetapkan batasan pada generasi sinyal untuk menghindari menghasilkan sinyal berulang secara terus menerus, mengurangi sinyal yang menyesatkan.

Analisis Risiko

  1. Kinerja strategi dapat dipengaruhi oleh pengaturan parameter seperti persentase kisaran harga dan periode review, yang membutuhkan penyesuaian dan optimalisasi berdasarkan situasi tertentu.
  2. Indikator seperti EMA dan VWAP memiliki keterlambatan dan keterbatasan yang melekat, yang dapat menjadi tidak efektif dalam lingkungan pasar tertentu.
  3. Strategi ini terutama cocok untuk pasar tren dan dapat menghasilkan lebih banyak sinyal palsu di pasar bergolak.
  4. Langkah-langkah pengendalian risiko strategi relatif sederhana, tidak memiliki alat manajemen risiko seperti stop loss dan ukuran posisi.

Arah Optimalisasi

  1. Memperkenalkan lebih banyak indikator teknis dan indikator sentimen pasar, seperti RSI, MACD, Bollinger Bands, dll, untuk memperkaya dasar penilaian strategi.
  2. Mengoptimalkan kondisi untuk menghasilkan sinyal beli dan jual untuk meningkatkan akurasi dan keandalan sinyal.
  3. Menggabungkan langkah-langkah pengendalian risiko seperti stop-loss dan ukuran posisi, menetapkan tingkat stop-loss yang wajar dan ukuran posisi untuk mengontrol eksposur risiko dari perdagangan individu.
  4. Melakukan optimasi parameter dan backtesting pada strategi untuk menemukan kombinasi parameter optimal dan penerapan pasar.
  5. Pertimbangkan untuk menggabungkan strategi ini dengan strategi lain untuk memanfaatkan kekuatan strategi yang berbeda dan meningkatkan stabilitas dan profitabilitas secara keseluruhan.

Ringkasan

Strategi ini menghasilkan sinyal beli dan jual dengan menggabungkan peta panas volume, harga real-time, dan beberapa indikator teknis, memberikan nilai referensi tertentu. Keuntungan dari strategi ini terletak pada kemampuannya untuk menampilkan distribusi harga dan volume secara intuitif dan secara komprehensif mempertimbangkan beberapa faktor untuk menghasilkan sinyal. Namun, strategi ini juga memiliki beberapa keterbatasan dan risiko, seperti dampak pengaturan parameter, sifat keterlambatan indikator, dan ketergantungan pada pasar tren. Oleh karena itu, dalam aplikasi praktis, optimasi dan peningkatan strategi lebih lanjut diperlukan, seperti memperkenalkan lebih banyak indikator, mengoptimalkan kondisi sinyal, meningkatkan kontrol risiko, dll, untuk meningkatkan ketahanan dan profitabilitas strategi.


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


Berkaitan

Lebih banyak