Strategi Mengikuti Tren Crossover MA Ganda


Tanggal Pembuatan: 2023-12-21 16:10:22 Akhirnya memodifikasi: 2023-12-21 16:10:22
menyalin: 1 Jumlah klik: 611
1
fokus pada
1623
Pengikut

Strategi Mengikuti Tren Crossover MA Ganda

Ringkasan

Strategi ini menggunakan metode pelacakan tren yang khas dari dua garis sejajar silang, dan menggabungkan mekanisme manajemen risiko seperti stop loss, stop loss, dan pelacakan stop loss, yang bertujuan untuk menangkap keuntungan dari tren.

Prinsip Strategi

  1. Menghitung rata-rata EMA untuk periode cepat n hari, sebagai rata-rata jangka pendek;
  2. Menghitung rata-rata EMA selama m hari dalam periode lambat, sebagai rata-rata jangka panjang;
  3. Ketika garis rata-rata jangka pendek dari bawah ke atas, lakukan over; ketika dari atas ke bawah, lakukan short;
  4. Kondisi posisi yang seimbang: Reverse breakout (jika melakukan beberapa breakout, reverse breakout berarti posisi yang seimbang).
  5. Mengelola risiko dengan menggunakan stop loss, stop loss, dan tracking stop loss.

Analisis Keunggulan

  1. Garis rata EMA ganda digunakan untuk menilai titik balik tren harga dan menangkap tren.
  2. Kombinasi dengan stop loss, stop-loss dan tracking stop loss, dapat secara efektif mengontrol kerugian tunggal, mengunci keuntungan, dan mengurangi penarikan balik.
  3. Ada banyak parameter yang dapat disesuaikan, yang dapat disesuaikan dan dioptimalkan sesuai dengan berbagai varietas dan situasi.
  4. Logika strategi sederhana dan jelas, mudah dipahami dan dimodifikasi.
  5. Dukungan untuk melakukan banyak operasi kosong, dapat disesuaikan dengan berbagai jenis situasi.

Analisis risiko

  1. Taktik ini sangat sensitif terhadap penembusan palsu, sehingga mudah diblokir.
  2. Pengaturan parameter yang tidak tepat dapat menyebabkan frekuensi transaksi, meningkatkan biaya transaksi dan kehilangan slippage.
  3. Strategi tidak dapat menentukan titik balik tren dengan sendirinya, dan perlu dikombinasikan dengan indikator lain untuk lebih efektif.
  4. Dalam situasi yang bergejolak, sinyal perdagangan dapat dihasilkan dengan mudah, tetapi keuntungan yang sebenarnya lebih rendah.
  5. Parameter perlu dioptimalkan untuk menyesuaikan dengan varietas dan lingkungan yang berbeda.

Risiko dapat dikurangi dengan:

  1. Bergabung dengan indikator lain, filter palsu terobosan.
  2. Optimalkan pengaturan parameter untuk mengurangi frekuensi transaksi.
  3. Untuk meningkatkan indikator penilaian tren, hindari perdagangan bergejolak.
  4. Mengatur manajemen posisi untuk mengurangi risiko tunggal.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Optimalkan parameter siklus rata-rata cepat dan lambat untuk menyesuaikan dengan varietas dan lingkungan pasar yang berbeda.
  2. Menambahkan indikator lain untuk menilai tren dan memfilter sinyal terobosan palsu. Biasanya dapat ditambahkan MACD, KDJ, dll.
  3. Anda dapat mempertimbangkan untuk mengubah EMA menjadi SMA atau rata-rata bergerak berbobot WMA.
  4. Berdasarkan dinamika ATR menyesuaikan jarak stop loss.
  5. Berbasis pada manajemen posisi, posisi dapat disesuaikan secara fleksibel.
  6. Optimalisasi parameter berdasarkan kombinasi indikator relevansi dan volatilitas.

Meringkaskan

Secara keseluruhan, strategi ini adalah strategi pelacakan tren rata-rata EMA ganda yang khas. Ini memiliki keunggulan untuk menangkap tren tren, dan menggabungkan metode manajemen risiko seperti stop loss, stop stop, dan tracking stop loss. Namun, ada juga beberapa masalah khas, seperti sensitivitas yang tinggi terhadap noise dan getaran.

Kode Sumber Strategi
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "Strategy Code Example", shorttitle = "Strategy Code Example", overlay = true)

// Revision:        1
// Author:          @JayRogers
//
// *** THIS IS JUST AN EXAMPLE OF STRATEGY RISK MANAGEMENT CODE IMPLEMENTATION ***

// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 14, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 21, title = "Slow MA Period", minval = 1)

// === STRATEGY RELATED INPUTS ===
tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit   = input(defval = 1000, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 200, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 200, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === SERIES SETUP ===
/// a couple of ma's..
maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)

// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = red, linewidth = 2, style = line, transp = 50)

// === LOGIC ===
// is fast ma above slow ma?
aboveBelow = maFast >= maSlow ? true : false
// are we inverting our trade direction?
tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => not tradeDirection[1] and tradeDirection // functions can be used to wrap up and work out complex conditions
exitLong() => tradeDirection[1] and not tradeDirection
strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in
strategy.close(id = "Long", when = exitLong()) // ...and when to get out
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => tradeDirection[1] and not tradeDirection
exitShort() => not tradeDirection[1] and tradeDirection
strategy.entry(id = "Short", long = false, when = enterShort())
strategy.close(id = "Short", when = exitShort())

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)