Strategi beli dan jual berdasarkan peta haba volum dan harga masa nyata

EMA VWAP SMA
Tarikh penciptaan: 2024-05-24 17:16:58 Akhirnya diubah suai: 2024-05-24 17:16:58
Salin: 2 Bilangan klik: 570
1
fokus pada
1617
Pengikut

Strategi beli dan jual berdasarkan peta haba volum dan harga masa nyata

Gambaran keseluruhan

Strategi ini menggabungkan grafik panas jumlah transaksi dan harga masa nyata untuk menghasilkan isyarat jual beli dengan menganalisis harga dan pengedaran jumlah transaksi dalam jangka masa tertentu. Strategi ini pertama-tama mengira beberapa tahap harga berdasarkan peratusan harga semasa dan julat harga yang ditetapkan. Kemudian mengkaji jumlah transaksi pembelian dan penjualan setiap tahap harga dalam jangka masa yang lalu dan mengira jumlah transaksi pembelian dan penjualan yang terkumpul.

Prinsip Strategi

  1. Beberapa tahap harga dikira berdasarkan peratusan harga semasa dan harga yang ditetapkan.
  2. Mengira jumlah dagangan yang dibeli dan dijual pada setiap tahap harga dalam tempoh masa yang lalu dan mengira jumlah dagangan yang dibeli dan dijual secara berturut-turut.
  3. Tentukan warna label dan paparkan label atau lukis grafik berdasarkan jumlah dagangan dan pembelian yang telah dikumpul.
  4. Menggambar kurva harga dalam masa nyata.
  5. Mengira EMA, VWAP dan sebagainya.
  6. Berdasarkan hubungan harga dengan indikator seperti EMA, VWAP dan syarat kuantiti urus niaga, dinilai sama ada syarat pembelian dipenuhi. Jika ia dipenuhi dan tidak menghasilkan isyarat sebelumnya, isyarat pembelian dihasilkan.
  7. Berdasarkan hubungan harga dengan indikator seperti EMA dan syarat kuantiti transaksi, menilai sama ada syarat jual memenuhi syarat. Jika dipenuhi dan tidak menghasilkan isyarat sebelumnya, maka menghasilkan isyarat jual. Jika terdapat dua saluran negatif berturut-turut dan tidak menghasilkan isyarat sebelumnya, maka menghasilkan isyarat jual.
  8. Rekodkan keadaan keadaan jual beli semasa dan mengemas kini keadaan penciptaan isyarat.

Analisis kelebihan

  1. Gabungan dengan carta panas dan harga masa nyata, ia dapat menunjukkan secara visual peredaran harga dan jumlah transaksi, memberikan rujukan untuk keputusan perdagangan.
  2. Memperkenalkan EMA, VWAP dan lain-lain, memperkaya penilaian syarat strategi dan meningkatkan kebolehpercayaan strategi.
  3. Ia juga mengambil kira pelbagai faktor seperti harga, indikator dan jumlah transaksi, yang menjadikan isyarat jual beli lebih komprehensif dan kukuh.
  4. Ia menetapkan syarat-syarat yang mengehadkan pengeluaran isyarat, mengelakkan keadaan yang menghasilkan isyarat berulang secara berturut-turut, dan mengurangkan isyarat yang mengelirukan.

Analisis risiko

  1. Prestasi strategi mungkin dipengaruhi oleh tetapan parameter seperti peratusan julat harga, tempoh pengembalian, dan lain-lain yang perlu disesuaikan dan dioptimumkan mengikut keadaan tertentu.
  2. EMA, VWAP dan lain-lain juga mempunyai kemunduran dan keterbatasan dan mungkin tidak berkesan dalam keadaan pasaran tertentu.
  3. Strategi ini digunakan terutamanya untuk pasaran yang lebih trendy, yang mungkin menghasilkan lebih banyak isyarat palsu di pasaran goyah.
  4. Langkah-langkah kawalan risiko strategi agak mudah, kekurangan kaedah pengurusan risiko seperti menghentikan kerugian dan pengurusan kedudukan.

Arah pengoptimuman

  1. Memperkenalkan lebih banyak petunjuk teknikal dan sentimen pasaran, seperti RSI, MACD, dan Bollinger Bands, untuk memperkaya dasar penilaian strategi.
  2. Mengoptimumkan keadaan untuk menghasilkan isyarat beli dan jual, meningkatkan ketepatan dan kebolehpercayaan isyarat. Anda boleh mempertimbangkan untuk memperkenalkan analisis beberapa bingkai masa untuk mengesahkan arah trend.
  3. Menambah langkah-langkah kawalan risiko seperti pengurusan hentian dan kedudukan, menetapkan hentian dan saiz kedudukan yang munasabah, mengawal had risiko untuk perdagangan tunggal.
  4. Optimasi parameter dan pengujian semula strategi untuk mencari kombinasi parameter yang optimum dan ruang lingkup penggunaan pasaran.
  5. Pertimbangkan untuk menggabungkan strategi ini dengan strategi lain untuk memanfaatkan kelebihan strategi yang berbeza dan meningkatkan kestabilan dan keuntungan secara keseluruhan.

ringkaskan

Strategi ini menghasilkan isyarat jual beli dengan menggabungkan carta panas volumes, harga masa nyata dan beberapa petunjuk teknikal, dan mempunyai nilai rujukan tertentu. Kelebihan strategi ini adalah dapat menunjukkan secara visual harga dan pengedaran volumes, dan mempertimbangkan pelbagai faktor untuk menghasilkan isyarat. Tetapi strategi ini juga mempunyai beberapa batasan dan risiko, seperti kesan parameter, keterbelakangan indikator, bergantung pada pasaran yang sedang tren, dan sebagainya. Oleh itu, dalam aplikasi sebenar, strategi perlu dioptimumkan dan disempurnakan, seperti memperkenalkan lebih banyak petunjuk, mengoptimumkan keadaan isyarat, meningkatkan kawalan risiko, dan sebagainya, untuk meningkatkan kestabilan dan keuntungan strategi.

Kod 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)