VWMA-ADX Momentum dan Strategi Lama Bitcoin Berasaskan Trend

Penulis:ChaoZhang, Tarikh: 2024-04-03 17:47:49
Tag:VWMAADXDMISMAEMARMAWMAHMASMMA

img

Ringkasan

Strategi ini menggunakan pelbagai purata bergerak (VWMA), Indeks Arah Purata (ADX), dan Penunjuk Pergerakan Arah (DMI) untuk menangkap peluang panjang di pasaran Bitcoin. Dengan menggabungkan momentum harga, arah trend, dan jumlah dagangan, strategi ini bertujuan untuk mencari titik masuk dengan trend menaik yang kuat dan momentum yang mencukupi sambil mengawal risiko dengan ketat.

Prinsip Strategi

  1. Gunakan VWMA 9 hari dan 14 hari untuk menentukan trend panjang. Isyarat menaik dihasilkan apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang.
  2. Memperkenalkan purata bergerak adaptif yang dibina dari harga tertinggi dan terendah 89 hari VWMA sebagai penapis trend.
  3. Meneguhkan kekuatan trend menggunakan penunjuk ADX dan DMI. Trend dianggap cukup kuat hanya apabila ADX lebih besar daripada 18 dan perbezaan antara +DI dan -DI lebih besar daripada 15.
  4. Menyaring bar dengan jumlah dagangan antara 60% dan 95% persentil menggunakan fungsi persentil volum untuk mengelakkan tempoh dengan jumlah dagangan yang rendah.
  5. Tetapkan tahap stop-loss pada 0.96 hingga 0.99 kali tinggi lilin sebelumnya, berkurangan apabila jangka masa meningkat untuk mengawal risiko.
  6. Tutup kedudukan apabila masa penahan yang telah ditetapkan dicapai atau harga jatuh di bawah purata bergerak adaptif.

Analisis Kelebihan

  1. Dengan menggabungkan beberapa penunjuk teknikal, strategi ini menilai keadaan pasaran dari pelbagai dimensi seperti trend, momentum, dan jumlah dagangan, menjadikan isyarat lebih boleh dipercayai.
  2. Mekanisme penapisan purata bergerak adaptif dan jumlah dagangan secara berkesan menapis isyarat palsu dan mengurangkan dagangan yang tidak sah.
  3. Tetapan stop-loss yang ketat dan had masa memegang sangat mengurangkan pendedahan risiko strategi.
  4. Reka bentuk modular kod meningkatkan kebolehbacaan dan penyelenggaraan, memudahkan pengoptimuman dan pengembangan lanjut.

Analisis Risiko

  1. Apabila pasaran turun naik atau trend tidak jelas, strategi boleh menghasilkan lebih banyak isyarat palsu.
  2. Tahap stop-loss agak ketat, yang boleh mencetuskan stop-out awal dan membawa kepada peningkatan kerugian semasa turun naik pasaran yang besar.
  3. Strategi ini tidak mempertimbangkan keadaan makroekonomi dan peristiwa penting, dan mungkin gagal menghadapi peristiwa black swan .
  4. Tetapan parameter agak tetap dan tidak dapat disesuaikan, yang boleh mengakibatkan prestasi yang tidak stabil dalam persekitaran pasaran yang berbeza.

Arahan pengoptimuman

  1. Memperkenalkan lebih banyak penunjuk yang dapat menangkap keadaan pasaran, seperti Indeks Kekuatan Relatif (RSI) dan Bollinger Bands, untuk meningkatkan kebolehpercayaan isyarat.
  2. Mengoptimumkan tahap stop-loss secara dinamik, sebagai contoh, dengan menggunakan Julat Benar Purata (ATR) atau stop-loss berasaskan peratusan, untuk menyesuaikan diri dengan keadaan turun naik pasaran yang berbeza.
  3. Meningkatkan modul kawalan risiko strategi dengan memasukkan data makroekonomi dan analisis sentimen.
  4. Menggunakan algoritma pembelajaran mesin untuk mengoptimumkan parameter secara automatik, meningkatkan kebolehsesuaian dan kestabilan strategi.

Ringkasan

Strategi Bitcoin Long VWMA-ADX berkesan menangkap peluang menaik di pasaran Bitcoin dengan mempertimbangkan secara komprehensif trend harga, momentum, jumlah dagangan, dan penunjuk teknikal lain. Pada masa yang sama, langkah-langkah kawalan risiko yang ketat dan syarat keluar yang jelas memastikan bahawa risiko strategi dikendalikan dengan baik. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan, seperti ketidakupayaan yang mencukupi untuk menyesuaikan diri dengan persekitaran pasaran yang berubah dan keperluan untuk strategi stop-loss yang dioptimumkan. Pada masa akan datang, penambahbaikan boleh dibuat dari segi kebolehpercayaan isyarat, kawalan risiko, dan pengoptimuman parameter untuk meningkatkan lagi kekuatan dan keuntungan strategi Bitcoin. Secara keseluruhan, Strategi Bitcoin Long VWMA-ADX menyediakan pelabur dengan pendekatan perdagangan sistematik berdasarkan momentum dan trend, yang patut dieksplorasi dan disempurnakan.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Q_D_Nam_N_96

//@version=5
strategy("Long BTC Strategy", overlay=true, 
     default_qty_type = strategy.percent_of_equity, 
     default_qty_value = 100, initial_capital = 1000, currency = currency.USD)

Volume_Quartile(vol) =>
    qvol1 = ta.percentile_linear_interpolation(vol, 60,15)
    qvol2 = ta.percentile_linear_interpolation(vol, 60,95)
    vol > qvol1 and vol < qvol2

smma(src, length) =>
	smma =  0.0
	smma := na(smma[1]) ? ta.sma(src, length) : (smma[1] * (length - 1) + src) / length
	smma

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "RMA" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)
        "HMA" => ta.hma(source, length)
        "SMMA" => smma(source, length)

DMI(len, lensig) =>
    up = ta.change(high)
    down = -ta.change(low)
    plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
    trur = ta.rma(ta.tr, len)
    plus = fixnan(100 * ta.rma(plusDM, len) / trur)+11
    minus = fixnan(100 * ta.rma(minusDM, len) / trur)-11
    sum = plus + minus
    adx = 100 * ta.vwma(math.abs(plus - minus-11) / (sum == 0 ? 1 : sum), lensig)

    [adx, plus, minus]

cond1 = Volume_Quartile(volume*hlcc4)

ma1 = ma(close,9, "VWMA")
// plot(ma1, color = color.blue)
ma2 = ma(close,14, "VWMA")
// plot(ma2, color = color.orange)

n = switch timeframe.period
    "240" => 0.997
    => 0.995

ma3 = (0.1*ma(ta.highest(close,89),89, "VWMA") + 
     0.9*ma(ta.lowest(close,89),89, "VWMA"))*n

plot(ma3, color = color.white)

[adx, plus, minus] = DMI(7, 10)


cond2 = adx > 18 and plus - math.abs(minus) > 15

var int count = 0

if barstate.isconfirmed and strategy.position_size != 0
    count += 1
else
    count := 0

p_roc = 0
if timeframe.period == '240'
    p_roc := 14
else
    p_roc := 10

longCondition = ta.crossover(ma1, ma2) and (close > open ? close > ma3 : open > ma3) and ((ma3 - ma3[1])*100/ma3[1] >= -0.2) and ((close-close[p_roc])*100/close[p_roc] > -2.0)
float alpha = 0.0
float sl_src = high[1]
if (longCondition and cond1 and cond2 and strategy.position_size == 0)
    strategy.entry("buy", strategy.long)
    if timeframe.period == '240'
        alpha := 0.96
        strategy.exit("exit-buy","buy", stop = sl_src*alpha)
        // line.new(bar_index, sl_src*alpha, bar_index+5, sl_src*alpha, width = 2, color = color.white)
    else if timeframe.period == '30'
        alpha := 0.985
        strategy.exit("exit-buy","buy", stop = sl_src*alpha)
        // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white)
    else if timeframe.period == '45'
        alpha := 0.985
        strategy.exit("exit-buy","buy", stop = sl_src*alpha)
        // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white)
    else if timeframe.period == '60'
        alpha := 0.98
        strategy.exit("exit-buy","buy", stop = sl_src*alpha)
        // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white)
    else if timeframe.period == '120'
        alpha := 0.97
        strategy.exit("exit-buy","buy", stop = sl_src*alpha)
        // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white)
    else if timeframe.period == '180'
        alpha := 0.96
        strategy.exit("exit-buy","buy", stop = sl_src*alpha)
        // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white)
    else if timeframe.period == 'D'
        alpha := 0.95
        strategy.exit("exit-buy","buy", stop = sl_src*alpha)
        // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white)
    else 
        alpha := 0.93
        strategy.exit("exit-buy","buy", stop = sl_src*alpha)
        // line.new(bar_index, sl_src*alpha, bar_index+20, sl_src*alpha, width = 2, color = color.white)

period = switch timeframe.period
    "240" => 90
    "180" => 59
    "120" => 35
    "30" => 64
    "45" => 40
    "60" => 66
    "D" => 22
    => 64

if (count > period or close < ma3)
    strategy.close('buy', immediately = true) 

Berkaitan

Lebih lanjut

qazwsz888Lebih baik tambah penangkal mudah alih.