Sumber dimuat naik... memuat...

Trend Dinamik Multi-Indikator Berikutan Strategi Berdasarkan EMA dan SMA

Penulis:ChaoZhang, Tarikh: 2024-12-27 14:12:50
Tag:EMASMAATRPPsupertrend

img

Ringkasan Strategi

Strategi ini adalah sistem trend berikut dinamik yang menggabungkan beberapa penunjuk teknikal. Ia mengintegrasikan Pivot Points, penunjuk SuperTrend, dan isyarat crossover purata bergerak untuk mengenal pasti trend pasaran dan peluang perdagangan. Ciri utama strategi ini adalah pendekatan analisis jangka masa tetap, memastikan konsistensi isyarat sambil mengesahkan isyarat melalui titik pivot.

Prinsip Strategi

Strategi ini beroperasi berdasarkan mekanisme teras berikut:

  1. Menggunakan data harga jangka masa tetap untuk analisis, mengelakkan gangguan dari jangka masa yang berbeza
  2. Mengira SMA berdasarkan EMA 8 tempoh dan 21 tempoh untuk membentuk trend selepas asas
  3. Menggabungkan titik ATR dan pivot untuk mengira penunjuk SuperTrend untuk pengesahan arah trend
  4. Hanya menganggap isyarat silang SMA sah jika ia berlaku dalam tempoh 3 titik pivot
  5. Mengira secara dinamik dan mengesan tahap sokongan/tahan untuk rujukan perdagangan

Kelebihan Strategi

  1. Penanda silang beberapa penanda meningkatkan kebolehpercayaan isyarat
  2. Analisis jangka masa tetap mengurangkan gangguan isyarat palsu
  3. Pengesahan titik pusingan memastikan perdagangan berlaku pada tahap harga utama
  4. Pengesanan dinamik sokongan / rintangan membantu menentukan tahap hentian kerugian dan mengambil keuntungan
  5. Penunjuk SuperTrend memberikan pengesahan arah trend tambahan
  6. Tetapan parameter yang fleksibel membolehkan penyesuaian untuk keadaan pasaran yang berbeza

Risiko Strategi

  1. Pelbagai penunjuk boleh menyebabkan kelewatan isyarat
  2. Boleh menghasilkan isyarat palsu yang berlebihan di pasaran yang berbeza
  3. Analisis jangka masa tetap mungkin terlepas isyarat penting dalam jangka masa lain
  4. Pengesahan titik pusingan boleh menyebabkan kehilangan beberapa peluang perdagangan penting
  5. Pengoptimuman parameter boleh membawa kepada overfit

Arahan Pengoptimuman Strategi

  1. Memperkenalkan mekanisme penapisan turun naik untuk mengurangkan kekerapan dagangan semasa tempoh turun naik yang rendah
  2. Tambah penunjuk pengesahan kekuatan trend seperti ADX atau MACD
  3. Membangunkan sistem parameter adaptif yang menyesuaikan secara dinamik berdasarkan keadaan pasaran
  4. Menggabungkan analisis jumlah untuk meningkatkan kebolehpercayaan isyarat
  5. Melaksanakan mekanisme stop-loss dinamik yang menyesuaikan berdasarkan turun naik pasaran

Ringkasan

Strategi ini menubuhkan trend yang agak lengkap mengikuti sistem dagangan melalui gabungan beberapa penunjuk teknikal. Kelebihannya utama terletak pada peningkatan kebolehpercayaan isyarat melalui analisis jangka masa tetap dan pengesahan titik pivot. Walaupun terdapat risiko kelewatan tertentu, ini dapat dikawal dengan berkesan melalui pengoptimuman parameter dan langkah pengurusan risiko.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Buy Sell Pivot Point", overlay=true)

// Input Parameters
prd = input.int(defval=2, title="Periodo Pivot Point", minval=1, maxval=50)
Factor = input.float(defval=3, title="Fator ATR", minval=1, step=0.1)
Pd = input.int(defval=10, title="Periodo ATR", minval=1)
showpivot = input.bool(defval=false, title="Mostrar Pivot Points")
showlabel = input.bool(defval=true, title="Mostrar Buy/Sell Labels")
showcl = input.bool(defval=false, title="Mostrar PP Center Line")
showsr = input.bool(defval=false, title="Mostrar Support/Resistance")
sma1_length = input.int(defval=8, title="SMA 1")
sma2_length = input.int(defval=21, title="SMA 2")
timeframe_fix = input.timeframe("D", title="Timeframe Fixo")

// Request data from the fixed timeframe
fix_close = request.security(syminfo.tickerid, timeframe_fix, close)
fix_high = request.security(syminfo.tickerid, timeframe_fix, high)
fix_low = request.security(syminfo.tickerid, timeframe_fix, low)
fix_ph = request.security(syminfo.tickerid, timeframe_fix, ta.pivothigh(prd, prd))
fix_pl = request.security(syminfo.tickerid, timeframe_fix, ta.pivotlow(prd, prd))
fix_atr = request.security(syminfo.tickerid, timeframe_fix, ta.atr(Pd))

// Convert Pivot High/Low to valid boolean for conditions
ph_cond = not na(fix_ph)
pl_cond = not na(fix_pl)

// Draw Pivot Points
plotshape(ph_cond and showpivot, title="Pivot High", text="H", style=shape.labeldown, color=color.red, textcolor=color.red, location=location.abovebar, offset=-prd)
plotshape(pl_cond and showpivot, title="Pivot Low", text="L", style=shape.labelup, color=color.lime, textcolor=color.lime, location=location.belowbar, offset=-prd)

// Calculate the Center line using pivot points
var float center = na
lastpp = ph_cond ? fix_ph : pl_cond ? fix_pl : na
if not na(lastpp)
    center := na(center) ? lastpp : (center * 2 + lastpp) / 3

// Upper/Lower bands calculation
Up = center - (Factor * fix_atr)
Dn = center + (Factor * fix_atr)

// Get the trend
var float TUp = na
var float TDown = na
var int Trend = 0
TUp := na(TUp[1]) ? Up : fix_close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
TDown := na(TDown[1]) ? Dn : fix_close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
Trend := fix_close > TDown[1] ? 1 : fix_close < TUp[1] ? -1 : nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown

// Plot the trend
linecolor = Trend == 1 ? color.lime : Trend == -1 ? color.red : na
plot(Trailingsl, color=linecolor, linewidth=2, title="PP SuperTrend")

// Plot Center Line
plot(showcl ? center : na, color=showcl ? (center < fix_close ? color.blue : color.red) : na, title="Center Line")

// Calculate Base EMAs
ema_8 = ta.ema(fix_close, 8)
ema_21 = ta.ema(fix_close, 21)

// Calculate SMAs based on EMAs
sma1 = ta.sma(ema_8, sma1_length)
sma2 = ta.sma(ema_21, sma2_length)

// Plot SMAs
plot(sma1, color=#ffff00, linewidth=2, title="SMA 1 (based on EMA 8)")
plot(sma2, color=#aa00ff, linewidth=2, title="SMA 2 (based on EMA 21)")

// Initialize variables to track pivot points
var float last_pivot_time = na

// Update the pivot time when a new pivot is detected
if (ph_cond)
    last_pivot_time := bar_index
if (pl_cond)
    last_pivot_time := bar_index

// Calculate the crossover/crossunder signals
buy_signal = ta.crossover(sma1, sma2)  // SMA 8 crossing SMA 21 upwards
sell_signal = ta.crossunder(sma1, sma2)  // SMA 8 crossing SMA 21 downwards

// Ensure signal is only valid if it happens within 3 candles of a pivot point
valid_buy_signal = buy_signal and (bar_index - last_pivot_time <= 3)
valid_sell_signal = sell_signal and (bar_index - last_pivot_time <= 3)

// Plot Buy/Sell Signals
plotshape(valid_buy_signal and showlabel, title="Buy Signal", text="BUY", style=shape.labelup, color=color.lime, textcolor=color.black, location=location.belowbar)
plotshape(valid_sell_signal and showlabel, title="Sell Signal", text="SELL", style=shape.labeldown, color=color.red, textcolor=color.white, location=location.abovebar)

// Get S/R levels using Pivot Points
var float resistance = na
var float support = na
support := pl_cond ? fix_pl : support[1]
resistance := ph_cond ? fix_ph : resistance[1]

// Plot S/R levels
plot(showsr and not na(support) ? support : na, color=showsr ? color.lime : na, style=plot.style_circles, offset=-prd)
plot(showsr and not na(resistance) ? resistance : na, color=showsr ? color.red : na, style=plot.style_circles, offset=-prd)

// Execute trades based on valid signals
if valid_buy_signal
    strategy.entry("Buy", strategy.long)
if valid_sell_signal
    strategy.entry("Sell", strategy.short)

// Alerts
alertcondition(valid_buy_signal, title="Buy Signal", message="Buy Signal Detected")
alertcondition(valid_sell_signal, title="Sell Signal", message="Sell Signal Detected")
alertcondition(Trend != Trend[1], title="Trend Changed", message="Trend Changed")


Berkaitan

Lebih lanjut