Strategi Trading Crossover Moving Average Turning Point adalah strategi indikator teknis klasik. Ide inti dari strategi ini adalah untuk menghasilkan sinyal beli dan jual dengan menggabungkan rata-rata bergerak dari periode yang berbeda dan lebih mengoptimalkan keluar perdagangan menggunakan titik balik rata-rata bergerak. Strategi ini cocok untuk berbagai jangka waktu dan produk dan dapat mencapai pengembalian yang stabil.
Strategi ini terutama menggunakan dua rata-rata bergerak, satu dengan periode yang lebih pendek sebagai garis cepat dan yang lainnya dengan periode yang lebih lama sebagai garis lambat. Ketika garis cepat menembus garis lambat ke atas, sinyal beli dihasilkan. Ketika garis cepat menembus garis lambat ke bawah, sinyal jual dihasilkan. Ini adalah mekanisme generasi sinyal perdagangan dari strategi crossover rata-rata bergerak klasik.
Selain itu, strategi keluar perdagangan menggunakan titik balik rata-rata bergerak. Ketika garis cepat berubah dari naik ke turun, posisi panjang akan keluar. Ketika garis cepat berubah dari turun ke naik, posisi pendek akan keluar. Titik balik rata-rata bergerak dapat menangkap titik pembalikan pasar jangka pendek, yang membantu strategi untuk memotong kerugian atau mengambil keuntungan tepat waktu, sehingga meningkatkan laba keseluruhan.
Strategi perdagangan lintas titik balik rata-rata bergerak memiliki keuntungan berikut:
Strategi ini hanya menggunakan dua indikator: moving average dan indikator ROC.
Kemampuan yang kuat untuk menahan kerugian berturut-turut. Kekurangan inheren dan karakteristik penyeimbang harga dari moving average dapat menyaring beberapa kebisingan dan menghindari menghasilkan terlalu banyak perdagangan yang tidak valid dalam tren yang bervariasi.
Dapat secara efektif mengendalikan kerugian unilateral. Stop loss tepat waktu menggunakan titik balik rata-rata bergerak dapat mengurangi kerugian unilateral yang besar.
Aplikasi yang luas. Prinsip strategi sederhana dan dapat diterapkan pada produk yang berbeda dan kerangka waktu perdagangan seperti batang harian dan per jam. Ruang pengoptimalan parameter yang besar.
Keuntungan yang stabil. Dibandingkan dengan strategi yang mengejar titik panas pasar, strategi ini lebih berfokus pada pengendalian risiko daripada mengejar keuntungan yang sangat tinggi, tetapi dapat memperoleh keuntungan positif yang stabil.
Strategi perdagangan lintas titik balik rata-rata bergerak juga memiliki beberapa risiko, terutama dalam aspek-aspek berikut:
Saat pasar cepat datang, sinyal crossover dari rata-rata bergerak akan tertinggal, mungkin melewatkan titik masuk terbaik.
Periode pemegang kosong yang panjang. Strategi ini memiliki keluar tepat waktu tetapi sinyal masuk yang lebih lambat. Ini dapat menyebabkan periode pemegang kosong yang berlebihan. Peluang keuntungan terlewatkan selama periode pemegang kosong.
Optimasi parameter yang sulit. Pilihan parameter seperti panjang rata-rata bergerak dan siklus ROC akan berdampak besar pada kinerja strategi. Tetapi optimasi parameter membutuhkan banyak data historis untuk backtesting, menimbulkan kesulitan dalam optimasi.
Kinerja yang buruk dalam tren volatilitas tinggi. Dalam tren dengan rentang volatilitas tinggi, rata-rata bergerak akan menghasilkan beberapa crossover yang tidak valid, yang merusak kinerja strategi.
Strategi perdagangan dapat dioptimalkan lebih lanjut dalam aspek berikut:
Menggabungkan indikator penyaringan tren. Tambahkan indikator seperti ADX dan ATR untuk menilai status tren. Menonaktifkan strategi ketika tidak ada tren yang jelas untuk menghindari perdagangan yang tidak berguna.
Menggabungkan beberapa kerangka waktu. Mengidentifikasi arah tren utama pada kerangka waktu yang lebih tinggi untuk menghindari perdagangan melawan tren utama.
Optimasi parameter adaptif. Memungkinkan parameter seperti panjang rata-rata bergerak untuk menyesuaikan secara adaptif berdasarkan volatilitas pasar real-time untuk meningkatkan ketahanan parameter.
Mengidentifikasi pola lilin di titik persimpangan MA untuk menyaring sinyal palsu.
Secara keseluruhan, Strategi Trading Crossover Turning Point Moving Average menyeimbangkan risiko dan pengembalian. Strategi ini memiliki keuntungan seperti kemudahan pelaksanaan, ketahanan terhadap kerugian berturut-turut, dan pengembalian yang stabil. Strategi ini juga memiliki kelemahan seperti penerbitan MAs yang tertinggal dan periode pemegang kosong yang berlebihan. Dengan mengoptimalkan parameter, menggabungkan penilaian tren, pengenalan pola, dll., Kinerja strategi dapat ditingkatkan lebih lanjut.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //study(title="MA Crossover Strategy", overlay = true) strategy("MA Crossover Strategy with MA Turning Point Exits", overlay=true) src = input(close, title="Source") price = request.security(syminfo.tickerid, timeframe.period, src) ma1 = input(25, title="1st MA Length") type1 = input("SMA", "1st MA Type", options=["SMA", "EMA"]) ma2 = input(50, title="2nd MA Length") type2 = input("SMA", "2nd MA Type", options=["SMA", "EMA"]) price1 = if (type1 == "SMA") sma(price, ma1) else ema(price, ma1) price2 = if (type2 == "SMA") sma(price, ma2) else ema(price, ma2) //plot(series=price, style=line, title="Price", color=black, linewidth=1, transp=0) plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0) plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0) longCondition = crossover(price1, price2) if (longCondition) strategy.entry("Long", strategy.long) shortCondition = crossunder(price1, price2) if (shortCondition) strategy.entry("Short", strategy.short) lookback1 = input(1, "Lookback 1") roc1 = roc(price1, lookback1) ma1up = false ma1down = false ma2up = false ma2down = false ma1up := nz(ma1up[1]) ma1down := nz(ma1down[1]) ma2up := nz(ma2up[1]) ma2down := nz(ma2down[1]) trendStrength1 = input(2, title="Minimum slope magnitude * 100", type=float) * 0.01 if crossover(roc1, trendStrength1) ma1up := true ma1down := false if crossunder(roc1, -trendStrength1) ma1up := false ma1down := true shortexitCondition = ma1up and ma1down[1] if (shortexitCondition) strategy.close("Short") longexitCondition = ma1down and ma1up[1] if (longexitCondition) strategy.close("Long")