Sumber dimuat naik... memuat...

Trend SMA Berbilang Jangka Masa Mengikut Strategi dengan Stop Loss Dinamik

Penulis:ChaoZhang, Tarikh: 2024-06-03 10:57:05
Tag:SMATrend

img

Ringkasan

Strategi ini menggunakan Purata Bergerak Sederhana (SMA) pada pelbagai jangka masa untuk menangkap trend pasaran. Dengan membandingkan kedudukan relatif SMA jangka pendek dan jangka panjang, ia menjana isyarat beli dan jual. Strategi ini juga menggunakan keadaan pengesahan trend untuk menapis isyarat palsu dan meningkatkan ketepatan perdagangan.

Prinsip Strategi

  1. Mengira SMA jangka pendek dan jangka panjang untuk menentukan arah trend pasaran.
  2. Menghasilkan isyarat beli apabila SMA jangka pendek melintasi SMA jangka panjang, dan isyarat jual apabila SMA jangka pendek melintasi SMA jangka panjang.
  3. Gunakan keadaan pengesahan trend untuk menapis isyarat palsu. Hanya melaksanakan pembelian apabila trend utama adalah bullish, dan hanya melaksanakan jualan apabila trend utama adalah bearish.
  4. Melaksanakan mengambil keuntungan dan berhenti kehilangan ciri untuk mengawal risiko perdagangan. Tutup kedudukan apabila harga mencapai mengambil keuntungan atau berhenti kerugian tahap yang telah ditentukan.
  5. Sesuaikan kedudukan secara dinamik berdasarkan keadaan pengesahan trend. Tutup kedudukan dengan segera apabila trend utama berubah untuk mengelakkan kerugian daripada pembalikan trend.

Kelebihan Strategi

  1. Mengikuti Trend: Dengan menggunakan SMA pada jangka masa yang berbeza, strategi secara berkesan menangkap trend pasaran utama dan menyesuaikan diri dengan pelbagai keadaan pasaran.
  2. Pengesahan Trend: Pengenalan syarat pengesahan trend menapis isyarat palsu, meningkatkan kebolehpercayaan isyarat perdagangan dan mengurangkan perdagangan yang tidak sah.
  3. Pengurusan Risiko: Ciri-ciri mengambil keuntungan dan menghentikan kerugian yang terbina dalam membantu mengawal risiko perdagangan dan melindungi modal pelabur.
  4. Penyesuaian Dinamik: Posisi disesuaikan secara dinamik berdasarkan keadaan pengesahan trend, yang membolehkan strategi untuk bertindak balas terhadap perubahan pasaran dengan tepat pada masanya dan mengurangkan kerugian akibat pembalikan trend.

Risiko Strategi

  1. Risiko Pengoptimuman Parameter: Prestasi strategi bergantung pada pemilihan parameter seperti tempoh SMA dan mengambil tahap keuntungan / hentian kerugian. Tetapan parameter yang tidak sesuai boleh menyebabkan prestasi strategi yang kurang optimum.
  2. Risiko pasaran yang bergolak: Dalam keadaan pasaran yang bergolak, isyarat perdagangan yang kerap boleh menyebabkan perdagangan berlebihan, meningkatkan kos dan risiko perdagangan.
  3. Risiko Kejadian Tidak Dijangkakan: Di hadapan peristiwa besar yang tidak dijangka, pasaran mungkin mengalami turun naik yang teruk, dan strategi mungkin tidak dapat bertindak balas dengan segera, yang membawa kepada kerugian yang besar.

Arahan Pengoptimuman Strategi

  1. Memasukkan Penunjuk Teknikal Tambahan: Menggabungkan penunjuk teknikal lain, seperti MACD dan RSI, untuk meningkatkan ketepatan dan ketahanan pengenalan trend.
  2. Mengoptimumkan Pilihan Parameter: Melalui backtesting data sejarah dan pengoptimuman parameter, cari gabungan optimum tempoh SMA, ambil tahap keuntungan / hentian kerugian, dan parameter lain untuk meningkatkan prestasi strategi.
  3. Meningkatkan Pengurusan Risiko: Memperkenalkan teknik pengurusan risiko yang lebih maju, seperti stop loss dinamik dan saiz kedudukan, untuk mengawal lebih lanjut pendedahan risiko.
  4. Sesuaikan dengan keadaan pasaran yang berbeza: Sesuaikan parameter strategi secara dinamik berdasarkan turun naik pasaran dan kekuatan trend, membolehkan strategi menyesuaikan diri dengan keadaan pasaran yang berbeza.

Kesimpulan

Strategi ini menggunakan SMA pada jangka masa yang berbeza untuk menangkap trend pasaran, menapis isyarat palsu menggunakan keadaan pengesahan trend, dan menggabungkan mengambil keuntungan / berhenti kerugian dan ciri penyesuaian kedudukan dinamik untuk mencapai trend berikut dan objektif pengurusan risiko. Walaupun strategi ini mempunyai kelebihan tertentu, ia masih menghadapi risiko seperti pengoptimuman parameter, pasaran bergolak, dan peristiwa yang tidak dijangka. Pengoptimuman masa depan boleh memberi tumpuan kepada menggabungkan penunjuk teknikal tambahan, mengoptimumkan pemilihan parameter, meningkatkan pengurusan risiko, dan menyesuaikan diri dengan keadaan pasaran yang berbeza untuk meningkatkan ketahanan dan keuntungan strategi.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("market slayer v3", overlay=true)

// Input parameters
showConfirmationTrend = input(title='Show Trend', defval=true)
confirmationTrendTimeframe = input.timeframe(title='Main Trend', defval='240')
confirmationTrendValue = input(title='Main Trend Value', defval=2)
showConfirmationBars = input(title='Show Confirmation Bars', defval=true)
topCbarValue = input(title='Top Confirmation Value', defval=60)
short_length = input.int(10, minval=1, title="Short SMA Length")
long_length = input.int(20, minval=1, title="Long SMA Length")
takeProfitEnabled = input(title="Take Profit Enabled", defval=false)
takeProfitValue = input.float(title="Take Profit (points)", defval=20, minval=1)
stopLossEnabled = input(title="Stop Loss Enabled", defval=false)
stopLossValue = input.float(title="Stop Loss (points)", defval=50, minval=1)

// Calculate SMAs
short_sma = ta.sma(close, short_length)
long_sma = ta.sma(close, long_length)

// Generate buy and sell signals based on SMAs
buy_signal = ta.crossover(short_sma, long_sma)
sell_signal = ta.crossunder(short_sma, long_sma)

// Plot SMAs
plot(short_sma, color=color.rgb(24, 170, 11), title="Short SMA")
plot(long_sma, color=color.red, title="Long SMA")

// Confirmation Bars
f_confirmationBarBullish(cbValue) =>
    cBarClose = close
    slowConfirmationBarSmaHigh = ta.sma(high, cbValue)
    slowConfirmationBarSmaLow = ta.sma(low, cbValue)
    slowConfirmationBarHlv = int(na)
    slowConfirmationBarHlv := cBarClose > slowConfirmationBarSmaHigh ? 1 : cBarClose < slowConfirmationBarSmaLow ? -1 : slowConfirmationBarHlv[1]
    slowConfirmationBarSslDown = slowConfirmationBarHlv < 0 ? slowConfirmationBarSmaHigh : slowConfirmationBarSmaLow
    slowConfirmationBarSslUp = slowConfirmationBarHlv < 0 ? slowConfirmationBarSmaLow : slowConfirmationBarSmaHigh
    slowConfirmationBarSslUp > slowConfirmationBarSslDown

fastConfirmationBarBullish = f_confirmationBarBullish(topCbarValue)
fastConfirmationBarBearish = not fastConfirmationBarBullish
fastConfirmationBarClr = fastConfirmationBarBullish ? color.green : color.red

fastConfirmationChangeBullish = fastConfirmationBarBullish and fastConfirmationBarBearish[1]
fastConfirmationChangeBearish = fastConfirmationBarBearish and fastConfirmationBarBullish[1]

confirmationTrendBullish = request.security(syminfo.tickerid, confirmationTrendTimeframe, f_confirmationBarBullish(confirmationTrendValue), lookahead=barmerge.lookahead_on)
confirmationTrendBearish = not confirmationTrendBullish
confirmationTrendClr = confirmationTrendBullish ? color.green : color.red

// Plot trend labels
plotshape(showConfirmationTrend, style=shape.square, location=location.top, color=confirmationTrendClr, title='Trend Confirmation Bars')
plotshape(showConfirmationBars and (fastConfirmationChangeBullish or fastConfirmationChangeBearish), style=shape.triangleup, location=location.top, color=fastConfirmationChangeBullish ? color.green : color.red, title='Fast Confirmation Bars')
plotshape(showConfirmationBars and buy_signal and confirmationTrendBullish, style=shape.triangleup, location=location.top, color=color.green, title='Buy Signal')
plotshape(showConfirmationBars and sell_signal and confirmationTrendBearish, style=shape.triangledown, location=location.top, color=color.red, title='Sell Signal')

// Generate trade signals
buy_condition = buy_signal and confirmationTrendBullish and not (strategy.opentrades > 0)
sell_condition = sell_signal and confirmationTrendBearish and not (strategy.opentrades > 0)

strategy.entry("Buy", strategy.long, when=buy_condition, comment ="BUY CALLS")
strategy.entry("Sell", strategy.short, when=sell_condition, comment ="BUY PUTS")

// Take Profit
if (takeProfitEnabled)
    strategy.exit("Take Profit Buy", from_entry="Buy", profit=takeProfitValue)
    strategy.exit("Take Profit Sell", from_entry="Sell", profit=takeProfitValue)

// Stop Loss
if (stopLossEnabled)
    strategy.exit("Stop Loss Buy", from_entry="Buy", loss=stopLossValue)
    strategy.exit("Stop Loss Sell", from_entry="Sell", loss=stopLossValue)

// Close trades based on trend confirmation bars
if strategy.opentrades > 0
    if strategy.position_size > 0
        if not confirmationTrendBullish
            strategy.close("Buy", comment ="CLOSE CALLS")
    else
        if not confirmationTrendBearish
            strategy.close("Sell", comment ="CLOSE PUTS")

// Define alert conditions as booleans
buy_open_alert = buy_condition
sell_open_alert = sell_condition
buy_closed_alert = strategy.opentrades < 0
sell_closed_alert = strategy.opentrades > 0

// Alerts
alertcondition(buy_open_alert, title='Buy calls', message='Buy calls Opened')
alertcondition(sell_open_alert, title='buy puts', message='buy Puts Opened')
alertcondition(buy_closed_alert, title='exit calls', message='exit calls ')
alertcondition(sell_closed_alert, title='exit puts', message='exit puts Closed')

Berkaitan

Lebih lanjut