Strategi Mengikuti Trend Persilangan MA Berganda


Tarikh penciptaan: 2023-12-21 16:10:22 Akhirnya diubah suai: 2023-12-21 16:10:22
Salin: 1 Bilangan klik: 611
1
fokus pada
1623
Pengikut

Strategi Mengikuti Trend Persilangan MA Berganda

Gambaran keseluruhan

Strategi ini menggunakan kaedah trend-following yang tipikal untuk melintasi dua garis sejajar, digabungkan dengan mekanisme pengurusan risiko seperti stop loss, stop-loss, dan tracking stop loss, yang bertujuan untuk menangkap keuntungan yang dihasilkan oleh pergerakan trend.

Prinsip Strategi

  1. Hitung purata EMA untuk tempoh n hari yang cepat, sebagai purata jangka pendek;
  2. Hitung EMA purata untuk tempoh lambat m hari, sebagai purata jangka panjang;
  3. Apabila garis purata jangka pendek menembusi garis purata jangka panjang dari bawah ke atas, buat lebih; apabila ia menembusi garis purata jangka panjang dari atas ke bawah, buat lebih;
  4. Syarat kedudukan sejajar: Reverse breakout (jika melakukan beberapa penembusan, penembusan sejajar adalah kedudukan sejajar).
  5. Menguruskan risiko dengan cara menghentikan, menghentikan, dan menjejaki kerugian.

Analisis kelebihan

  1. Garis purata EMA ganda digunakan untuk menilai titik perubahan trend harga dengan lebih baik dan menangkap keadaan trend.
  2. Gabungan dengan hentikan, menghentikan dan menjejaki hentikan, ia dapat mengawal kerugian tunggal dengan berkesan, mengunci keuntungan, dan mengurangkan penarikan balik.
  3. Terdapat banyak parameter yang boleh disesuaikan, yang boleh disesuaikan dan dioptimumkan mengikut pelbagai jenis dan keadaan.
  4. Logik strategi mudah difahami dan diubah suai.
  5. Menyokong pelbagai jenis operasi kosong, boleh disesuaikan dengan pelbagai jenis situasi.

Analisis risiko

  1. Taktik ini sangat sensitif terhadap penembusan palsu dan mudah disekat.
  2. Tetapan parameter yang tidak betul boleh menyebabkan perdagangan yang kerap, meningkatkan kos perdagangan dan kehilangan titik slippage.
  3. Strategi ini tidak dapat menentukan titik perubahan trend dengan sendirinya, dan ia perlu digabungkan dengan petunjuk lain untuk mencapai keputusan yang lebih baik.
  4. Dalam keadaan yang tidak menentu, ia mudah untuk menghasilkan isyarat perdagangan, tetapi ia kurang menguntungkan.
  5. Parameter perlu dioptimumkan untuk menyesuaikan diri dengan pelbagai jenis dan keadaan.

Anda boleh mengurangkan risiko dengan:

  1. Penembusan palsu disaring dengan penunjuk lain.
  2. Pengaturan parameter yang dioptimumkan untuk mengurangkan kekerapan transaksi.
  3. Meningkatkan indikator trend dan mengelakkan perdagangan yang bergolak.
  4. Mengubah pengurusan kedudukan untuk mengurangkan risiko tunggal.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Mengoptimumkan parameter kitaran garis rata-rata perlahan-lahan, menyesuaikan diri dengan pelbagai jenis dan keadaan pasaran.
  2. Menambah petunjuk lain untuk menilai trend dan menapis isyarat penembusan palsu. Secara tipikal, MACD, KDJ dan lain-lain boleh ditambah.
  3. Anda boleh mempertimbangkan untuk menukar EMA kepada SMA atau purata bergerak bertimbangan WMA.
  4. Jarak hentian yang disesuaikan secara dinamik berdasarkan ATR.
  5. Berdasarkan cara pengurusan kedudukan, anda boleh menyesuaikan kedudukan tunggal secara fleksibel.
  6. Mengoptimumkan parameter untuk menyesuaikan diri berdasarkan gabungan indeks hubungan dan kadar turun naik.

ringkaskan

Strategi ini secara keseluruhannya adalah strategi pengesanan trend rata-rata EMA ganda yang tipikal. Ia mempunyai kelebihan untuk menangkap trend trend, dan menggabungkan kaedah pengurusan risiko seperti berhenti, berhenti, dan mengesan kerugian. Tetapi ada juga beberapa masalah yang tipikal, seperti sensitiviti yang tinggi terhadap bunyi dan gegaran.

Kod 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)