Pelacakan tren SMA multi-skala waktu dan strategi stop loss dinamis

SMA Trend
Tanggal Pembuatan: 2024-06-03 10:57:05 Akhirnya memodifikasi: 2024-06-03 10:57:05
menyalin: 3 Jumlah klik: 553
1
fokus pada
1617
Pengikut

Pelacakan tren SMA multi-skala waktu dan strategi stop loss dinamis

Ringkasan

Strategi ini didasarkan pada SMA untuk menangkap tren pasar. Dengan membandingkan posisi relatif SMA jangka pendek dan jangka panjang, menghasilkan sinyal beli dan jual. Strategi ini juga menggunakan kondisi konfirmasi tren untuk memfilter sinyal palsu, meningkatkan akurasi perdagangan.

Prinsip Strategi

  1. Perhitungan SMA jangka pendek dan jangka panjang untuk menentukan arah tren pasar.
  2. Ketika SMA pendek melewati SMA panjang, sinyal beli dihasilkan; ketika SMA pendek melewati SMA panjang, sinyal jual dihasilkan.
  3. Penggunaan kondisi konfirmasi tren untuk memfilter sinyal palsu, hanya melakukan pembelian ketika tren utama adalah multihead, dan hanya melakukan penjualan ketika tren utama adalah kosong.
  4. Setting stop and loss function to control trading risk. Bila harga mencapai level stop atau stop loss yang telah ditetapkan, maka posisi akan dihapus.
  5. Mengatur posisi secara dinamis sesuai dengan kondisi konfirmasi tren. Ketika tren utama berubah, posisi yang dihapus tepat waktu untuk mencegah kerugian akibat pembalikan tren.

Keunggulan Strategis

  1. Pelacakan tren: Strategi ini didasarkan pada SMA pada skala waktu yang berbeda, sehingga dapat secara efektif menangkap tren utama pasar dan beradaptasi dengan kondisi pasar yang berbeda.
  2. Pengakuan tren: Meningkatkan keandalan sinyal perdagangan, mengurangi perdagangan yang tidak valid, dan memfilter sinyal palsu dengan memperkenalkan kondisi pengakuan tren.
  3. Pengelolaan risiko: built-in stop and loss untuk membantu mengendalikan risiko perdagangan dan melindungi keamanan dana investor.
  4. Penyesuaian dinamis: Penyesuaian posisi secara dinamis sesuai dengan kondisi konfirmasi tren, menanggapi perubahan pasar secara tepat waktu, mengurangi kerugian akibat pembalikan tren.

Risiko Strategis

  1. Risiko Optimasi Parameter: Kinerja strategi ini bergantung pada siklus SMA, pilihan parameter Stop Loss Leveling. Pengaturan parameter yang tidak tepat dapat menyebabkan efektivitas strategi yang buruk.
  2. Risiko pasar yang bergoyang: Dalam lingkungan pasar yang bergoyang, sinyal perdagangan yang sering dapat menyebabkan overtrading, meningkatkan biaya dan risiko perdagangan.
  3. Risiko Kejadian Luar Biasa: Pasar dapat mengalami fluktuasi besar dalam menghadapi peristiwa besar yang tidak terduga, dan strategi ini mungkin tidak dapat ditindaklanjuti dengan tepat waktu, menyebabkan kerugian besar.

Arah optimasi strategi

  1. Memperkenalkan lebih banyak indikator teknis: Digabungkan dengan indikator teknis lainnya, seperti MACD, RSI, dan lain-lain, untuk meningkatkan akurasi dan stabilitas penilaian tren.
  2. Optimalkan pilihan parameter: mencari siklus SMA terbaik melalui pengembalian data historis dan optimalisasi parameter, kombinasi parameter stop loss dan stop loss, meningkatkan kinerja strategi.
  3. Peningkatan manajemen risiko: memperkenalkan teknologi manajemen risiko yang lebih canggih, seperti stop loss dinamis, manajemen posisi, dan lain-lain, untuk mengontrol lebih lanjut risiko.
  4. Beradaptasi dengan kondisi pasar yang berbeda: Beradaptasi secara dinamis dengan parameter strategi berdasarkan volatilitas pasar dan intensitas tren, sehingga strategi dapat beradaptasi dengan kondisi pasar yang berbeda.

Meringkaskan

Strategi multi-skala waktu SMA trend tracking dan stop loss dinamis memanfaatkan SMA dari berbagai skala waktu untuk menangkap tren pasar, dengan mengkonfirmasi kondisi filter sinyal palsu melalui tren, sementara pengaturan stop loss dan fungsi penyesuaian posisi dinamis, mencapai tujuan trend tracking dan manajemen risiko. Meskipun strategi ini memiliki beberapa keuntungan, namun masih menghadapi risiko seperti optimasi parameter, pasar yang bergoyang dan peristiwa mendadak. Di masa depan dapat dioptimalkan dengan memperkenalkan lebih banyak indikator teknis, mengoptimalkan pilihan parameter, meningkatkan manajemen risiko dan beradaptasi dengan berbagai kondisi pasar, untuk meningkatkan kebugaran strategi dan kemampuan menghasilkan keuntungan.

Kode Sumber 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')