Ini adalah strategi penasihat ahli jangka pendek 3 menit untuk E-mini S&P500 futures (ES). Ini menghasilkan sinyal perdagangan dengan menghitung serangkaian moving average eksponensial dan menggabungkan kondisi pola tertentu.
Indikator inti dari strategi ini adalah garis rata-rata T3. T3 pertama menghitung seperangkat rata-rata bergerak eksponensial xe1 ~ x6 berdasarkan parameter T3 yang didefinisikan pengguna. Kemudian menghitung rata-rata tertimbang dari EMA ini menggunakan koefisien tertentu sebagai garis rata-rata T3 akhir.
Ketika harga penutupan berada di bawah garis rata-rata T3, sinyal beli dihasilkan. Ketika harga penutupan berada di atas garis rata-rata T3, sinyal jual dihasilkan. Selain itu, strategi juga menilai pola lilin tertentu sebagai kondisi masuk tambahan.
Kekuatan terbesar dari strategi ini terletak pada desain multi-filter dan optimasi parameter. Di satu sisi, menggabungkan aksi harga dan filter pola grafik dapat mengurangi perdagangan kebisingan. Di sisi lain, parameter kunci seperti T3 dan aturan penilaian pola dapat dioptimalkan untuk beradaptasi dengan pasar yang berbeda dan meningkatkan akurasi masuk.
Dibandingkan dengan rata-rata bergerak sederhana, mekanisme triple smoothing dari indikator T3 efektif dalam menyaring kebisingan pasar dan mengidentifikasi titik pembalikan tren.
Risiko utama dari strategi ini berasal dari penyesuaian parameter yang tidak tepat dan periode pemegang yang terlalu besar. Jika parameter T3 diatur terlalu besar, indikator akan tertinggal di belakang pasar; jika diatur terlalu kecil, itu meningkatkan probabilitas perdagangan kebisingan. Selain itu, operasi 3 menit dapat menghadapi kerugian besar tanpa stop loss yang tepat waktu.
Untuk mengendalikan risiko, hal pertama adalah untuk berulang kali backtest untuk menentukan rentang parameter optimal untuk produk yang berbeda. Kedua, strategi stop loss yang ketat harus dilaksanakan untuk keluar posisi dengan persentase kerugian yang dapat diterima per perdagangan.
Ada beberapa arah untuk meningkatkan strategi:
Mengoptimalkan parameter T3 untuk menemukan kisaran optimal untuk instrumen perdagangan yang berbeda
Meningkatkan logika penilaian pola untuk meningkatkan akurasi pengenalan pola
Tambahkan mekanisme stop loss yang lebih canggih seperti trailing stop loss
Tambahkan modul pengelolaan uang berdasarkan faktor keuntungan atau penarikan maksimum
Tambahkan modul akses yang dibantu pembelajaran mesin
Melalui perbaikan ini, stabilitas dan profitabilitas strategi dapat ditingkatkan secara bertahap.
Sebagai strategi perdagangan intraday jangka pendek, strategi ini memiliki keuntungan seperti ruang optimasi yang besar, beberapa filter dan eksekusi order yang cepat.
/*backtest start: 2023-11-16 00:00:00 end: 2023-11-23 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ES 3m Short Only (Triple RED)", overlay=true) // Alert Message '{{strategy.order.alert_message}}' //3min T3 = input(150)//to 600 xPrice3 = close xe1 = ta.ema(xPrice3, T3) xe2 = ta.ema(xe1, T3) xe3 = ta.ema(xe2, T3) xe4 = ta.ema(xe3, T3) xe5 = ta.ema(xe4, T3) xe6 = ta.ema(xe5, T3) b3 = 0.7 c1 = -b3*b3*b3 c2 = 3*b3*b3+3*b3*b3*b3 c3 = -6*b3*b3-3*b3-3*b3*b3*b3 c4 = 1+3*b3+b3*b3*b3+3*b3*b3 nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3 // Buy Signal - Price is below T3 Average buySignal3 = xPrice3 < nT3Average sellSignal3 = xPrice3 > nT3Average //NinjaTrader Settings. acct = "Sim101" ticker = "ES 12-23" qty = 1 takeProfitTicks = 4 stopLossTicks = 16 tickSize = 0.25 takeProfitShort = close - takeProfitTicks * tickSize stopLossShort = close + stopLossTicks * tickSize OCOMarketShort = '{ "alert": "OCO Market Short", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitShort) + '", "stop_price": "' + str.tostring(stopLossShort) + '", "tif": "DAY" }' CloseAll = '{ "alert": "Close All", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '" }' IsUp = close > open IsDown = close < open PatternPlot = IsDown[2] and IsDown[1] and IsDown and close[1] <= high[0] and close[1] > close[0] and low[1] > low[0] and high[2] > high[1] and low[2] <= low[1] if (PatternPlot and sellSignal3) strategy.entry('Short', strategy.short, alert_message=OCOMarketShort) strategy.exit('Close Short', 'Short', profit=takeProfitTicks, loss=stopLossTicks, alert_message=CloseAll) //plotshape(PatternPlot, title="Custom Pattern", style=shape.circle, location=location.abovebar, color=color.red, size=size.small)