Ini adalah strategi penasihat pakar jangka pendek 3 minit untuk niaga hadapan E-mini S&P500 (ES). Ia menghasilkan isyarat perdagangan dengan mengira satu siri purata bergerak eksponensial dan menggabungkan keadaan corak tertentu.
Indikator teras strategi ini adalah garis purata T3. T3 pertama mengira satu set purata bergerak eksponensial xe1 ~ x6 berdasarkan parameter T3 yang ditakrifkan pengguna. Kemudian ia mengira purata tertimbang EMA ini menggunakan pekali tertentu sebagai garis purata T3 akhir.
Apabila harga penutupan di bawah garis purata T3, isyarat beli dihasilkan. Apabila harga penutupan di atas garis purata T3, isyarat jual dihasilkan. Di samping itu, strategi ini juga menilai corak lilin tertentu sebagai syarat masuk tambahan. Perintah dagangan hanya akan dihantar apabila kedua-dua keadaan corak dan isyarat T3 muncul pada masa yang sama.
Kemahiran terbesar strategi ini terletak pada reka bentuk pelbagai penapis dan pengoptimuman parameter. Di satu pihak, menggabungkan tindakan harga dan penapis corak carta dapat mengurangkan perdagangan bunyi bising. Di sisi lain, parameter utama seperti T3 dan peraturan penghakiman corak dapat dioptimumkan untuk menyesuaikan diri dengan pasaran yang berbeza dan meningkatkan ketepatan kemasukan.
Berbanding dengan purata bergerak yang mudah, mekanisme penghalusan tiga kali ganda penunjuk T3 adalah berkesan dalam menapis bising pasaran dan mengenal pasti titik pembalikan trend.
Risiko utama strategi ini berasal dari penyesuaian parameter yang tidak sesuai dan tempoh penahan yang terlalu besar. Jika parameter T3 ditetapkan terlalu besar, penunjuk akan tertinggal di belakang pasaran; jika ditetapkan terlalu kecil, ia meningkatkan kebarangkalian perdagangan bunyi bising. Di samping itu, operasi 3 minit boleh menghadapi kerugian besar tanpa kehilangan berhenti tepat pada masanya.
Untuk mengawal risiko, perkara pertama adalah untuk berulang kali backtest untuk menentukan julat parameter optimum untuk produk yang berbeza. Kedua, strategi stop loss yang ketat harus dilaksanakan untuk keluar kedudukan dengan peratusan kerugian yang boleh diterima setiap perdagangan.
Terdapat beberapa arah untuk meningkatkan strategi:
Mengoptimumkan parameter T3 untuk mencari julat optimum untuk instrumen dagangan yang berbeza
Meningkatkan logik penilaian corak untuk meningkatkan ketepatan pengenalan corak
Tambah mekanisme stop loss yang lebih maju seperti kehilangan stop trailing
Tambah modul pengurusan wang berdasarkan faktor keuntungan atau pengeluaran maksimum
Tambah modul kemasukan dibantu pembelajaran mesin
Melalui penambahbaikan ini, kestabilan dan keuntungan strategi dapat ditingkatkan secara beransur-ansur.
Sebagai strategi perdagangan intraday jangka pendek, strategi ini mempunyai kelebihan seperti ruang pengoptimuman yang besar, pelbagai penapis dan pelaksanaan pesanan 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)