Strategi Mengikuti Aliran dengan Pecahan Harga Purata Pergerakan


Tarikh penciptaan: 2024-01-26 15:18:29 Akhirnya diubah suai: 2024-01-26 15:18:29
Salin: 0 Bilangan klik: 554
1
fokus pada
1617
Pengikut

Strategi Mengikuti Aliran dengan Pecahan Harga Purata Pergerakan

Gambaran keseluruhan

Strategi ini berdasarkan pada persilangan harga dengan purata bergerak untuk menghasilkan isyarat beli dan jual. Ia menyediakan pelbagai jenis purata bergerak dan parameter toleransi untuk menyaring pecah palsu. Strategi ini bertujuan untuk menangkap titik-titik perubahan trend harga dan melakukan trend pelacakan.

Prinsip Strategi

Strategi ini adalah berdasarkan harga penutupan harga, dan mengira purata bergerak dengan panjang N. Jenis purata bergerak yang biasa adalah purata bergerak sederhana (SMA), purata bergerak indeks (EMA), purata bergerak bertimbangan (WMA), dan sebagainya. Kemudian menetapkan tahap kebolehan, seperti 5%, dan mengira di atas (sehingga 1.05 kali rata-rata bergerak) dan di bawah (sehingga 0.95 kali rata-rata bergerak). Apabila harga penutupan harga melintasi lintasan, ia menghasilkan isyarat beli; apabila harga penutupan harga melintasi lintasan, ia menghasilkan isyarat jual.

Kelebihan Strategik

  • Menggunakan ciri-ciri pengesanan trend rata-rata bergerak untuk mengesan pergerakan harga secara berkesan
  • Terdapat pelbagai jenis purata bergerak yang boleh digunakan dengan kombinasi yang fleksibel
  • Parameter ketidakseimbangan boleh menyaring penembusan palsu dan mengelakkan transaksi yang tidak perlu
  • Ia hanya boleh digunakan untuk menjejaki trend penurunan.

Risiko Strategik

  • Rata-rata bergerak mempunyai keterbelakangan dan mungkin terlepas titik perubahan harga
  • Tidak sesuai untuk keadaan pasaran yang berpunca daripada turun naik harga
  • Tetapan parameter perbandingan yang tidak betul mungkin menapis sebahagian daripada isyarat yang berkesan
  • Berpeluang besar, perlu berhati-hati

Arah pengoptimuman

  • Mengoptimumkan jenis dan parameter panjang purata bergerak
  • Uji tetapan parameter toleransi yang berbeza
  • Gabungan dengan petunjuk lain untuk menapis isyarat
  • Meningkatkan strategi pengurusan kedudukan

ringkaskan

Strategi ini secara keseluruhannya adalah strategi pengesanan trend yang lebih tipikal. Ia menggunakan hubungan harga dengan purata bergerak untuk menilai trend, dan memberikan sedikit fleksibiliti. Dengan pengoptimuman parameter dan penapisan isyarat yang sesuai, ia boleh menjadi strategi kuantitatif yang berkesan.

Kod sumber strategi
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RafaelPiccolo

//@version=4
strategy("Price X MA Cross", overlay=true)

typ = input("HMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len = input(100, minval=1, title="Length")
src = input(close, "Source", type=input.source)
tol = input(0, minval=0, title="Tolerance (%)", type=input.float)
shortOnly = input(false, "Short only")

tema(src, len)=>
    ema1 = ema(src, len)
    ema2 = ema(ema1, len)
    ema3 = ema(ema2, len)
    return = 3 * (ema1 - ema2) + ema3

getMAPoint(type, len, src)=>
    return = type == "SMA" ? sma(src, len) : type == "EMA" ? ema(src, len) : type == "WMA" ? wma(src, len) : type == "HMA" ? hma(src, len) : type == "VWMA" ? vwma(src, len) : type == "RMA" ? rma(src, len) : tema(src, len)

ma = getMAPoint(typ, len, src)
upperTol = ma * (1 + tol/100)
lowerTol = ma * (1 - tol/100)

longCondition = crossover(close, upperTol)
shortCondition = crossunder(close, lowerTol)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longCondition)
    if (shortOnly)
        strategy.close("Short")
    else
        strategy.entry("Long", strategy.long)

plot(ma, "Moving Average", close > ma ? color.green : color.red, linewidth = 2)
t1 = plot(tol > 0 ? upperTol : na, transp = 70)
t2 = plot(tol > 0 ? lowerTol : na, transp = 70)
fill(t1, t2, color = tol > 0 ? color.blue : na)