Strategi Momentum Crossover Berdasarkan Rata-rata Pergerakan Indeks Tertimbang Likuiditas

LWMA EMA VOL stdev CROSS
Tanggal Pembuatan: 2025-01-17 15:45:55 Akhirnya memodifikasi: 2025-01-17 15:45:55
menyalin: 0 Jumlah klik: 365
1
fokus pada
1617
Pengikut

Strategi Momentum Crossover Berdasarkan Rata-rata Pergerakan Indeks Tertimbang Likuiditas

Ringkasan

Strategi ini adalah sistem perdagangan yang didasarkan pada rata-rata pergerakan yang tertimbang likuiditas. Sistem ini mengukur likuiditas pasar dengan memantau hubungan antara fluktuasi harga dan volume perdagangan, dan membangun rata-rata pergerakan cepat dan lambat berdasarkan hal ini. Sinyal beli terbentuk saat garis cepat melintasi ke atas garis lambat, dan sinyal jual terbentuk saat garis cepat melintasi ke bawah. Strategi ini memberikan perhatian khusus pada peristiwa likuiditas abnormal dan mencatat titik harga utama melalui array, sehingga memberikan peluang perdagangan yang lebih akurat.

Prinsip Strategi

Inti dari strategi ini adalah mengukur likuiditas pasar melalui rasio volume perdagangan terhadap perubahan harga. Langkah-langkah implementasi spesifiknya adalah sebagai berikut:

  1. Hitung indikator likuiditas: Gunakan volume dibagi dengan nilai absolut dari perbedaan antara harga penutupan dan harga pembukaan
  2. Menetapkan Batasan Likuiditas: Mengidentifikasi Likuiditas Abnormal dengan EMA dan Deviasi Standar
  3. Pertahankan array harga: catat harga saat menembus batas likuiditas
  4. Membangun Rata-rata Pergerakan: Menghitung EMA Cepat dan Lambat berdasarkan Peristiwa Likuiditas
  5. Hasilkan sinyal perdagangan: tentukan titik beli dan jual melalui persilangan rata-rata pergerakan

Keunggulan Strategis

  1. Persepsi likuiditas: Dengan menggabungkan volume perdagangan dengan perubahan harga, dapat menangkap aktivitas pasar dengan lebih akurat.
  2. Pelacakan peristiwa abnormal: mencatat titik harga utama melalui array untuk menghindari hilangnya peluang pasar yang penting
  3. Adaptasi Dinamis: Fitur pengurangan bobot EMA memungkinkan strategi untuk beradaptasi lebih baik terhadap perubahan pasar
  4. Pengendalian risiko: Memberikan sinyal masuk dan keluar yang jelas melalui persilangan rata-rata pergerakan
  5. Kustomisasi: Beberapa parameter dapat disesuaikan untuk beradaptasi dengan lingkungan pasar yang berbeda

Risiko Strategis

  1. Sensitivitas parameter: Efek dari strategi sangat bergantung pada pengaturan parameter dan perlu terus dioptimalkan
  2. Lag: Sistem yang berdasarkan rata-rata bergerak memiliki kelambatan yang melekat
  3. Ketergantungan pasar: kinerja yang tidak stabil dalam periode waktu dan pasar tertentu
  4. Penembusan palsu: Dapat menghasilkan sinyal palsu selama periode volatilitas tinggi
  5. Biaya transaksi: Transaksi yang sering terjadi dapat mengakibatkan biaya yang lebih tinggi

Arah optimasi strategi

  1. Perkenalkan filternya:
  • Tambahkan indikator konfirmasi tren seperti ADX
  • Menggunakan indikator volatilitas untuk menyaring sinyal palsu
  1. Waktu masuk yang lebih baik:
  • Menggabungkan level support dan resistance
  • Pertimbangkan konfirmasi penembusan volume
  1. Pemilihan parameter optimasi:
  • Menerapkan parameter adaptif
  • Penyesuaian dinamis berdasarkan kondisi pasar
  1. Peningkatan manajemen risiko:
  • Tambahkan mekanisme stop loss dan take profit
  • Menerapkan sistem manajemen pergudangan

Meringkaskan

Ini adalah strategi inovatif yang menggabungkan analisis likuiditas dengan indikator teknis, mengoptimalkan sistem persilangan rata-rata pergerakan tradisional dengan memantau anomali likuiditas pasar. Meskipun berkinerja baik di lingkungan pasar tertentu, masih memerlukan pengoptimalan lebih lanjut untuk meningkatkan stabilitas dan penerapan. Disarankan agar pedagang melakukan pengujian yang memadai sebelum penggunaan waktu nyata dan menggabungkannya dengan indikator lain untuk membangun sistem perdagangan yang lebih lengkap.

Kode Sumber Strategi
/*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))