Strategi Gabungan Penjejakan Trend Purata Pergerakan Dinamik

EMA SMA Moving Average CROSSOVER TREND FOLLOWING STOP LOSS TAKE PROFIT
Tarikh penciptaan: 2025-02-24 09:46:10 Akhirnya diubah suai: 2025-02-24 09:46:10
Salin: 1 Bilangan klik: 315
2
fokus pada
319
Pengikut

Strategi Gabungan Penjejakan Trend Purata Pergerakan Dinamik Strategi Gabungan Penjejakan Trend Purata Pergerakan Dinamik

Gambaran keseluruhan

Strategi ini adalah sistem pengesanan trend yang berasaskan pelbagai persilangan rata-rata, menggabungkan indikator SMA dan EMA untuk menangkap trend pasaran. Strategi ini menggunakan gabungan purata bergerak sederhana ((SMA) dan dua purata bergerak indeks ((EMA) dengan kitaran yang disesuaikan, untuk membina sistem perdagangan pengesanan trend yang lengkap. Ia juga mengintegrasikan mekanisme pengurusan sasaran stop-loss dan keuntungan yang dinamik, mengawal risiko dan mengunci keuntungan dengan berkesan.

Prinsip Strategi

Strategi ini membuat keputusan perdagangan berdasarkan hubungan dinamik antara tiga garis rata. Sistem ini menentukan arah trend dengan memantau kedudukan harga berbanding SMA, dan persilangan EMA cepat dengan EMA perlahan. Isyarat masuk terbahagi kepada dua cara pemicu: satu adalah harga di atas SMA di bawah () dan EMA cepat di atas () melalui EMA perlahan; kedua adalah harga menembusi SMA dan harga pra-peringkat terus di atas SMA di bawah () Strategi ini menggunakan mekanisme stop loss dinamik, EMA stop loss awal berdasarkan kedudukan atau peratusan tetap, dan kedudukan stop loss akan disesuaikan dengan keuntungan yang meningkat.

Kelebihan Strategik

  1. Penggunaan gabungan garis purata berganda meningkatkan ketepatan penilaian trend dan mengurangkan kerugian akibat perobosan palsu
  2. Reka bentuk syarat kemasukan berganda dapat menangkap peluang pada permulaan trend dan juga dapat menjejaki kesinambungan trend yang telah ditetapkan
  3. Mekanisme Hentian Kerosakan Dinamik melindungi mata wang yang telah menguntungkan dan memberi ruang kepada trend untuk berkembang sepenuhnya
  4. Tetapan stop loss yang munasabah, keseimbangan yang baik antara kawalan risiko dan ruang keuntungan
  5. Persahabatan garis rata sebagai syarat tambahan untuk mengelakkan risiko pembalikan trend

Risiko Strategik

  1. Perdagangan yang kerap boleh menyebabkan kerugian dalam pasaran yang bergolak
  2. Sistem Garis Rata-Rata Berbilang boleh menyebabkan ketinggalan dalam pasaran yang bergolak dengan cepat
  3. Pelbagai Stop Loss yang tetap mungkin tidak sesuai untuk semua keadaan pasaran
  4. Di pasaran yang lebih bergolak, stop loss bergerak boleh mengunci keuntungan terlalu awal
  5. Terlalu banyak pengoptimuman parameter boleh menyebabkan strategi tidak berprestasi dengan hasil pengujian semula di cakera

Arah pengoptimuman strategi

  1. Memperkenalkan penunjuk kadar turun naik untuk menyesuaikan stop loss dan stop loss secara dinamik, menjadikan strategi lebih sesuai dengan keadaan pasaran yang berbeza
  2. Meningkatkan penunjuk jumlah pesanan sebagai pengesahan tambahan untuk meningkatkan kebolehpercayaan isyarat masuk
  3. Memperbaharui kitaran garis rata mengikut dinamika ciri-ciri pasaran yang bergolak untuk meningkatkan daya serap strategi
  4. Menambah penapis kekuatan trend untuk mengelakkan perdagangan yang kerap dalam keadaan trend yang lemah
  5. Membangunkan mekanisme hentian mudah alih yang beradaptasi untuk menyesuaikan jarak hentian mengikut dinamik turun naik pasaran

ringkaskan

Strategi ini membina sistem pemantauan trend yang lengkap dengan penggunaan gabungan pelbagai garis rata-rata, dengan reka bentuk peraturan terperinci dalam aspek masuk, keluar dan pengurusan risiko. Kelebihan strategi adalah dapat mengenal pasti dan menjejaki trend dengan berkesan, sambil melindungi keuntungan melalui mekanisme hentian kerugian dinamik. Walaupun terdapat beberapa risiko yang wujud, strategi ini dapat meningkatkan lagi kestabilan dan kesesuaian dengan arah pengoptimuman yang dikemukakan.

Kod sumber strategi
/*backtest
start: 2025-02-17 17:00:00
end: 2025-02-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("交易策略(自定义EMA/SMA参数)", overlay=true, initial_capital=100000, currency=currency.EUR, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// 输入参数:可调的 SMA 和 EMA 周期
smaLength     = input.int(120, "SMA Length", minval=1, step=1)
emaFastPeriod = input.int(13, "EMA Fast Period", minval=1, step=1)
emaSlowPeriod = input.int(21, "EMA Slow Period", minval=1, step=1)

// 计算均线
smaVal   = ta.sma(close, smaLength)
emaFast  = ta.ema(close, emaFastPeriod)
emaSlow  = ta.ema(close, emaSlowPeriod)

// 绘制均线
plot(smaVal, color=color.orange, title="SMA")
plot(emaFast, color=color.blue, title="EMA Fast")
plot(emaSlow, color=color.red, title="EMA Slow")

// 入场条件 - 做多
// 条件1:收盘价高于SMA 且 EMA Fast 向上穿越 EMA Slow
longTrigger1 = (close > smaVal) and ta.crossover(emaFast, emaSlow)
// 条件2:收盘价上穿SMA 且前5根K线的最低价均高于各自的SMA
longTrigger2 = ta.crossover(close, smaVal) and (low[1] > smaVal[1] and low[2] > smaVal[2] and low[3] > smaVal[3] and low[4] > smaVal[4] and low[5] > smaVal[5])
longCondition = longTrigger1 or longTrigger2

// 入场条件 - 做空
// 条件1:收盘价低于SMA 且 EMA Fast 向下穿越 EMA Slow
shortTrigger1 = (close < smaVal) and ta.crossunder(emaFast, emaSlow)
// 条件2:收盘价下穿SMA 且前5根K线的最高价均低于各自的SMA
shortTrigger2 = ta.crossunder(close, smaVal) and (high[1] < smaVal[1] and high[2] < smaVal[2] and high[3] < smaVal[3] and high[4] < smaVal[4] and high[5] < smaVal[5])
shortCondition = shortTrigger1 or shortTrigger2

// 定义变量记录入场时的价格与EMA Fast值,用于计算止损
var float entryPriceLong      = na
var float entryEMA_Fast_Long   = na
var float entryPriceShort     = na
var float entryEMA_Fast_Short = na

// 入场与初始止盈止损设置 - 做多
// 止损取“开仓时的EMA Fast价格”与“0.2%止损”中较大者;止盈为止损的5倍
if (longCondition and strategy.position_size == 0)
    entryPriceLong      := close
    entryEMA_Fast_Long  := emaFast
    strategy.entry("Long", strategy.long)
    stopPercLong = math.max(0.002, (entryPriceLong - entryEMA_Fast_Long) / entryPriceLong)
    stopLong     = entryPriceLong * (1 - stopPercLong)
    tpLong       = entryPriceLong * (1 + 5 * stopPercLong)
    strategy.exit("LongExit", "Long", stop=stopLong, limit=tpLong)

// 入场与初始止盈止损设置 - 做空
// 止损取“开仓时的EMA Fast价格”与“0.2%止损”中较大者;止盈为止损的5倍
if (shortCondition and strategy.position_size == 0)
    entryPriceShort      := close
    entryEMA_Fast_Short  := emaFast
    strategy.entry("Short", strategy.short)
    stopPercShort = math.max(0.002, (entryEMA_Fast_Short - entryPriceShort) / entryPriceShort)
    stopShort     = entryPriceShort * (1 + stopPercShort)
    tpShort       = entryPriceShort * (1 - 5 * stopPercShort)
    strategy.exit("ShortExit", "Short", stop=stopShort, limit=tpShort)

// 移动止损逻辑
// 当持仓盈利达到0.8%时更新止损和止盈,保持止盈为止损的5倍
var float longHighest = na
if (strategy.position_size > 0)
    longHighest := na(longHighest) ? high : math.max(longHighest, high)
    if (high >= entryPriceLong * 1.008)
        newLongStop = longHighest * (1 - 0.003)
        newPerc     = (entryPriceLong - newLongStop) / entryPriceLong
        newLongTP   = entryPriceLong * (1 + 5 * newPerc)
        strategy.exit("LongExit", "Long", stop=newLongStop, limit=newLongTP)
else
    longHighest := na

var float shortLowest = na
if (strategy.position_size < 0)
    shortLowest := na(shortLowest) ? low : math.min(shortLowest, low)
    if (low <= entryPriceShort * 0.992)
        newShortStop  = shortLowest * (1 + 0.003)
        newPercShort  = (newShortStop - entryPriceShort) / entryPriceShort
        newShortTP    = entryPriceShort * (1 - 5 * newPercShort)
        strategy.exit("ShortExit", "Short", stop=newShortStop, limit=newShortTP)
else
    shortLowest := na

// 额外平仓条件
// 如果持多仓时EMA Fast下穿EMA Slow,则立即平多
if (strategy.position_size > 0 and ta.crossunder(emaFast, emaSlow))
    strategy.close("Long", comment="EMA下穿平多")
// 如果持空仓时EMA Fast上穿EMA Slow,则立即平空
if (strategy.position_size < 0 and ta.crossover(emaFast, emaSlow))
    strategy.close("Short", comment="EMA上穿平空")