Sumber dimuat naik... memuat...

Strategi crossover momentum purata bergerak yang ditimbang likuiditi

Penulis:ChaoZhang, Tarikh: 2025-01-17 15:45:55
Tag:LWMAEMAVOLstdevSilang

 Liquidity-Weighted Moving Average Momentum Crossover Strategy

Ringkasan

Strategi ini adalah sistem perdagangan berdasarkan purata bergerak yang ditimbang kecairan, mengukur kecairan pasaran melalui hubungan antara pergerakan harga dan jumlah dagangan. Ia membina purata bergerak cepat dan perlahan untuk menjana isyarat beli apabila garis cepat melintasi di atas garis perlahan dan isyarat jual apabila melintasi di bawah. Strategi ini terutamanya memberi tumpuan kepada peristiwa kecairan yang tidak normal, merekodkan tahap harga utama dalam array untuk peluang perdagangan yang lebih tepat.

Prinsip Strategi

Mekanisme teras bergantung pada pengukuran kecairan pasaran melalui nisbah jumlah ke pergerakan harga. 1. Mengira penunjuk kecairan: Volume dibahagikan dengan perbezaan mutlak antara harga penutupan dan harga terbuka 2. Tetapkan had kecairan: mengenal pasti kecairan yang tidak normal menggunakan EMA dan penyimpangan standard 3. Pertahankan susunan harga: Rekod harga apabila batas kecairan dilanggar 4. Membina purata bergerak: Mengira EMA pantas dan perlahan berdasarkan peristiwa kecairan 5. Membuat isyarat perdagangan: Tentukan titik masuk dan keluar melalui persilangan purata bergerak

Kelebihan Strategi

  1. Kesedaran kecairan: Mencatatkan aktiviti pasaran dengan lebih tepat dengan menggabungkan pergerakan jumlah dan harga
  2. Pengesanan peristiwa: Mencatatkan tahap harga utama melalui pelaksanaan array, mengelakkan peluang yang hilang
  3. Penyesuaian dinamik: penurunan berat EMA membolehkan penyesuaian pasaran yang lebih baik
  4. Kawalan risiko: Menyediakan isyarat masuk dan keluar yang jelas melalui persimpangan
  5. Keupayaan untuk disesuaikan: Pelbagai parameter yang boleh disesuaikan untuk keadaan pasaran yang berbeza

Risiko Strategi

  1. Sensitiviti parameter: Keberkesanan strategi sangat bergantung kepada tetapan parameter
  2. Lag: Kelewatan dalam sistem berasaskan purata bergerak
  3. Kebergantungan pasaran: Prestasi yang tidak stabil dalam jangka masa dan pasaran tertentu
  4. Penembusan palsu: Boleh menghasilkan isyarat yang salah semasa turun naik yang tinggi
  5. Kos urus niaga: Perdagangan yang kerap boleh menimbulkan kos yang besar

Arahan pengoptimuman

  1. Pelaksanaan penapis:
  • Tambah penunjuk pengesahan trend seperti ADX
  • Gunakan penunjuk turun naik untuk menapis isyarat palsu
  1. Meningkatkan masa kemasukan:
  • Menggabungkan tahap sokongan dan rintangan
  • Pertimbangkan pengesahan kelancaran jumlah
  1. Mengoptimumkan pilihan parameter:
  • Melaksanakan parameter penyesuaian
  • Sesuaikan secara dinamik berdasarkan keadaan pasaran
  1. Meningkatkan pengurusan risiko:
  • Tambahkan mekanisme stop-loss dan mengambil keuntungan
  • Melaksanakan sistem ukuran kedudukan

Ringkasan

Strategi inovatif ini menggabungkan analisis kecairan dengan penunjuk teknikal, mengoptimumkan sistem crossover purata bergerak tradisional dengan memantau anomali kecairan pasaran. Walaupun ia menunjukkan hasil yang menjanjikan dalam keadaan pasaran tertentu, pengoptimuman lanjut diperlukan untuk meningkatkan kestabilan dan penerapan. Pedagang harus menguji dengan teliti sebelum pelaksanaan langsung dan mempertimbangkan untuk menggabungkan dengan penunjuk lain untuk sistem perdagangan yang lebih mantap.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-16 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//Liquidity ignoring price location

//@version=6
strategy("Liquidity Weighted Moving Averages [AlgoAlpha]", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)

// Inputs
outlierThreshold = input.int(10, "Outlier Threshold Length")
fastMovingAverageLength = input.int(50, "Fast MA Length")
slowMovingAverageLength = input.int(100, "Slow MA Length")
start_date = input(timestamp("2018-01-01 00:00"), title="Start Date")
end_date = input(timestamp("2069-12-31 23:59"), title="End Date")

// Define liquidity based on volume and price movement
priceMovementLiquidity = volume / math.abs(close - open)

// Calculate the boundary for liquidity to identify outliers
liquidityBoundary = ta.ema(priceMovementLiquidity, outlierThreshold) + ta.stdev(priceMovementLiquidity, outlierThreshold)

// Initialize an array to store liquidity values when they cross the boundary
var liquidityValues = array.new_float(5)

// Check if the liquidity crosses above the boundary and update the array
if ta.crossover(priceMovementLiquidity, liquidityBoundary)
    array.insert(liquidityValues, 0, close)
    if array.size(liquidityValues) > 5
        array.pop(liquidityValues)

// Calculate the Exponential Moving Averages for the close price at the last liquidity crossover
fastEMA = ta.ema(array.size(liquidityValues) > 0 ? array.get(liquidityValues, 0) : na, fastMovingAverageLength)
slowEMA = ta.ema(array.size(liquidityValues) > 0 ? array.get(liquidityValues, 0) : na, slowMovingAverageLength)

// Trading Logic
in_date_range = true
buy_signal = ta.crossover(fastEMA, slowEMA) and in_date_range
sell_signal = ta.crossunder(fastEMA, slowEMA) and in_date_range

// Strategy Entry and Exit
if (buy_signal)
    strategy.entry("Buy", strategy.long)

if (sell_signal)
    strategy.close("Buy")

// Plotting
fastPlot = plot(fastEMA, color=fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50), title="Fast EMA")
slowPlot = plot(slowEMA, color=fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50), title="Slow EMA")

// Create a fill between the fast and slow EMA plots with appropriate color based on crossover
fill(fastPlot, slowPlot, fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50))


Berkaitan

Lebih lanjut