Strategi ini menggunakan persilangan EMA pantas dan EMA perlahan sebagai isyarat beli dan jual untuk melaksanakan perdagangan automatik berdasarkan persilangan EMA. Garis EMA pantas mengikuti tindakan harga dengan teliti sementara garis EMA perlahan meratakan tindakan harga. Apabila garis EMA pantas melintasi di atas garis EMA perlahan dari bawah, isyarat beli dihasilkan. Apabila garis EMA pantas melintasi di bawah garis EMA perlahan dari atas, isyarat jual dihasilkan. Strategi ini fleksibel dan boleh disesuaikan dengan menyesuaikan parameter EMA pantas dan perlahan untuk menentukan titik isyarat tersuai untuk kemasukan dan keluar.
Strategi ini terutamanya menghasilkan isyarat perdagangan dengan mengira garis EMA cepat dan perlahan dan membandingkan hubungan mereka.
Pertama, tempoh EMA cepat emaFast ditetapkan kepada 1 dalam parameter input supaya ia dapat mengikuti perubahan harga dengan teliti. Pada masa yang sama, tempoh EMA perlahan ditetapkan - emaSlowBuy untuk menjana isyarat beli dan emaSlowSell untuk isyarat jual.
Kemudian, EMA pantas dan EMA perlahan dikira mengikut tempoh input. EMA pantas mempunyai tempoh tetap 1 untuk mengikuti harga dengan teliti manakala EMA perlahan adalah parameter yang boleh disesuaikan untuk data harga yang lancar.
Seterusnya, hubungan antara EMA yang cepat dan EMA yang perlahan dibandingkan untuk menentukan persilangan. Jika EMA yang cepat melintasi di atas EMA yang perlahan, membentuk salib emas, syarat beli dipenuhi. Jika EMA yang cepat melintasi di bawah EMA yang perlahan, membentuk salib kematian, syarat jual dipenuhi.
Akhirnya, pesanan masuk dan keluar dilaksanakan apabila syarat beli dan jual dipenuhi untuk menyelesaikan perdagangan. Sementara itu, ia memeriksa bahawa masa semasa berada dalam julat tarikh backtest untuk mengelakkan perdagangan yang salah di luar julat tarikh.
Peningkatan yang mungkin untuk mengurangkan risiko:
Tambah penapis menggunakan penunjuk lain untuk mengesahkan isyarat silang EMA dan mengelakkan isyarat palsu
Penyesuaian tempoh EMA berdasarkan turun naik pasaran untuk mengurangkan kekerapan perdagangan
Menggabungkan stop loss dan mengambil keuntungan untuk mengawal risiko
Mengoptimumkan tempoh EMA pantas untuk prestasi yang lebih baik dalam keadaan pasaran tertentu
Tambah penentuan trend untuk mengelakkan perdagangan berlebihan di pasaran pelbagai
Beberapa cara strategi boleh dioptimumkan lagi:
Mengoptimumkan parameter EMA dengan menguji kombinasi tempoh yang berbeza untuk mencari tetapan optimum
Tambah penapis menggunakan penunjuk lain seperti MACD, KDJ, Bollinger Bands untuk mengesahkan isyarat
Menggabungkan metrik trend seperti ATR untuk mengelakkan pasaran yang berbeza
Mengoptimumkan strategi stop loss dan mengambil keuntungan untuk risiko dan keuntungan yang lebih baik
Uji gabungan EMA lain seperti EMA berganda atau tiga untuk mencari parameter yang lebih baik
Sesuaikan parameter secara dinamik untuk kitaran pasaran yang berbeza seperti EMA yang lebih cepat untuk trend dan EMA yang lebih perlahan untuk pasaran bergolak
Strategi EMA crossover mempunyai logik yang jelas dan mudah difahami menggunakan penunjuk teknikal yang ditubuhkan untuk menentukan kemasukan dan keluar. Ia sangat disesuaikan melalui penyesuaian parameter EMA untuk pengoptimuman dalam keadaan pasaran yang berbeza. Walau bagaimanapun, isyarat EMA mempunyai kelewatan dan ujian yang luas diperlukan untuk mencari parameter terbaik. Di samping itu, peningkatan lanjut diperlukan untuk mengurangkan risiko dengan menambahkan penapis isyarat, mengoptimumkan berhenti, dan mengelakkan pasaran berkisar. Dengan pengoptimuman dan ujian berterusan, strategi ini berpotensi untuk prestasi perdagangan yang kuat.
/*backtest start: 2023-10-10 00:00:00 end: 2023-11-09 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy( "EMA Cross Strategy with Custom Buy/Sell Conditions", overlay=true ) // INPUT: // Options to enter fast Exponential Moving Average (EMA) value emaFast = 1 // Options to enter slow EMAs for buy and sell signals slowEMABuy = input(title="Slow EMA for Buy Signals", defval=20, minval=1, maxval=9999) slowEMASell = input(title="Slow EMA for Sell Signals", defval=30, minval=1, maxval=9999) // Option to select trade directions tradeDirection = input(title="Trade Direction", options=["Long", "Short", "Both"], defval="Both") // Options that configure the backtest date range startDate = input(title="Start Date", type=input.time, defval=timestamp("01 Jan 2018 00:00")) endDate = input(title="End Date", type=input.time, defval=timestamp("31 Dec 2025 23:59")) // CALCULATIONS: // Use a fixed fast EMA of 1 and calculate slow EMAs for buy and sell signals fastEMA = ema(close, emaFast) slowEMABuyValue = ema(close, slowEMABuy) slowEMASellValue = ema(close, slowEMASell) // PLOT: // Draw the EMA lines on the chart plot(series=fastEMA, color=color.orange, linewidth=2) plot(series=slowEMABuyValue, color=color.blue, linewidth=2, title="Slow EMA for Buy Signals") plot(series=slowEMASellValue, color=color.red, linewidth=2, title="Slow EMA for Sell Signals") // CONDITIONS: // Check if the close time of the current bar falls inside the date range inDateRange = true // Translate input into trading conditions for buy and sell signals buyCondition = crossunder(slowEMABuyValue, fastEMA) sellCondition = crossover(slowEMASellValue, fastEMA) // Translate input into overall trading conditions longOK = (tradeDirection == "Long") or (tradeDirection == "Both") shortOK = (tradeDirection == "Short") or (tradeDirection == "Both") // ORDERS: // Submit entry (or reverse) orders based on buy and sell conditions if (buyCondition and inDateRange) strategy.entry("Buy", strategy.long) if (sellCondition and inDateRange) strategy.close("Buy") // Submit exit orders based on opposite trade conditions if (strategy.position_size > 0 and sellCondition) strategy.close("Sell") if (strategy.position_size < 0 and buyCondition) strategy.close("Sell")