Sumber dimuat naik... memuat...

Trend Dinamik Berikutan Strategi Crossover Purata Bergerak Berbilang Tempoh

Penulis:ChaoZhang, Tarikh: 2024-12-13 10:40:30
Tag:SMAEMAMA

img

Ringkasan

Strategi ini adalah sistem perdagangan trend-mengikuti berdasarkan purata bergerak pelbagai tempoh. Ia menggunakan purata bergerak mudah 89-periode dan 21 tempoh (SMA) untuk menentukan arah trend pasaran secara keseluruhan, sementara menggabungkan purata bergerak eksponen (EMA) 5 tempoh tinggi dan rendah untuk mengenal pasti isyarat perdagangan tertentu. Strategi ini menggunakan pendekatan pengurusan kedudukan ganda yang digabungkan dengan mekanisme stop-loss tetap dan mengambil keuntungan.

Prinsip Strategi

Logik teras merangkumi elemen utama berikut:

  1. Penentuan Trend: Menggunakan kedudukan relatif SMA 89 tempoh dan 21 tempoh bersama dengan kedudukan harga untuk mengenal pasti trend. Trend menaik disahkan apabila harga dan EMA 5 tempoh berada di atas SMA 21 tempoh, yang di atas SMA 89 tempoh; sebaliknya mengesahkan trend menurun.
  2. Isyarat Masuk: Dalam aliran menaik, masukkan kedudukan panjang apabila harga kembali ke EMA rendah 5 tempoh; dalam aliran menurun, masukkan kedudukan pendek apabila harga bangkit ke EMA tinggi 5 tempoh.
  3. Pengurusan Posisi: Membuka dua kedudukan kontrak yang sama untuk setiap isyarat yang dicetuskan.
  4. Pengendalian Risiko: Menggunakan sasaran stop loss dan keuntungan tetap untuk kedudukan pertama, dan trailing stop loss untuk kedudukan kedua.

Kelebihan Strategi

  1. Pengesahan Jangka Masa Berbilang: Gabungan purata bergerak tempoh yang berbeza memberikan penilaian trend yang lebih komprehensif, mengurangkan isyarat palsu.
  2. Mengambil keuntungan yang fleksibel: Menggabungkan kaedah mengambil keuntungan tetap dan menyusul untuk menangkap fluktuasi jangka pendek dan trend lanjutan.
  3. Risiko Terkawal: Menetapkan tahap stop-loss yang jelas dengan pendedahan risiko tetap untuk setiap isyarat perdagangan.
  4. Operasi Sistematik: Peraturan perdagangan yang jelas meminimumkan penilaian subjektif, menjadikannya mudah dilaksanakan secara programatik.

Risiko Strategi

  1. Risiko Konsolidasi: Rintasan purata bergerak yang kerap semasa pasaran sampingan boleh menghasilkan isyarat palsu yang berlebihan.
  2. Risiko tergelincir: Penyimpangan harga yang ketara antara harga pelaksanaan teori dan sebenar semasa tempoh turun naik yang tinggi.
  3. Risiko Pengurusan Wang: Perdagangan kuantiti kontrak tetap mungkin tidak sesuai dengan semua saiz akaun.
  4. Sensitiviti Parameter: Prestasi strategi sangat bergantung kepada pemilihan purata bergerak, yang memerlukan pengoptimuman untuk pasaran yang berbeza.

Arahan pengoptimuman

  1. Pengukuran Posisi Dinamik: Cadangkan penyesuaian kuantiti kontrak berdasarkan ekuiti akaun dan turun naik pasaran.
  2. Penapisan persekitaran pasaran: Tambah penunjuk kekuatan trend (seperti ADX) untuk mengurangkan kekerapan dagangan di pasaran yang berbeza.
  3. Peningkatan Stop-Loss: Pertimbangkan untuk menggunakan ATR untuk pelarasan stop-loss dinamik untuk meningkatkan kesesuaian dalam keadaan pasaran yang berbeza.
  4. Pengesahan isyarat: Masukkan penunjuk jumlah dan momentum untuk meningkatkan kebolehpercayaan isyarat.

Ringkasan

Strategi ini mewakili sistem trend berikut yang komprehensif yang menangkap trend pasaran melalui purata bergerak pelbagai tempoh sambil melaksanakan pengurusan kedudukan yang fleksibel dan kaedah kawalan risiko. Walaupun terdapat ruang untuk pengoptimuman, kerangka asas menunjukkan kepraktisan dan skalabiliti yang baik. Kestabilan strategi dapat ditingkatkan dengan menyesuaikan parameter dan menambah syarat penapisan untuk instrumen perdagangan dan persekitaran pasaran yang berbeza.


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


Berkaitan

Lebih lanjut