Sumber daya yang dimuat... Pemuatan...

Strategi Crossover Momentum Moving Average Tertimbang Likuiditas

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

 Liquidity-Weighted Moving Average Momentum Crossover Strategy

Gambaran umum

Strategi ini adalah sistem perdagangan yang didasarkan pada rata-rata bergerak tertimbang likuiditas, mengukur likuiditas pasar melalui hubungan antara pergerakan harga dan volume perdagangan. Ini membangun rata-rata bergerak cepat dan lambat untuk menghasilkan sinyal beli ketika garis cepat melintasi di atas garis lambat dan sinyal jual ketika melintasi di bawahnya. Strategi ini terutama berfokus pada peristiwa likuiditas abnormal, mencatat tingkat harga kunci dalam array untuk peluang perdagangan yang lebih tepat.

Prinsip Strategi

Mekanisme inti didasarkan pada pengukuran likuiditas pasar melalui rasio volume terhadap pergerakan harga. 1. Menghitung indikator likuiditas: Volume dibagi dengan perbedaan absolut antara harga tutup dan harga buka 2. Tetapkan batas likuiditas: Identifikasi likuiditas abnormal menggunakan EMA dan standar deviasi 3. Mempertahankan array harga: Mencatat harga ketika batas likuiditas dilanggar 4. Membangun rata-rata bergerak: Menghitung EMA cepat dan lambat berdasarkan peristiwa likuiditas 5. Membuat sinyal perdagangan: Menentukan titik masuk dan keluar melalui crossover rata-rata bergerak

Keuntungan Strategi

  1. Kesadaran likuiditas: Lebih akurat menangkap aktivitas pasar dengan menggabungkan pergerakan volume dan harga
  2. Pelacakan peristiwa: mencatat tingkat harga kunci melalui implementasi array, mencegah kesempatan yang hilang
  3. Adaptasi Dinamis: Penurunan bobot EMA memungkinkan penyesuaian pasar yang lebih baik
  4. Kontrol risiko: Menyediakan sinyal masuk dan keluar yang jelas melalui persimpangan
  5. Kemampuan penyesuaian: Beberapa parameter yang dapat disesuaikan untuk kondisi pasar yang berbeda

Risiko Strategi

  1. Sensitivitas parameter: Efektivitas strategi sangat tergantung pada pengaturan parameter
  2. Lag: Penundaan yang melekat pada sistem berbasis rata-rata bergerak
  3. Ketergantungan pasar: Kinerja yang tidak stabil dalam jangka waktu dan pasar tertentu
  4. Fake breakout: Dapat menghasilkan sinyal yang salah selama volatilitas tinggi
  5. Biaya transaksi: Perdagangan yang sering dapat menimbulkan biaya yang signifikan

Arahan Optimasi

  1. Filter pelaksanaan:
  • Tambahkan indikator konfirmasi tren seperti ADX
  • Menggunakan indikator volatilitas untuk menyaring sinyal palsu
  1. Meningkatkan waktu masuk:
  • Masukkan level support dan resistance
  • Pertimbangkan konfirmasi volume keluar
  1. Optimalkan pilihan parameter:
  • Mengimplementasikan parameter adaptif
  • Sesuaikan secara dinamis berdasarkan kondisi pasar
  1. Meningkatkan manajemen risiko:
  • Tambahkan mekanisme stop loss dan take profit
  • Mengimplementasikan sistem ukuran posisi

Ringkasan

Strategi inovatif ini menggabungkan analisis likuiditas dengan indikator teknis, mengoptimalkan sistem crossover rata-rata bergerak tradisional dengan memantau anomali likuiditas pasar. Meskipun menunjukkan hasil yang menjanjikan dalam kondisi pasar tertentu, pengoptimalan lebih lanjut diperlukan untuk meningkatkan stabilitas dan penerapan. Pedagang harus menguji secara menyeluruh sebelum implementasi langsung dan mempertimbangkan untuk menggabungkan dengan indikator lain untuk sistem perdagangan yang lebih kuat.


/*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 banyak