EMA/SMA trend mengikuti dan strategi dagangan swing digabungkan dengan penapisan volum dan peratusan stop loss dan sistem ambil untung

EMA SMA
Tarikh penciptaan: 2024-12-11 15:12:35 Akhirnya diubah suai: 2024-12-11 15:12:35
Salin: 1 Bilangan klik: 444
1
fokus pada
1617
Pengikut

EMA/SMA trend mengikuti dan strategi dagangan swing digabungkan dengan penapisan volum dan peratusan stop loss dan sistem ambil untung

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan komprehensif yang menggabungkan trend tracking dengan kaedah perdagangan jangka panjang untuk membina sistem perdagangan lengkap melalui EMA dan SMA crossover, pengenalan tahap tinggi dan rendah, penapisan jumlah transaksi, dan peratusan stop loss dan mekanisme tracking stop loss. Reka bentuk strategi memberi tumpuan kepada pengesahan isyarat pelbagai dimensi, meningkatkan ketepatan dan kebolehpercayaan perdagangan melalui sinergi indikator teknikal.

Prinsip Strategi

Strategi ini menggunakan mekanisme penapisan isyarat bertingkat, pertama menggunakan EMA ((10) dan SMA ((21) untuk menilai tren asas pembentukan silang, kemudian memutuskan masa masuk dengan memecahkan titik tinggi dan rendah enam garis K di sebelah kiri dan kanan, sambil meminta jumlah transaksi lebih besar daripada rata-rata bergerak 200 kitaran, untuk memastikan perdagangan dalam persekitaran yang cukup likuid. Sistem ini menggunakan 2% peratusan stop dan 1% tracking stop loss untuk menguruskan risiko. Apabila harga menembusi tahap tinggi dan memenuhi syarat transaksi, sistem ini membuka banyak pesanan; apabila harga menembusi tahap rendah dan memenuhi syarat transaksi, sistem ini membuka kosong.

Kelebihan Strategik

  1. Mekanisme pengesahan pelbagai isyarat mengurangkan isyarat palsu: meningkatkan kebolehpercayaan dagangan dengan meningkatkan pengesahan tiga kali ganda melalui trend garis rata-rata, penembusan harga dan jumlah transaksi
  2. Mekanisme Stop Loss Fleksibel: Tetapkan Stop Loss dengan Peratusan, dan Tumpukan Tracking Stop Loss untuk Kunci Keuntungan
  3. Sistem visualisasi yang baik: menyediakan paparan grafik garis rata dan titik penembusan untuk pemantauan perdagangan
  4. Kebolehsuaian yang tinggi: parameter utama boleh disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza
  5. Pengurusan risiko yang sistematik: mengawal risiko dengan berhenti rugi dan berhenti posisi yang ditetapkan

Risiko Strategik

  1. Pasaran horizontal mungkin sering berlaku penembusan palsu
  2. Penapis kuantiti mungkin terlepas beberapa isyarat yang sah
  3. Peratusan Tetap Penangguhan Kemungkinan Keluar Terdahulu Dalam Keadaan Kuat
  4. Sistem Garis Persamaan Terbelakang Dalam Pergerakan Ke Pasar
  5. Kesan kos urus niaga ke atas pulangan strategi perlu dipertimbangkan

Arah pengoptimuman strategi

  1. Memperkenalkan mekanisme penyesuaian kadar turun naik, secara dinamik menyesuaikan parameter stop-loss
  2. Meningkatkan penapisan kekuatan trend untuk mengelakkan perdagangan dalam trend lemah
  3. Mengoptimumkan algoritma penapisan jumlah transaksi, mempertimbangkan perubahan jumlah transaksi relatif
  4. Menambah mekanisme penapisan masa untuk mengelakkan dagangan pada waktu yang tidak sesuai
  5. Pertimbangkan untuk memasukkan klasifikasi persekitaran pasaran, menggunakan parameter yang berbeza untuk pasaran yang berbeza

ringkaskan

Strategi ini membina sistem perdagangan yang lengkap, sesuai untuk trend jangka panjang dan sederhana, melalui sistem garis sejajar, penembusan harga dan pengesahan kuantiti transaksi. Kelebihan sistem ini adalah pengesahan pelbagai isyarat dan mekanisme pengurusan risiko yang baik, tetapi juga perlu berhati-hati dengan prestasi di pasaran horizontal. Dengan arah pengoptimuman yang dicadangkan, strategi ini masih mempunyai ruang untuk meningkatkan, terutamanya dalam penambahbaikan dalam bidang penyesuaian diri akan membantu meningkatkan kestabilan strategi.

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

//@version=5
// Strategy combining EMA/SMA Crossover, Swing High/Low, Volume Filtering, and Percentage TP & Trailing Stop
strategy("Swing High/Low Strategy with Volume, EMA/SMA Crossovers, Percentage TP and Trailing Stop", overlay=true)

// --- Inputs ---
source = close
TITLE = input(false, title='Enable Alerts & Background Color for EMA/SMA Crossovers')
turnonAlerts = input(true, title='Turn on Alerts?')
colorbars = input(true, title="Color Bars?")
turnonEMASMA = input(true, title='Turn on EMA1 & SMA2?')
backgroundcolor = input(false, title='Enable Background Color?')

// EMA/SMA Lengths
emaLength = input.int(10, minval=1, title='EMA Length')
smaLength = input.int(21, minval=1, title='SMA Length')
ema1 = ta.ema(source, emaLength)
sma2 = ta.sma(source, smaLength)

// Swing High/Low Lengths
leftBars = input.int(6, title="Left Bars for Swing High/Low", minval=1)
rightBars = input.int(6, title="Right Bars for Swing High/Low", minval=1)

// Volume MA Length
volMaLength = input.int(200, title="Volume Moving Average Length")

// Percentage Take Profit with hundredth place adjustment
takeProfitPercent = input.float(2.00, title="Take Profit Percentage (%)", minval=0.01, step=0.01) / 100

// Trailing Stop Loss Option
useTrailingStop = input.bool(true, title="Enable Trailing Stop Loss?")
trailingStopPercent = input.float(1.00, title="Trailing Stop Loss Percentage (%)", minval=0.01, step=0.01) / 100

// --- Swing High/Low Logic ---
pivotHigh(_leftBars, _rightBars) =>
    ta.pivothigh(_leftBars, _rightBars)

pivotLow(_leftBars, _rightBars) =>
    ta.pivotlow(_leftBars, _rightBars)

ph = fixnan(pivotHigh(leftBars, rightBars))
pl = fixnan(pivotLow(leftBars, rightBars))

// --- Volume Condition ---
volMa = ta.sma(volume, volMaLength)

// Declare exit conditions as 'var' so they are initialized
var bool longExitCondition = na
var bool shortExitCondition = na

// --- Long Entry Condition: Close above Swing High & Volume >= 200 MA ---
longCondition = (close > ph and volume >= volMa)
if (longCondition)
    strategy.entry("Long", strategy.long)

// --- Short Entry Condition: Close below Swing Low & Volume >= 200 MA ---
shortCondition = (close < pl and volume >= volMa)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// --- Take Profit and Trailing Stop Logic ---

// For long position: Set take profit at the entry price + takeProfitPercent
longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercent)

// --- Long Exit Logic ---
if (useTrailingStop)
    // Trailing Stop for Long
    strategy.exit("Long Exit", "Long", stop=na, trail_offset=strategy.position_avg_price * trailingStopPercent, limit=longTakeProfitLevel)
else
    // Exit Long on Take Profit only
    strategy.exit("Long Exit", "Long", limit=longTakeProfitLevel)

// --- Short Exit Logic ---
if (useTrailingStop)
    // Trailing Stop for Short
    strategy.exit("Short Exit", "Short", stop=na, trail_offset=strategy.position_avg_price * trailingStopPercent, limit=shortTakeProfitLevel)
else
    // Exit Short on Take Profit only
    strategy.exit("Short Exit", "Short", limit=shortTakeProfitLevel)

// --- Plot Swing High/Low ---

plot(ph, style=plot.style_circles, linewidth=1, color=color.blue, offset=-rightBars, title="Swing High")
plot(ph, style=plot.style_line, linewidth=1, color=color.blue, offset=0, title="Swing High")
plot(pl, style=plot.style_circles, linewidth=1, color=color.red, offset=-rightBars, title="Swing High")
plot(pl, style=plot.style_line, linewidth=1, color=color.red, offset=0, title="Swing High")
// --- Plot EMA/SMA ---
plot(turnonEMASMA ? ema1 : na, color=color.green, title="EMA")
plot(turnonEMASMA ? sma2 : na, color=color.orange, title="SMA")

// --- Alerts ---
alertcondition(longCondition, title="Long Entry", message="Price closed above Swing High with Volume >= 200 MA")
alertcondition(shortCondition, title="Short Entry", message="Price closed below Swing Low with Volume >= 200 MA")

// --- Bar Colors for Visualization ---
barcolor(longCondition ? color.green : na, title="Long Entry Color")
barcolor(shortCondition ? color.red : na, title="Short Entry Color")
bgcolor(backgroundcolor ? (ema1 > sma2 ? color.new(color.green, 50) : color.new(color.red, 50)) : na)