
Strategi ini mengidentifikasi arah tren dalam beberapa kerangka waktu dengan menggunakan kombinasi dari beberapa indikator seperti garis rata-rata, MACD, dan RSI untuk melakukan perdagangan pelacakan tren pada SPX500.
Menggunakan 10 hari rata-rata bergerak sederhana untuk menentukan arah tren harga. Ketika harga di atas melewati garis 10 hari bullish, bawah melewati bearish.
Menggunakan MACD positif-negatif untuk menentukan momentum. Menghitung diferensial dari rata-rata bergerak indeks tanggal 12 dan 21, lalu mengidentifikasi sinyal jual beli melalui garis cepat-lambat yang melintasi diferensial garis rata-rata.
RSI 14 hari dan garis rata-rata 50 hari dihitung, dengan garis rata-rata di atas RSI sebagai sinyal bullish dan di bawah sebagai sinyal bearish.
Konsistensi tren dikonfirmasi dengan timeframe 1, 3, dan 5 menit.
Sinyal beli dihasilkan ketika harga melewati garis 10 hari di atas, RSI melewati garis rata-rata, MACD melewati garis pendek di atas; Sinyal jual dihasilkan ketika harga melewati garis 10 hari di bawah, RSI melewati garis rata-rata, MACD melewati garis pendek di bawah.
Multi-indikator mengidentifikasi tren, meningkatkan akurasi sinyal. 10 hari rata-rata garis menilai arah tren utama, MACD menilai momentum kuat lemah, RSI mengkonfirmasi overbought oversold.
Konfirmasi multi-frame waktu, menghindari kebisingan pasar yang menyesatkan. Verifikasi ganda 1 menit, 3 menit, 5 menit, memastikan sinyal muncul secara sinkron, memfilter sinyal palsu.
Kombinasi dengan bentuk penilaian grafis, intuitif dapat diandalkan. Grafis membantu menentukan karakteristik bentuk harga, menghindari daerah ekstrim titik jual beli, mengurangi risiko kerugian.
Frekuensi perdagangan sedang, sesuai dengan karakteristik perdagangan indeks. Menggunakan garis rata-rata 10 hari sebagai indikator penilaian utama, frekuensi perdagangan tidak terlalu tinggi, menghindari biaya perdagangan yang berlebihan karena perdagangan berulang.
Kegagalan untuk mengidentifikasi kejadian yang terjadi secara tiba-tiba. Kejadian yang tidak rasional dapat mengganggu penilaian model, dan pada saat ini risiko penghindaran posisi harus dikurangi.
Pengaturan parameter tetap, tidak mempertimbangkan perubahan lingkungan pasar. Dalam pertempuran nyata harus menyesuaikan parameter sesuai dengan dinamika lingkungan kota besar, sehingga strategi dapat beradaptasi dengan berbagai situasi.
Titik jual beli terlalu diidealisasikan dan sulit untuk diimplementasikan. Faktor-faktor seperti biaya slip harus disesuaikan dengan titik jual beli untuk membuat sinyal lebih dapat diimplementasikan.
Kerangka waktu yang lebih banyak meningkatkan keterlambatan pengambilan keputusan. Pengendalian angin harus dilakukan untuk menghadapi kejadian yang tidak terduga dan mengurangi kerugian yang disebabkan oleh keterlambatan.
Menambahkan mekanisme stop loss, seperti stop loss bergerak, stop loss persentase, dan lain-lain, untuk mengendalikan kerugian tunggal.
Optimalkan pengaturan parameter, agar parameter dinamis beradaptasi dengan lingkungan pasar, meningkatkan stabilitas strategi.
Dengan adanya kendali atas peristiwa-peristiwa penting yang terjadi di pasar, kita dapat menghindari dampak dari peristiwa-peristiwa besar yang terjadi pada strategi.
Pertimbangkan biaya transaksi yang sebenarnya seperti slippage, dan sesuaikan titik jual beli agar sinyal dapat dijalankan.
Pengujian metode pengambilan nilai yang berbeda, seperti K-line, dan lain-lain, sebagai sumber konfirmasi sinyal, memiliki banyak metode verifikasi kerangka waktu.
Menambahkan algoritma pembelajaran mesin, memanfaatkan model pelatihan data besar, dan mengoptimalkan parameter strategi secara otomatis.
Strategi ini memungkinkan perdagangan untuk melacak tren SPX500 dengan cara mengidentifikasi tren multi-indikator dan mengkonfirmasi sinyal multi-frame. Keuntungan dari strategi ini adalah akurasi sinyal yang tinggi dan kemampuan anti-gangguan yang kuat, tetapi perlu memperhatikan pengendalian risiko dan mengoptimalkan parameter strategi secara dinamis. Sebagai percobaan yang efektif untuk mengoptimalkan strategi rata-rata bergerak sederhana, strategi ini memberikan awal dan pelajaran yang bermanfaat untuk mengoptimalkan strategi perdagangan kuantitatif.
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// USE HEIEN ASHI, 1 min, SPX 500 USD OANDA
// © connor2279
//@version=5
strategy(title="SPX Strategy", shorttitle="SPXS", overlay=true)
//SMA
len1 = 10
src1 = input(close, title="SMA Source #1")
out1 = ta.sma(src1, len1)
plot(out1, title="SMA #1", color=close >= out1 ? color.lime : color.red, linewidth=2)
data_over = ta.crossover(close, out1)
dataO = close >= out1
data_under = ta.crossunder(close, out1)
dataU = close < out1
bgcolor(color=ta.crossover(close, out1) ? color.new(color.lime, 90) : na)
bgcolor(color=ta.crossunder(close, out1) ? color.new(color.red, 90) : na)
//Norm MacD
sma = 12
lma = 21
tsp = 10
np = 50
sh = ta.ema(close,sma)
lon= ta.ema(close,lma)
ratio = math.min(sh,lon)/math.max(sh,lon)
Mac = ratio - 1
if(sh>lon)
Mac := 2-ratio - 1
else
Mac := ratio - 1
MacNorm = ((Mac-ta.lowest(Mac, np)) /(ta.highest(Mac, np)-ta.lowest(Mac, np)+.000001)*2)- 1
MacNorm2 = MacNorm
if(np<2)
MacNorm2 := Mac
else
MacNorm2 := MacNorm
Trigger = ta.wma(MacNorm2, tsp)
trigger_above = Trigger >= MacNorm
trigger_under = Trigger < MacNorm
plotshape(ta.crossover(Trigger, MacNorm2), style=shape.triangledown, color=color.red)
plotshape(ta.crossunder(Trigger, MacNorm2), style=shape.triangledown, color=color.lime)
//RSI / SMA RSI
swr=input(true,title="RSI")
src = close
len = 14
srs = 50
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
mr = ta.sma(rsi,srs)
rsi_above = rsi >= mr
rsi_under = rsi < mr
//All
buySignal = rsi_above and trigger_under and dataO
shortSignal = rsi_under and trigger_above and dataU
bgcolor(color=buySignal ? color.new(color.lime,97) : na)
bgcolor(color=shortSignal ? color.new(color.red, 97) : na)
sellSignal = ta.cross(close, out1) or ta.cross(Trigger, MacNorm2) or ta.cross(rsi, mr)
if (buySignal)
strategy.entry("LONG", strategy.long, 1)
if (shortSignal)
strategy.entry("SHORT", strategy.short, 1)
// Submit exit orders
strategy.close("LONG", when=sellSignal)
strategy.close("SHORT", when=sellSignal)