Strategi perdagangan pembalikan purata pergerakan aliran komposit

MA EMA TEMA DEMA WMA SMA
Tarikh penciptaan: 2025-02-20 17:20:42 Akhirnya diubah suai: 2025-02-27 17:23:21
Salin: 0 Bilangan klik: 394
2
fokus pada
319
Pengikut

Strategi perdagangan pembalikan purata pergerakan aliran komposit Strategi perdagangan pembalikan purata pergerakan aliran komposit

Gambaran keseluruhan

Strategi ini adalah sistem trend-tracking dan berbalik-balik perdagangan berdasarkan garis rata-rata komposit. Ia mengenal pasti peluang perdagangan dengan menggabungkan purata bergerak dari pelbagai kitaran, digabungkan dengan tindak balas harga terhadap garis rata-rata.

Prinsip Strategi

Strategi ini menggunakan kombinasi pelbagai jenis purata bergerak (EMA, TEMA, DEMA, WMA, SMA) untuk membina purata kompleks melalui dua kitaran yang berbeza (default 20 dan 30). Strategi ini akan menunggu harga kembali ke sekitar purata (melalui kawalan parameter peratusan tindak balas) setelah trend ditubuhkan.

Kelebihan Strategik

  1. Sistem ini mempunyai kemampuan adaptasi yang baik, menyokong pelbagai jenis garis rata, dan boleh memilih garis rata yang paling sesuai mengikut ciri-ciri pasaran yang berbeza.
  2. Dengan menggunakan garis purata gabungan, ia berkesan mengurangkan isyarat palsu yang mungkin dibawa oleh garis purata kitaran tunggal.
  3. Strategi ini menambah konsep peratusan tindak balas, mengelakkan perdagangan melintasi garis rata yang mudah dan meningkatkan kebolehpercayaan perdagangan.
  4. Apabila arah trend jelas, harga dagangan yang lebih baik boleh diperoleh dengan menunggu untuk masuk semula ke dalam pasaran.

Risiko Strategik

  1. Dalam pasaran yang bergolak, isyarat palsu yang kerap berlaku boleh menyebabkan kos dagangan meningkat.
  2. Keterlambatan garis rata-rata komposit boleh menyebabkan kelewatan masa masuk dan keluar.
  3. Peratusan tindak balas tetap mungkin memerlukan penyesuaian dalam keadaan pasaran yang berbeza.
  4. Dalam pasaran yang bertukar trend dengan pantas, kemungkinan akan berlaku penurunan yang lebih besar.

Arah pengoptimuman strategi

  1. Indeks turun naik boleh diperkenalkan untuk menyesuaikan kadar tindak balas secara dinamik, menjadikan strategi lebih sesuai dengan keadaan pasaran yang berbeza.
  2. Penambahan faktor kuantiti urus niaga untuk mengesahkan keberkesanan pembalikan harga.
  3. Pertimbangkan untuk menambah mekanisme hentian dan penangguhan untuk mengawal risiko.
  4. Anda boleh meningkatkan penghakiman kekuatan trend dengan menggunakan parameter yang lebih radikal dalam trend yang kuat.
  5. Pertimbangkan untuk masuk ke dalam keadaan pasaran, menggunakan kombinasi parameter yang berbeza di bawah ciri-ciri pasaran yang berbeza.

ringkaskan

Ini adalah strategi yang menggabungkan trend mengikuti dan membalikkan falsafah perdagangan untuk menangkap peluang perdagangan dengan menggabungkan garis rata dan mekanisme tindak balas harga. Kelebihan utama strategi ini adalah fleksibiliti dan keupayaan untuk menyaring isyarat palsu, tetapi juga memerlukan perhatian kepada pengoptimuman parameter dalam keadaan pasaran yang berbeza. Dengan kawalan risiko yang munasabah dan penambahbaikan pengoptimuman berterusan, strategi ini dijangka memperoleh keuntungan yang stabil dalam perdagangan sebenar.

Kod sumber strategi
/*backtest
start: 2024-10-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ultrajante MA Reaction Strategy", overlay=true, initial_capital=10000, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ===== Custom Functions for DEMA and TEMA =====
dema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    2 * ema1 - ema2

tema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    ema3 = ta.ema(ema2, length)
    3 * ema1 - 3 * ema2 + ema3

// ===== Configuration Parameters =====

// MA Type Selection
maType = input.string(title="MA Type", defval="EMA", options=["SMA", "EMA", "WMA", "DEMA", "TEMA"])

// Parameters for composite periods
periodA = input.int(title="Period A", defval=20, minval=1)
periodB = input.int(title="Period B", defval=30, minval=1)
compMethod = input.string(title="Composite Method", defval="Average", options=["Average", "Weighted"])

// Reaction percentage (e.g., 0.5 means 0.5%)
reactionPerc = input.float(title="Reaction %", defval=0.5, step=0.1)

// ===== Composite Period Calculation =====
compPeriod = compMethod == "Average" ? math.round((periodA + periodB) / 2) : math.round((periodA * 0.6 + periodB * 0.4))

// ===== Moving Average Calculation based on selected type =====
ma = switch maType
    "SMA"  => ta.sma(close, compPeriod)
    "EMA"  => ta.ema(close, compPeriod)
    "WMA"  => ta.wma(close, compPeriod)
    "DEMA" => dema(close, compPeriod)
    "TEMA" => tema(close, compPeriod)
    => ta.ema(close, compPeriod)  // Default value

plot(ma, color=color.blue, title="MA")

// ===== Trend Definition =====
trendUp = close > ma
trendDown = close < ma

// ===== Reaction Threshold Calculation =====
// In uptrend: expect the price to retrace to or below a value close to the MA
upThreshold = ma * (1 - reactionPerc / 100)
// In downtrend: expect the price to retrace to or above a value close to the MA
downThreshold = ma * (1 + reactionPerc / 100)

// ===== Quick Reaction Detection =====
// For uptrend: reaction is detected if the low is less than or equal to the threshold and the close recovers and stays above the MA
upReaction = trendUp and (low <= upThreshold) and (close > ma)
// For downtrend: reaction is detected if the high is greater than or equal to the threshold and the close stays below the MA
downReaction = trendDown and (high >= downThreshold) and (close < ma)

// ===== Trade Execution =====
if upReaction
    // Close short position if exists and open long position
    strategy.close("Short", comment="Close Short due to Bullish Reaction")
    strategy.entry("Long", strategy.long, comment="Long Entry due to Bullish Reaction in Uptrend")

if downReaction
    // Close long position if exists and open short position
    strategy.close("Long", comment="Close Long due to Bearish Reaction")
    strategy.entry("Short", strategy.short, comment="Short Entry due to Bearish Reaction in Downtrend")

// ===== Visualization of Reactions on the Chart =====
plotshape(upReaction, title="Bullish Reaction", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small, text="Long")
plotshape(downReaction, title="Bearish Reaction", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small, text="Short")