Strategi mengikuti tren EMA/SMA dan perdagangan ayunan dikombinasikan dengan penyaringan volume dan sistem persentase stop loss dan take profit

EMA SMA
Tanggal Pembuatan: 2024-12-11 15:12:35 Akhirnya memodifikasi: 2024-12-11 15:12:35
menyalin: 1 Jumlah klik: 444
1
fokus pada
1617
Pengikut

Strategi mengikuti tren EMA/SMA dan perdagangan ayunan dikombinasikan dengan penyaringan volume dan sistem persentase stop loss dan take profit

Ringkasan

Strategi ini adalah sistem perdagangan komprehensif yang menggabungkan pelacakan tren dengan metode perdagangan band, untuk membangun sistem perdagangan yang lengkap melalui EMA dan SMA crossover rata-rata, identifikasi titik tinggi dan rendah, penyaringan volume transaksi, dan persentase stop-loss dan mekanisme pelacakan stop-loss. Desain strategi berfokus pada pengakuan sinyal multi-dimensi, meningkatkan akurasi dan keandalan perdagangan melalui sinergi indikator teknis.

Prinsip Strategi

Strategi ini menggunakan mekanisme pemfilteran sinyal bertingkat, pertama-tama menggunakan penilaian tren dasar pembentukan silang EMA (10) dan SMA (21), kemudian memutuskan waktu masuk dengan memecahkan titik tinggi dan rendah dari enam garis K di sebelah kiri dan kanan, sambil meminta volume transaksi lebih besar dari rata-rata bergerak 200 siklus, untuk memastikan perdagangan di lingkungan yang cukup likuid. Sistem ini menggunakan 2% persentase stop loss dan 1% tracking stop loss untuk mengelola risiko.

Keunggulan Strategis

  1. Mekanisme konfirmasi sinyal ganda mengurangi sinyal palsu: meningkatkan keandalan perdagangan dengan triple verifikasi melalui tren rata-rata, harga yang terobosan dan volume transaksi
  2. Fleksibel Stop Loss: Setel stop loss dalam bentuk persentase, dan track stop loss untuk mengunci keuntungan
  3. Sistem visualisasi yang baik: memberikan tampilan grafis dari garis rata, titik terobosan, untuk memudahkan pemantauan perdagangan
  4. Kustomisasi tinggi: parameter kunci dapat disesuaikan untuk menyesuaikan dengan lingkungan pasar yang berbeda
  5. Manajemen risiko yang sistematis: Mengontrol risiko melalui default stop loss dan stop loss

Risiko Strategis

  1. Pasar horizontal mungkin akan sering terjadi false breaks
  2. Filter volume transaksi mungkin melewatkan beberapa sinyal yang valid
  3. Penjaga Persentase Tetap Mungkin Berangkat Lebih Awal dari Kondisi Kuat
  4. Sistem Garis Persis Terbelakang dalam Pergeseran Ke Pasar yang Cepat
  5. Dampak biaya transaksi terhadap pengembalian strategi perlu dipertimbangkan

Arah optimasi strategi

  1. Memperkenalkan mekanisme adaptasi tingkat fluktuasi, secara dinamis menyesuaikan parameter stop-loss
  2. Meningkatkan penyaringan kekuatan tren untuk menghindari perdagangan dalam tren lemah
  3. Mengoptimalkan algoritma penyaringan lalu lintas, mempertimbangkan perubahan lalu lintas relatif
  4. Menambahkan mekanisme penyaringan waktu untuk menghindari perdagangan pada waktu yang tidak menguntungkan
  5. Pertimbangkan untuk memasukkan klasifikasi lingkungan pasar, menggunakan parameter yang berbeda untuk pasar yang berbeda

Meringkaskan

Strategi ini membangun sistem perdagangan yang lengkap, cocok untuk pelacakan tren jangka menengah dan panjang melalui sistem linearitas, terobosan harga, dan verifikasi volume transaksi. Keunggulan sistem ini adalah pengakuan sinyal ganda dan mekanisme manajemen risiko yang baik, tetapi juga perlu memperhatikan kinerja di pasar horizontal. Dengan arah optimasi yang disarankan, strategi ini masih memiliki ruang untuk ditingkatkan, terutama perbaikan dalam aspek fleksibilitas yang akan membantu meningkatkan stabilitas strategi.

Kode 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)