Penjejakan arah aliran dinamik strategi persilangan purata bergerak berbilang tempoh

SMA EMA MA
Tarikh penciptaan: 2024-12-13 10:40:30 Akhirnya diubah suai: 2024-12-13 10:40:30
Salin: 0 Bilangan klik: 475
1
fokus pada
1617
Pengikut

Penjejakan arah aliran dinamik strategi persilangan purata bergerak berbilang tempoh

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan trend-tracking yang berdasarkan pada garis rata-rata berkala. Strategi ini menggunakan purata bergerak sederhana 89 dan purata bergerak sederhana 21 ((SMA) untuk menentukan arah trend keseluruhan pasaran, sambil menggabungkan puncak dan titik rendah indeks bergerak 5 ((EMA) untuk mencari isyarat perdagangan tertentu. Strategi ini menggunakan pengurusan kedudukan kedudukan ganda, dan menggabungkan stop loss tetap dan pengesanan berhenti untuk mengawal risiko.

Prinsip Strategi

Logik teras strategi merangkumi elemen utama berikut:

  1. Penghakiman Trend: Menggunakan kedudukan relatif 89 kitaran dan 21 kitaran SMA serta kedudukan harga untuk menentukan trend. Apabila harga dan 5 kitaran EMA berada di atas 21 kitaran SMA dan 21 kitaran SMA berada di atas 89 kitaran SMA, ia dinilai sebagai tren naik; sebaliknya sebagai tren menurun.
  2. Isyarat masuk: dalam trend menaik, masuk lebih banyak apabila harga kembali ke 5 kitaran EMA rendah; dalam trend menurun, masuk kosong apabila harga bangkit ke 5 kitaran EMA tinggi.
  3. Pentadbiran kedudukan: Buka dua kedudukan kontrak dengan jumlah yang sama setiap kali isyarat dicetuskan.
  4. Kawalan risiko: Menggunakan sasaran berhenti dan keuntungan yang tetap untuk kedudukan pertama, dan menggunakan kawalan berhenti dan kehilangan untuk kedudukan kedua.

Kelebihan Strategik

  1. Pengesahan pelbagai kitaran masa: Dengan menggabungkan purata bergerak dari pelbagai kitaran, trend pasaran dapat dinilai dengan lebih menyeluruh, mengurangkan isyarat palsu.
  2. Fleksibiliti penutupan: gabungan penutupan tetap dan penutupan pengesanan, yang membolehkan anda memperoleh keuntungan dalam turun naik jangka pendek dan tidak ketinggalan trend besar.
  3. Risiko boleh dikawal: Tetapkan kedudukan hentian yang jelas, dan ambang risiko untuk setiap isyarat perdagangan tetap.
  4. Operasi sistematik: Peraturan perdagangan jelas, bebas daripada penilaian subjektif, mudah dilaksanakan secara berprogrami.

Risiko Strategik

  1. Risiko kejatuhan pasaran: Dalam pengaturcaraan berhadapan, persilangan garisan rata yang kerap boleh menyebabkan terlalu banyak isyarat palsu.
  2. Risiko tergelincir: Apabila pasaran bergelincir, harga transaksi sebenar mungkin menyimpang jauh dari harga isyarat teori.
  3. Risiko pengurusan wang: cara berdagang dengan jumlah kontrak tetap mungkin tidak sesuai untuk semua saiz wang.
  4. Sensitiviti parameter: Pilihan kitaran purata bergerak mempunyai kesan besar terhadap prestasi strategi dan memerlukan pengoptimuman untuk pasaran yang berbeza.

Arah pengoptimuman strategi

  1. Pengurusan kedudukan dinamik: disyorkan untuk menyesuaikan jumlah kontrak perdagangan secara dinamik mengikut nilai bersih akaun dan turun naik pasaran.
  2. Penapisan keadaan pasaran: meningkatkan penunjuk kekuatan trend (seperti ADX) dan mengurangkan frekuensi perdagangan dalam pasaran yang bergolak.
  3. Pengoptimuman Hentikan Kerosakan: Anda boleh mempertimbangkan untuk menggunakan ATR untuk menyesuaikan jarak hentikan secara dinamik, meningkatkan kebolehan strategi untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
  4. Pengesahan isyarat: Meningkatkan petunjuk tambahan seperti jumlah transaksi, momentum, meningkatkan kebolehpercayaan isyarat perdagangan.

ringkaskan

Strategi ini adalah sistem pengesanan trend yang tersusun dengan baik, menangkap trend pasaran melalui gabungan garis rata-rata berkala, dan mengawal risiko dengan pengurusan kedudukan yang fleksibel dan cara menghentikan kerugian. Walaupun terdapat ruang untuk pengoptimuman, kerangka asas strategi ini mempunyai kepraktisan dan kemampuan yang baik.

Kod sumber strategi
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 2h
basePeriod: 2h
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/
// © tobiashartemink2

//@version=5
strategy("High 5 Trading Technique", overlay=true)

// --- Input parameters ---
sma89Length = input.int(title="SMA 89 Length", defval=89)
sma21Length = input.int(title="SMA 21 Length", defval=21)
ema5HighLength = input.int(title="EMA 5 High Length", defval=5)
ema5LowLength = input.int(title="EMA 5 Low Length", defval=5)
contracts = input.int(title="Aantal Contracten", defval=1)
stopLossPoints = input.int(title="Stop Loss Points per Contract", defval=25)
takeProfitPoints = input.int(title="Take Profit Points per Contract", defval=25)

// --- Calculate moving averages ---
sma89 = ta.sma(close, sma89Length)
sma21 = ta.sma(close, sma21Length)
ema5High = ta.ema(high, ema5HighLength)
ema5Low = ta.ema(low, ema5LowLength)

// --- Identify trend and order of moving averages ---
longSetup = close > sma89 and close > sma21 and ema5High > sma21 and sma21 > sma89
shortSetup = close < sma89 and close < sma21 and ema5Low < sma21 and sma21 < sma89

// --- Entry signals ---
longTrigger = longSetup and close <= ema5Low
shortTrigger = shortSetup and close >= ema5High

// --- Entry orders ---
if (longTrigger)
    strategy.entry("Long 1", strategy.long, qty=contracts)
    strategy.entry("Long 2", strategy.long, qty=contracts)

if (shortTrigger)
    strategy.entry("Short 1", strategy.short, qty=contracts)
    strategy.entry("Short 2", strategy.short, qty=contracts)

// --- Stop-loss and take-profit for long positions ---
if (strategy.position_size > 0)
    strategy.exit("Exit Long 1", "Long 1", stop=strategy.position_avg_price - stopLossPoints, limit=strategy.position_avg_price + takeProfitPoints)
    strategy.exit("Exit Long 2", "Long 2", stop=strategy.position_avg_price - stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints)

// --- Stop-loss and take-profit for short positions ---
if (strategy.position_size < 0)
    strategy.exit("Exit Short 1", "Short 1", stop=strategy.position_avg_price + stopLossPoints, limit=strategy.position_avg_price - takeProfitPoints)
    strategy.exit("Exit Short 2", "Short 2", stop=strategy.position_avg_price + stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints)

// --- Plot moving averages ---
plot(sma89, color=color.blue, linewidth=2)
plot(sma21, color=color.red, linewidth=2)
plot(ema5High, color=color.green, linewidth=2)
plot(ema5Low, color=color.orange, linewidth=2)