Sumber dimuat naik... memuat...

Beli dan Jual Heatmap Volume dengan Strategi Harga Masa Nyata

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

img

Ringkasan

Strategi ini menggabungkan peta haba jumlah dan harga masa nyata untuk menjana isyarat beli dan jual dengan menganalisis pengedaran harga dan jumlah dalam tempoh tertentu. Strategi pertama mengira beberapa tahap harga berdasarkan harga semasa dan peratusan julat harga yang ditetapkan. Ia kemudian mengira jumlah beli dan jual pada setiap tahap harga dalam tempoh yang lalu dan mengira jumlah beli dan jual kumulatif. Warna label ditentukan berdasarkan jumlah beli dan jual kumulatif. Di samping itu, strategi merangka kurva harga masa nyata. Di samping itu, strategi menggabungkan penunjuk seperti EMA dan VWAP untuk menjana isyarat beli dan jual berdasarkan hubungan mereka dengan harga dan jumlah. Isyarat beli dihasilkan apabila syarat beli dipenuhi, dan tiada isyarat terdahulu berlaku. Isyarat jual dihasilkan apabila syarat jual dipenuhi, atau terdapat dua lilin merah berturut-turut, dan tiada isyarat terdahulu berlaku.

Prinsip Strategi

  1. Mengira beberapa tahap harga berdasarkan harga semasa dan peratusan julat harga yang ditetapkan.
  2. Mengira jumlah beli dan jual pada setiap tahap harga dalam tempoh yang lalu dan mengira jumlah beli dan jual kumulatif.
  3. Menentukan warna label berdasarkan jumlah pembelian dan penjualan yang terkumpul dan memaparkan label atau bentuk grafik.
  4. Menggambar lengkung harga masa nyata.
  5. Mengira penunjuk seperti EMA dan VWAP.
  6. Tentukan sama ada syarat beli dipenuhi berdasarkan hubungan antara harga dan penunjuk seperti EMA dan VWAP, serta syarat jumlah.
  7. Tentukan sama ada syarat jual dipenuhi berdasarkan hubungan antara harga dan penunjuk seperti EMA, serta syarat jumlah. Jika dipenuhi dan tiada isyarat sebelumnya berlaku, menjana isyarat jual. Jika terdapat dua lilin merah berturut-turut dan tiada isyarat sebelumnya berlaku, juga menjana isyarat jual.
  8. Mencatatkan keadaan keadaan beli dan jual semasa dan mengemas kini status kejadian isyarat.

Analisis Kelebihan

  1. Gabungan peta haba jumlah dan harga masa nyata menyediakan paparan intuitif mengenai pembahagian harga dan jumlah, berfungsi sebagai rujukan untuk keputusan perdagangan.
  2. Penggabungan penunjuk seperti EMA dan VWAP memperkaya penilaian keadaan strategi dan meningkatkan kebolehpercayaannya.
  3. Strategi ini mempertimbangkan pelbagai faktor, termasuk harga, penunjuk, dan jumlah, menjadikan isyarat beli dan jual lebih komprehensif dan kukuh.
  4. Strategi ini menetapkan batasan untuk penjanaan isyarat untuk mengelakkan penjanaan isyarat berulang secara berterusan, mengurangkan isyarat yang mengelirukan.

Analisis Risiko

  1. Prestasi strategi boleh dipengaruhi oleh tetapan parameter seperti peratusan julat harga dan tempoh melihat semula, yang memerlukan penyesuaian dan pengoptimuman berdasarkan situasi tertentu.
  2. Penunjuk seperti EMA dan VWAP mempunyai kelewatan dan batasan yang melekat, yang mungkin menjadi tidak berkesan dalam persekitaran pasaran tertentu.
  3. Strategi ini terutamanya sesuai untuk pasaran yang sedang berkembang dan boleh menghasilkan lebih banyak isyarat palsu di pasaran yang bergolak.
  4. Langkah-langkah kawalan risiko strategi ini agak mudah, tidak mempunyai alat pengurusan risiko seperti stop-loss dan saiz kedudukan.

Arah pengoptimuman

  1. Memperkenalkan lebih banyak penunjuk teknikal dan penunjuk sentimen pasaran, seperti RSI, MACD, Bollinger Bands, dan lain-lain, untuk memperkayakan asas penilaian strategi.
  2. Mengoptimumkan keadaan untuk menjana isyarat beli dan jual untuk meningkatkan ketepatan isyarat dan kebolehpercayaan.
  3. Menggabungkan langkah kawalan risiko seperti stop-loss dan saiz kedudukan, menetapkan tahap stop-loss yang munasabah dan saiz kedudukan untuk mengawal pendedahan risiko perdagangan individu.
  4. Melakukan pengoptimuman parameter dan pengujian semula strategi untuk mencari kombinasi parameter yang optimum dan penerapan pasaran.
  5. Pertimbangkan untuk menggabungkan strategi ini dengan strategi lain untuk memanfaatkan kekuatan strategi yang berbeza dan meningkatkan kestabilan dan keuntungan keseluruhan.

Ringkasan

Strategi ini menjana isyarat beli dan jual dengan menggabungkan peta haba jumlah, harga masa nyata, dan beberapa penunjuk teknikal, menyediakan nilai rujukan tertentu. Keuntungan strategi ini terletak pada kemampuannya untuk menampilkan pembahagian harga dan jumlah secara intuitif dan secara menyeluruh mempertimbangkan beberapa faktor untuk menjana isyarat. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan dan risiko, seperti kesan tetapan parameter, sifat ketinggalan indikator, dan bergantung pada pasaran trend. Oleh itu, dalam aplikasi praktikal, pengoptimuman dan peningkatan strategi yang lebih lanjut diperlukan, seperti memperkenalkan lebih banyak penunjuk, mengoptimumkan keadaan isyarat, meningkatkan kawalan risiko, dan lain-lain, untuk meningkatkan kekuatan dan keuntungan 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 lanjut