Penjejakan aliran SMA berskala masa dan strategi henti kerugian dinamik

SMA Trend
Tarikh penciptaan: 2024-06-03 10:57:05 Akhirnya diubah suai: 2024-06-03 10:57:05
Salin: 3 Bilangan klik: 553
1
fokus pada
1617
Pengikut

Penjejakan aliran SMA berskala masa dan strategi henti kerugian dinamik

Gambaran keseluruhan

Strategi ini berdasarkan purata bergerak sederhana (SMA) pada skala masa yang berbeza untuk menangkap trend pasaran. Ia menghasilkan isyarat beli dan jual dengan membandingkan kedudukan relatif SMA jangka pendek dan jangka panjang. Ia juga menggunakan syarat 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. Apabila SMA pendek di atas SMA panjang, ia menghasilkan isyarat beli; apabila SMA pendek di bawah SMA panjang, ia menghasilkan isyarat jual.
  3. Menggunakan syarat pengesahan trend untuk menyaring isyarat palsu, hanya melakukan pembelian apabila trend utama adalah lebih banyak, dan hanya melakukan penjualan apabila trend utama adalah kosong.
  4. Tetapkan fungsi hentikan dan hentikan untuk mengawal risiko perdagangan. Apabila harga mencapai tahap hentikan atau hentikan yang ditetapkan, keluar dari kedudukan.
  5. Mengubah kedudukan secara dinamik mengikut keadaan pengesahan trend. Apabila trend utama berubah, tutup kedudukan tepat pada masanya, untuk mengelakkan kerugian yang disebabkan oleh pembalikan trend.

Kelebihan Strategik

  1. Pengesanan Trend: Strategi ini berdasarkan SMA pada skala masa yang berbeza, mampu menangkap trend utama pasaran dengan berkesan dan menyesuaikan diri dengan keadaan pasaran yang berbeza.
  2. Pengesahan Trend: Meningkatkan kebolehpercayaan isyarat perdagangan, mengurangkan perdagangan yang tidak sah dengan memperkenalkan syarat pengesahan trend, menapis isyarat palsu.
  3. Pengurusan Risiko: Penangguhan dan Hentikan Kerosakan yang dibina untuk membantu mengawal risiko perdagangan dan melindungi keselamatan dana pelabur.
  4. Penyesuaian dinamik: Penyesuaian dinamik kedudukan pemegang mengikut keadaan pengesahan trend, bertindak balas tepat pada masanya terhadap perubahan pasaran, mengurangkan kerugian yang disebabkan oleh pembalikan trend.

Risiko Strategik

  1. Risiko pengoptimuman parameter: Prestasi strategi bergantung kepada kitaran SMA, pilihan parameter paras paras paras paras paras. Tetapan parameter yang tidak sesuai boleh menyebabkan kesan strategi yang tidak baik.
  2. Risiko pasaran goyah: Dalam persekitaran pasaran goyah, isyarat dagangan yang kerap boleh menyebabkan perdagangan berlebihan, meningkatkan kos dan risiko perdagangan.
  3. Risiko Kejadian Tiba-tiba: Pasaran mungkin mengalami turun naik yang teruk dalam menghadapi peristiwa besar yang tiba-tiba, strategi ini mungkin tidak dapat bertindak balas tepat pada masanya, menyebabkan kerugian yang lebih besar.

Arah pengoptimuman strategi

  1. Memperkenalkan lebih banyak petunjuk teknikal: Gabungan dengan petunjuk teknikal lain, seperti MACD, RSI dan lain-lain, meningkatkan ketepatan dan kestabilan penilaian trend.
  2. Pilihan parameter pengoptimuman: mencari kitaran SMA yang optimum melalui pengesanan semula data sejarah dan pengoptimuman parameter, kombinasi parameter paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras
  3. Peningkatan pengurusan risiko: memperkenalkan teknik pengurusan risiko yang lebih maju, seperti hentian dinamik, pengurusan kedudukan, dan lain-lain, untuk mengawal lebih jauh risiko.
  4. Sesuaikan dengan keadaan pasaran yang berbeza: menyesuaikan parameter strategi secara dinamik mengikut turun naik pasaran dan kekuatan trend, membolehkan strategi menyesuaikan diri dengan keadaan pasaran yang berbeza.

ringkaskan

Strategi SMA trend pemantauan pelbagai skala masa dan strategi berhenti bergerak menggunakan SMA yang merangkumi trend pasaran dalam skala masa yang berbeza, menapis isyarat palsu melalui syarat pengesahan tren, sambil menyediakan fungsi penyesuaian kedudukan berhenti berhenti dan dinamik, dan mencapai tujuan pemantauan trend dan pengurusan risiko. Walaupun strategi ini mempunyai kelebihan, ia masih menghadapi risiko seperti pengoptimuman parameter, pasaran yang bergolak dan peristiwa mendadak.

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