Strategi silang purata bergerak berganda

Penulis:ChaoZhang, Tarikh: 2023-10-20 16:44:30
Tag:

img

Ringkasan

Strategi ini menggunakan persilangan purata bergerak untuk menentukan arah momentum harga, ditambah dengan persilangan emas / kematian untuk menilai trend keseluruhan, untuk melaksanakan trend berikut.

Logika Strategi

Strategi ini menggunakan persilangan EMA dan SMA untuk menentukan arah momentum harga. EMA bertindak balas lebih cepat sementara SMA bertindak balas lebih mantap. Apabila EMA melintasi di atas SMA, ia dinilai bahawa momentum menaik kuat, pergi panjang. Apabila EMA melintasi di bawah SMA, ia dinilai bahawa momentum menurun kuat, pergi pendek.

Di samping itu, strategi ini juga menggunakan persilangan SMA tempoh cepat dan SMA tempoh perlahan untuk menentukan arah trend keseluruhan. Apabila SMA cepat melintasi di atas SMA perlahan, ia adalah salib emas, yang menunjukkan pasaran berada dalam trend menaik jangka panjang. Apabila SMA pantas melintasi di bawah SMA perlahan, ia adalah salib kematian, yang menunjukkan pasaran berada dalam trend penurunan jangka panjang.

Strategi ini mengenal pasti peluang panjang apabila EMA melintasi di atas SMA. Jika ia adalah salib emas pada masa ini, ia bermakna pergi lama disokong oleh kedua-dua momentum jangka pendek dan trend jangka panjang, yang merupakan jangka masa panjang yang lebih baik.

Analisis Kelebihan

  • Menggunakan persilangan MA untuk menilai momentum harga dan arah
  • Pertimbangkan kedua-dua momentum jangka pendek dan trend jangka panjang
  • Pengesahan dua penunjuk meningkatkan kebolehpercayaan
  • Boleh disesuaikan dengan tempoh yang berbeza dengan menyesuaikan parameter MA
  • Boleh disesuaikan untuk menunjukkan / menyembunyikan isyarat perdagangan tertentu

Analisis Risiko

  • MA crossovers mempunyai kelewatan, mungkin terlepas titik masuk / keluar terbaik
  • SMA tempoh tetap tidak dapat mencerminkan perubahan harga dalam masa nyata
  • Perpindahan yang salah mungkin berlaku antara MA jangka panjang/pendek
  • Penguasaan panjang boleh meningkatkan risiko modal

Risiko boleh dikurangkan dengan menggabungkan penunjuk lain untuk pengesahan isyarat, mengoptimumkan tempoh MA, atau menetapkan stop loss.

Arahan pengoptimuman

  • Tambah penapis lain seperti jumlah, Bollinger Bands dan lain-lain.
  • Tambah strategi stop loss
  • Mengoptimumkan tempoh MA
  • Mengoptimumkan pengurusan modal
  • Pertimbangkan saiz kedudukan dinamik

Kesimpulan

Secara keseluruhan, ini adalah strategi trend berikut yang agak stabil dan boleh dipercayai. Ia mempertimbangkan kedua-dua momentum harga jangka pendek dan arah trend jangka panjang, menjana isyarat perdagangan melalui persilangan MA. Berbanding dengan strategi MA tunggal, ia mempunyai kebolehpercayaan yang lebih tinggi dengan menggabungkan penunjuk ganda untuk pengesahan. Tetapi sebagai strategi trend berikut, pengoptimuman parameter dan kawalan risiko sangat penting. Ia memerlukan ujian dan penyesuaian berulang untuk benar-benar merealisasikan potensinya. Dengan pengoptimuman dan peningkatan berterusan, strategi ini boleh menjadi komponen berharga portfolio pelaburan kuantitatif jangka panjang.


/*backtest
start: 2023-09-19 00:00:00
end: 2023-10-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Cryptoluc1d

//@version=4
strategy("Equal-Length EMA/SMA Crossover Strategy", initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, commission_type=strategy.commission.percent, commission_value=0.2, overlay=true)

// Create inputs

mom_length = input(title="Momentum Length (EMA=SMA)", defval=50)
bias_length_fast  = input(title="Golden Cross Length (Fast)", defval=50)
bias_length_slow  = input(title="Golden Cross Length (Slow)", defval=100)

// Define MAs

ema = ema(close, mom_length) // EMA/SMA crossover of the same period for detecting trend acceleration/deceleration
sma = sma(close, mom_length)
bias_fast = sma(close, bias_length_fast) // golden/death cross for overall trend bias
bias_slow = sma(close, bias_length_slow)

// Define signal conditions

buy_trend = crossover(ema, sma) and bias_fast >= bias_slow // buy when EMA cross above SMA. if this happens during a bullish golden cross, buying is in confluence with the overall trend (bias).
buy_risky = crossover(ema, sma) and bias_fast < bias_slow // buy when EMA cross above SMA. if this happens during a bearish death cross, buying is early, more risky, and not in confluence with the overall trend (bias).
buy_late = crossover(sma, bias_slow) and ema > sma // the SMA crossing the Slow_SMA gives further confirmation of bullish trend, but signal comes later.
sell = crossunder(ema, sma) // sell when EMA cross under SMA.

// Enable option to hide signals, then plot signals

show_signal = input(title="Show Signals", defval=true)

plotshape(show_signal ? buy_trend : na, title='Trend Buy', style=shape.triangleup, location=location.belowbar, color=color.green, text='TREND BUY')
plotshape(show_signal ? buy_risky : na, title='Risky Buy', style=shape.triangleup, location=location.belowbar, color=color.olive, text='RISKY BUY')
plotshape(show_signal ? buy_late : na, title='Late Buy', style=shape.triangleup, location=location.belowbar, color=color.lime, text='LATE BUY')
plotshape(show_signal ? sell : na, title='Sell', style=shape.triangledown, location=location.abovebar, color=color.red, text='SELL')

// Define entry and exit conditions

longCondition = ema > sma and bias_fast >= bias_slow // LONG when EMA above SMA, and overall trend bias is bullish
if (longCondition)
    strategy.entry("BUY TREND", strategy.long)
exitLong = crossunder(ema, sma) // close LONG when EMA cross under SMA
strategy.close("BUY TREND", when=exitLong)

// // short conditions. turned off because up only.
// shortCondition = ema < sma and bias_fast <= bias_slow // SHORT when EMA under SMA, and overall trend bias is bearish
// if (shortCondition)
//     strategy.entry("SELL TREND", strategy.short)
// exitShort = crossover(ema, sma) // close SHORT when EMA cross over SMA
// strategy.close("SELL TREND", when=exitShort)

// Enable option to show MAs, then plot MAs

show_ma = input(title="Show MAs", defval=false)

plot(show_ma ? ema : na, title="Momentum EMA", color=color.green, linewidth=1)
plot(show_ma ? sma : na, title="Momentum SMA", color=color.yellow, linewidth=1)
plot(show_ma ? bias_fast : na, title="Golden Cross SMA (Fast)", color=color.orange, linewidth=2)
plot(show_ma ? bias_slow : na, title="Golden Cross SMA (Slow)", color=color.red, linewidth=2)

Lebih lanjut