
Strategi ini menggunakan garis rata-rata EMA dari dua periode yang berbeda untuk menilai pembalikan tren melalui persimpangan mereka, sebagai sinyal masuk dan keluar. Strategi ini sederhana, mudah dipahami, dan mudah dioperasikan.
Strategi ini menggunakan fungsi ta.ema untuk menghitung dua garis rata-rata EMA, satu dengan panjang 10 siklus dan satu dengan panjang 20 siklus, yang mewakili tren jangka pendek dan jangka panjang. Kode ini menilai persilangan dua EMA melalui ta.crossover dan ta.crossunder, dengan melakukan lebih banyak ketika melewati EMA jangka panjang pada EMA jangka pendek dan kosong ketika melewati EMA jangka panjang di bawah EMA jangka pendek. Dengan demikian, memanfaatkan persilangan garis rata-rata EMA periode yang berbeda untuk menangkap titik balik tren.
Strategi ini juga menggunakan variabel lastCrossTime untuk mencatat waktu persimpangan terakhir, untuk mencegah persimpangan berulang yang menghasilkan transaksi yang tidak berarti. Setiap kali persimpangan berhasil, semua posisi saat ini dipadamkan terlebih dahulu, dan kemudian posisi dibuka sesuai dengan arah persimpangan.
Strategi ini sederhana, jelas, dan mudah dipahami dan dioperasikan.
Strategi indikator teknis yang umum digunakan dan efektif adalah dengan menggunakan EMA untuk menilai titik balik tren.
Dengan menggunakan EMA yang berbeda periode, Anda dapat memastikan bahwa Anda menangkap tren besar, tetapi juga meningkatkan sensitivitas terhadap perubahan jangka pendek.
Set Stop Loss untuk mengontrol risiko dan keuntungan dari satu transaksi.
Gunakan filter variabel LastCrossTime untuk menghindari sinyal berulang dan transaksi yang tidak perlu.
EMA crossing mudah menghasilkan sinyal palsu dan ada risiko misjudgment tertentu.
TP dan SL yang tetap sulit untuk menanggapi perubahan pasar, sebaiknya mengatur stop loss yang dinamis.
Sistem yang hanya didasarkan pada EMA cross-over dapat menyebabkan kerugian dalam situasi gempa.
Tidak mempertimbangkan dampak biaya transaksi, perlu memperhatikan biaya transaksi seperti spread dalam operasi praktis.
Strategi ini terutama berlaku untuk tren dan mungkin tidak bekerja dengan baik dalam tren yang bergolak.
Hal ini dapat ditingkatkan dengan mengoptimalkan stop loss, menambahkan kondisi filter, dan kombinasi indikator lainnya. Risiko harus dikontrol secara ketat untuk menghindari kerugian tunggal yang terlalu besar.
Parameter EMA dapat diuji dan dioptimalkan untuk mencari kombinasi siklus yang lebih sesuai.
Menambahkan penilaian pada indikator tambahan seperti KDJ, MACD dan lainnya.
Tetapkan stop loss dinamis, seperti stop loss marginal dengan tren.
Untuk meningkatkan penilaian terhadap volume transaksi, pertimbangkan untuk masuk jika ada banyak transaksi.
Perhitungan ini dilakukan dengan menggabungkan bentuk grafik lainnya, seperti menerobos titik resistensi penting dan sebagainya.
Pertimbangkan dampak biaya dari hard disk, dan tentukan stop loss yang wajar.
Strategi ini mudah dioperasikan, tetapi ada risiko misjudgment tertentu pada crossing EMA, perlu lebih mengoptimalkan parameter indikator, dan didukung dengan indikator teknis lainnya untuk mengurangi misjudgment. Efeknya bagus dalam situasi tren, tetapi mudah terjebak dalam situasi getaran.
/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('XXXquang', overlay=true)
// Sử dụng hàm input.int() và input.float() để tạo các trường nhập liệu với giới hạn giá trị
length1 = input.int(10, title="Length EMA Short", minval=1)
length2 = input.int(20, title="Length EMA Long", minval=1)
lotSize = input.int(1, title="Lot Size", minval=1)
takeProfitLevel = input.int(600, title="Take Profit Level", minval=1)
stopLossLevel = input.int(200, title="Stop Loss Level", minval=1)
ema1 = ta.ema(close, length1)
ema2 = ta.ema(close, length2)
var float lastCrossTime = na
if ta.crossover(ema1, ema2)
if na(lastCrossTime)
strategy.close_all()
strategy.entry('Buy Order', strategy.long, qty=lotSize)
strategy.exit('Exit Buy', 'Buy Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
lastCrossTime := timenow
if ta.crossunder(ema1, ema2)
if na(lastCrossTime)
strategy.close_all()
strategy.entry('Sell Order', strategy.short, qty=lotSize)
strategy.exit('Exit Sell', 'Sell Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
lastCrossTime := timenow
plot(ema1, title='EMA Short', color=color.new(color.blue, 0), linewidth=2)
plot(ema2, title='EMA Long', color=color.new(color.red, 0), linewidth=2)