Sumber daya yang dimuat... Pemuatan...

Tren Dinamis Mengikuti Strategi Crossover Rata-rata Bergerak Multi-Periode

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

img

Gambaran umum

Strategi ini adalah sistem perdagangan yang mengikuti tren berdasarkan rata-rata bergerak multi-periode. Strategi ini menggunakan 89-periode dan 21-periode Simple Moving Averages (SMA) untuk menentukan arah tren pasar secara keseluruhan, sementara menggabungkan 5 periode Eksponensial Moving Average (EMA) tertinggi dan terendah untuk mengidentifikasi sinyal perdagangan tertentu. Strategi ini menggunakan pendekatan manajemen posisi ganda dikombinasikan dengan mekanisme stop-loss tetap dan trailing take-profit.

Prinsip Strategi

Logika inti mencakup elemen kunci berikut:

  1. Determinasi Tren: Menggunakan posisi relatif SMA 89 periode dan 21 periode bersama dengan posisi harga untuk mengidentifikasi tren. Tren naik dikonfirmasi ketika harga dan EMA 5 periode berada di atas SMA 21 periode, yang berada di atas SMA 89 periode; sebaliknya mengkonfirmasi tren menurun.
  2. Sinyal Masuk: Dalam tren naik, masukkan posisi panjang ketika harga kembali ke EMA rendah 5 periode; dalam tren turun, masukkan posisi pendek ketika harga bangkit ke EMA tinggi 5 periode.
  3. Manajemen Posisi: Membuka dua posisi kontrak yang sama untuk setiap sinyal yang dipicu.
  4. Pengendalian risiko: Menggunakan target stop loss dan profit tetap untuk posisi pertama, dan trailing stop loss untuk posisi kedua.

Keuntungan Strategi

  1. Konfirmasi Kerangka Waktu Berbagai: Kombinasi dari rata-rata bergerak periode yang berbeda memberikan penilaian tren yang lebih komprehensif, mengurangi sinyal palsu.
  2. Flexible Profit-Taking: Menggabungkan metode fixed dan trailing take-profit untuk menangkap fluktuasi jangka pendek dan tren jangka panjang.
  3. Risiko Terkontrol: Menetapkan tingkat stop-loss yang jelas dengan eksposur risiko tetap untuk setiap sinyal perdagangan.
  4. Operasi Sistematis: Aturan perdagangan yang jelas meminimalkan penilaian subjektif, membuatnya mudah diterapkan secara programatis.

Risiko Strategi

  1. Risiko konsolidasi: Seringnya penyeberangan rata-rata bergerak selama pasar samping dapat menghasilkan sinyal palsu yang berlebihan.
  2. Risiko slippage: Penyimpangan harga yang signifikan antara harga eksekusi teoritis dan aktual selama periode volatilitas tinggi.
  3. Risiko Pengelolaan Uang: Perdagangan kuantitas kontrak tetap mungkin tidak sesuai dengan semua ukuran akun.
  4. Sensitivitas Parameter: Kinerja strategi sangat tergantung pada pemilihan periode rata-rata bergerak, yang membutuhkan optimasi untuk pasar yang berbeda.

Arahan Optimasi

  1. Dimensi Posisi Dinamis: Merekomendasikan penyesuaian jumlah kontrak berdasarkan ekuitas akun dan volatilitas pasar.
  2. Penyaringan Lingkungan Pasar: Tambahkan indikator kekuatan tren (seperti ADX) untuk mengurangi frekuensi perdagangan di pasar yang berbeda.
  3. Peningkatan Stop-Loss: Pertimbangkan untuk menggunakan ATR untuk penyesuaian stop-loss dinamis untuk meningkatkan kemampuan beradaptasi dalam kondisi pasar yang berbeda.
  4. Konfirmasi sinyal: Masukkan indikator volume dan momentum untuk meningkatkan keandalan sinyal.

Ringkasan

Strategi ini merupakan sistem trend-following yang komprehensif yang menangkap tren pasar melalui moving average multi-periode sambil menerapkan manajemen posisi dan metode pengendalian risiko yang fleksibel. Meskipun ada ruang untuk optimasi, kerangka kerja dasar menunjukkan kepraktisan dan skalabilitas yang baik. Stabilitas strategi dapat ditingkatkan dengan menyesuaikan parameter dan menambahkan kondisi penyaringan untuk instrumen perdagangan dan lingkungan pasar yang berbeda.


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