
Sistem dagangan pergerakan bersalin adalah strategi dagangan berdasarkan momentum yang menggunakan crossover rata-rata bergerak indeks 8⁄21 klasik (EMA) untuk mengenal pasti perubahan trend dan menghasilkan isyarat dagangan bersalin. Strategi ini mengandungi parameter berhenti dan berhenti yang terbina dalam yang dapat menguruskan risiko dan mengunci keuntungan secara automatik. Logik teras strategi adalah membuat isyarat bersalin apabila EMA 8 bersalin melintasi EMA 21 bersalin ke atas (MA) dan membuat isyarat kosong apabila EMA 8 bersalin ke bawah (MA) dan melihat penurunan.
Prinsip utama strategi ini adalah berdasarkan hubungan silang antara purata bergerak indeks dari dua tempoh yang berbeza untuk menilai arah perubahan trend pasaran. Strategi ini dilaksanakan terutamanya melalui beberapa bahagian utama berikut:
Pengiraan penunjuk:
shortEma = ta.ema(close, shortEmaLength)longEma = ta.ema(close, longEmaLength)Syarat urus niaga:
longCondition = ta.crossover(shortEma, longEma)shortCondition = ta.crossunder(shortEma, longEma)Pengurusan Risiko:
longTakeProfit = close * (1 + takeProfitPerc / 100)longStopLoss = close * (1 - stopLossPerc / 100)shortTakeProfit = close * (1 - takeProfitPerc / 100)shortStopLoss = close * (1 + stopLossPerc / 100)Pelaksanaan urus niaga:
noOpenPosition = strategy.position_size == 0Reka bentuk ini memastikan bahawa strategi dapat menangkap peluang dengan cepat apabila trend berubah, sambil melindungi dana dengan parameter risiko yang telah ditetapkan.
Dengan analisis kod yang mendalam, strategi ini mempunyai kelebihan yang ketara:
Pengesanan trend yang mudah dan berkesan:8⁄21 EMA crossover adalah kaedah pengenalan trend yang telah terbukti secara meluas yang dapat menangkap perubahan dinamik pasaran dengan berkesan.
Pengurusan risiko menyeluruhSistem Stop Loss terbina dalam secara automatik melindungi dana dan mengunci keuntungan, mengurangkan risiko perdagangan emosi.
Konfigurasi parameter yang fleksibel: Pengguna boleh menyesuaikan panjang kitaran EMA, peratusan hentian dan hentian kerugian mengikut pasaran yang berbeza dan keutamaan risiko peribadi.
Keupayaan perdagangan dua halaStrategi ini menyokong kedua-dua over dan under dan mencari peluang dalam pelbagai keadaan pasaran.
Mencegah transaksi yang berlainanStrategi ini direka untuk memastikan bahawa tidak ada perdagangan baru dibuka sebelum satu perdagangan ditutup sepenuhnya, mengelakkan risiko perdagangan berlebihan dan penyebaran dana.
Penglihatan yang jelas: Memaparkan garis EMA dan penanda isyarat perdagangan untuk membolehkan peniaga memahami keadaan operasi strategi secara intuitif.
Kebolehgunaan luasStrategi ini sesuai dengan pelbagai jenis perdagangan dan tempoh masa, termasuk mata wang kripto, mata wang asing, saham dan indeks.
Walaupun strategi ini direka dengan baik, terdapat risiko yang berpotensi:
Pasaran horizontal tidak baikDalam pasaran goyah yang tidak mempunyai trend yang jelas, isyarat silang EMA mungkin berlaku secara kerap, menyebabkan beberapa perhentian kerugian.
Batasan untuk Stop Loss Peratusan TetapPerbezaan besar dalam pasaran dan tempoh masa, dan peratusan yang ditetapkan untuk stop loss mungkin tidak sesuai untuk semua keadaan.
Titik tergelincir dan risiko pelaksanaanDalam perdagangan dalam talian, pesanan mungkin tidak dapat dilaksanakan dengan tepat mengikut harga yang dihasilkan oleh strategi, terutamanya di pasaran yang kurang cair.
Terlalu bergantung pada data sejarah: Parameter strategi adalah berdasarkan data sejarah yang dioptimumkan, tetapi tindakan pasaran pada masa akan datang mungkin berubah.
Kebergantungan satu indikatorStrategi hanya bergantung pada EMA yang bersilang, tanpa menggunakan penunjuk tambahan untuk mengesahkan isyarat, yang boleh menyebabkan isyarat yang salah.
Untuk mengurangkan risiko ini, kami mencadangkan:
Setelah menganalisis kod, berikut adalah beberapa arah yang mungkin untuk dioptimumkan:
adxLength = input.int(14, title="ADX Length")
adxThreshold = input.int(25, title="ADX Threshold")
adxValue = ta.adx(high, low, close, adxLength)
isTrending = adxValue > adxThreshold
atrPeriod = input.int(14, title="ATR Period")
atrMultiplierSL = input.float(2.0, title="ATR Multiplier for Stop Loss")
atrMultiplierTP = input.float(3.0, title="ATR Multiplier for Take Profit")
atrValue = ta.atr(atrPeriod)
dynamicStopLoss = atrValue * atrMultiplierSL
dynamicTakeProfit = atrValue * atrMultiplierTP
Penapis masa dagangan ditambahElakkan berdagang pada masa-masa berlakunya turun naik yang tinggi semasa pasaran dibuka dan ditutup.
Mekanisme penguncian keuntungan separa: Apabila perdagangan mencapai tahap keuntungan tertentu, bergerak berhenti kepada harga kos atau sebahagian daripada kedudukan kosong untuk mengunci keuntungan.
Peningkatan pengesahan jumlah transaksiIa adalah satu-satunya cara untuk mengesan kebolehpercayaan isyarat EMA yang dipenuhi dengan jumlah dagangan yang dipersetujui.
volumeCondition = volume > ta.sma(volume, 20) * 1.2
validLongCondition = longCondition and volumeCondition
Arahan pengoptimuman ini bukan sahaja dapat meningkatkan kestabilan strategi, tetapi juga dapat menyesuaikan diri dengan keadaan pasaran yang berbeza, meningkatkan keuntungan keseluruhan dan mengurangkan risiko.
Sistem perdagangan momentum silang dua garis sejajar adalah strategi perdagangan yang jelas dan mudah difahami dan dilaksanakan. Ia menggunakan isyarat silang 8 / 21 EMA untuk menangkap perubahan trend pasaran dan menguruskan risiko secara automatik melalui parameter berhenti dan kehilangan yang ditetapkan.
Kelebihan utama strategi ini adalah logiknya yang ringkas dan mekanisme pengurusan risiko yang komprehensif, yang menjadikan proses perdagangan sangat automatik dan mengurangkan gangguan faktor emosi. Pada masa yang sama, risiko perdagangan berlebihan dielakkan dengan merancang untuk mengelakkan perdagangan yang berlainan.
Walau bagaimanapun, strategi ini mungkin menghadapi cabaran dalam pasaran yang bergolak, yang memerlukan penambahbaikan untuk meningkatkan kesesuaian dengan menambah langkah-langkah pengoptimuman seperti penapis trend dan hentian hentian dinamik. Di samping itu, pengesahan jumlah perdagangan dan pengoptimuman masa masuk juga merupakan cara yang berkesan untuk meningkatkan prestasi strategi.
Secara keseluruhannya, ini adalah strategi yang menyeimbangkan kesederhanaan dan keberkesanan, sesuai untuk permulaan pemula dalam perdagangan automatik, atau sebagai sebahagian daripada portfolio peniaga berpengalaman. Dengan penyesuaian parameter yang munasabah dan pengoptimuman berterusan, strategi ini dapat mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran.
/*backtest
start: 2024-07-14 00:00:00
end: 2025-07-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":200000}]
*/
//@version=5
strategy("JWs Algo", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === INPUTS ===
shortEmaLength = input.int(8, title="Short EMA Length")
longEmaLength = input.int(21, title="Long EMA Length")
takeProfitPerc = input.float(2.0, title="Take Profit (%)", step=0.1)
stopLossPerc = input.float(1.0, title="Stop Loss (%)", step=0.1)
// === INDICATORS ===
shortEma = ta.ema(close, shortEmaLength)
longEma = ta.ema(close, longEmaLength)
// === CONDITIONS ===
longCondition = ta.crossover(shortEma, longEma)
shortCondition = ta.crossunder(shortEma, longEma)
// === PLOTTING ===
plot(shortEma, title="8 EMA", color=color.orange)
plot(longEma, title="21 EMA", color=color.blue)
// === STRATEGY EXECUTION ===
// Convert percentage inputs into price levels
longTakeProfit = close * (1 + takeProfitPerc / 100)
longStopLoss = close * (1 - stopLossPerc / 100)
shortTakeProfit = close * (1 - takeProfitPerc / 100)
shortStopLoss = close * (1 + stopLossPerc / 100)
// === CHECK FOR OPEN POSITION ===
noOpenPosition = strategy.position_size == 0
if (longCondition and noOpenPosition)
strategy.entry("Long", strategy.long)
strategy.exit("Long TP/SL", from_entry="Long", limit=longTakeProfit, stop=longStopLoss)
if (shortCondition and noOpenPosition)
strategy.entry("Short", strategy.short)
strategy.exit("Short TP/SL", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss)
// === SIGNAL MARKERS ===
plotshape(longCondition and noOpenPosition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(shortCondition and noOpenPosition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)