Strategi beli dan jual berdasarkan peta panas volume dan harga waktu nyata

EMA VWAP SMA
Tanggal Pembuatan: 2024-05-24 17:16:58 Akhirnya memodifikasi: 2024-05-24 17:16:58
menyalin: 2 Jumlah klik: 570
1
fokus pada
1617
Pengikut

Strategi beli dan jual berdasarkan peta panas volume dan harga waktu nyata

Ringkasan

Strategi ini menggabungkan grafik panas volume transaksi dan harga real-time untuk menghasilkan sinyal jual beli dengan menganalisis harga dan distribusi volume transaksi dalam jangka waktu tertentu. Strategi ini pertama-tama menghitung beberapa tingkat harga berdasarkan persentase harga saat ini dan kisaran harga yang ditetapkan. Kemudian menghitung volume jual beli setiap tingkat harga dalam jangka waktu yang lalu dan menghitung volume jual beli yang terakumulasi.

Prinsip Strategi

  1. Beberapa tingkat harga dihitung berdasarkan harga saat ini dan persentase dari kisaran harga yang ditetapkan.
  2. Perhitungkan volume transaksi jual beli pada setiap tingkat harga selama periode waktu yang lalu, dan hitung jumlah transaksi jual beli yang terakumulasi.
  3. Tentukan warna label, dan tampilkan label atau gambar berdasarkan jumlah transaksi pembelian dan penjualan yang terakumulasi.
  4. Menggambar kurva harga real-time.
  5. Menghitung indikator seperti EMA, VWAP.
  6. Berdasarkan hubungan antara harga dengan indikator seperti EMA, VWAP dan kondisi volume transaksi, dinilai apakah kondisi pembelian terpenuhi. Jika terpenuhi dan tidak ada sinyal sebelumnya, sinyal beli dihasilkan.
  7. Berdasarkan hubungan antara harga dengan indikator seperti EMA dan kondisi volume transaksi, menilai apakah memenuhi syarat jual. Jika memenuhi dan tidak pernah menghasilkan sinyal sebelumnya, maka menghasilkan sinyal jual. Jika dua garis negatif berturut-turut dan tidak pernah menghasilkan sinyal sebelumnya, maka menghasilkan sinyal jual.
  8. Mencatat kondisi saat ini dan memperbarui status sinyal.

Analisis Keunggulan

  1. Kombinasi grafik panas volume transaksi dan harga real-time, dapat secara intuitif menunjukkan distribusi harga dan volume transaksi, memberikan referensi untuk keputusan perdagangan.
  2. Menggunakan indikator seperti EMA, VWAP, dan lain-lain untuk memperkaya penilaian kondisional strategi, meningkatkan keandalan strategi.
  3. Selain itu, faktor-faktor seperti harga, indikator, dan volume transaksi juga dipertimbangkan untuk membuat sinyal jual beli lebih komprehensif dan lebih kuat.
  4. Setting the limitation conditions of the signal generation, menghindari terjadinya pengulangan sinyal secara berurutan, dan mengurangi sinyal yang menyesatkan.

Analisis risiko

  1. Kinerja strategi dapat dipengaruhi oleh pengaturan parameter seperti persentase kisaran harga, periode pengembalian, dan lain-lain, yang perlu disesuaikan dan dioptimalkan sesuai dengan situasi spesifik.
  2. Indikator seperti EMA, VWAP, dan lain-lain juga memiliki keterlambatan dan keterbatasan, dan dalam beberapa kondisi pasar mungkin tidak berlaku.
  3. Strategi ini terutama berlaku untuk pasar yang cenderung kuat, di mana pasar yang bergoyang dapat menghasilkan lebih banyak sinyal palsu.
  4. Strategi pengendalian risiko yang relatif sederhana, kurangnya sarana manajemen risiko seperti stop loss dan manajemen posisi.

Arah optimasi

  1. Memperkenalkan lebih banyak indikator teknis dan indikator sentimen pasar, seperti RSI, MACD, dan Bollinger Bands, untuk memperkaya dasar penilaian strategi.
  2. Optimalkan kondisi untuk menghasilkan sinyal jual beli, meningkatkan akurasi dan keandalan sinyal. Anda dapat mempertimbangkan untuk memasukkan analisis beberapa kerangka waktu untuk mengkonfirmasi arah tren.
  3. Menambahkan langkah-langkah pengendalian risiko seperti pengelolaan stop loss dan posisi, mengatur stop loss dan ukuran posisi yang masuk akal, dan mengontrol ambang risiko transaksi tunggal.
  4. Optimasi dan pengujian parameter terhadap strategi untuk menemukan kombinasi parameter dan ruang lingkup pasar yang optimal.
  5. Pertimbangkan untuk menggabungkan strategi ini dengan strategi lain untuk memanfaatkan keunggulan dari strategi yang berbeda dan meningkatkan stabilitas dan keuntungan secara keseluruhan.

Meringkaskan

Strategi ini menggabungkan grafik panas volume, harga real-time dan beberapa indikator teknis untuk menghasilkan sinyal jual beli dengan nilai acuan tertentu. Keuntungan dari strategi ini adalah kemampuan untuk secara visual menunjukkan distribusi harga dan volume transaksi, dan mempertimbangkan berbagai faktor untuk menghasilkan sinyal. Namun, strategi ini juga memiliki beberapa keterbatasan dan risiko, seperti pengaruh pengaturan parameter, keterbelakangan indikator, ketergantungan pada tren pasar, dll. Oleh karena itu, dalam aplikasi praktis, perlu lebih banyak strategi yang dioptimalkan dan disempurnakan, seperti memperkenalkan lebih banyak indikator, mengoptimalkan kondisi sinyal, meningkatkan kontrol risiko, dll.

Kode Sumber 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)