3 Minuten kurze Strategie nur für Expertenberater

Schriftsteller:ChaoZhang, Datum: 2023-11-24 15:58:01
Tags:

img

Übersicht

Dies ist eine 3-minütige Expert Advisor-Strategie für E-mini S&P500-Futures (ES). Sie erzeugt Handelssignale durch Berechnung einer Reihe von exponentiellen gleitenden Durchschnitten und Kombination spezifischer Musterbedingungen.

Grundsätze

Der Kernindikator dieser Strategie ist die T3-Durchschnittslinie. Die T3 berechnet zunächst eine Reihe von exponentiellen gleitenden Durchschnitten xe1 ~ x6 auf der Grundlage des vom Benutzer definierten T3-Parameters. Dann berechnet sie den gewichteten Durchschnitt dieser EMAs mit bestimmten Koeffizienten als endgültige T3-Durchschnittslinie.

Wenn der Schlusskurs unterhalb der T3-Durchschnittslinie liegt, wird ein Kaufsignal generiert. Wenn der Schlusskurs über der T3-Durchschnittslinie liegt, wird ein Verkaufssignal generiert. Darüber hinaus beurteilt die Strategie auch spezifische Kerzenmuster als ergänzende Einstiegsbedingungen. Handelsaufträge werden nur gesendet, wenn sowohl Musterbedingungen als auch T3-Signale gleichzeitig auftauchen.

Stärken

Die größte Stärke dieser Strategie liegt in der Multi-Filter-Konstruktion und Parameteroptimierung. Auf der einen Seite kann die Kombination von Preis-Aktion und Chart-Musterfiltern den Lärm der Trades reduzieren. Auf der anderen Seite können wichtige Parameter wie T3 und Musterbeurteilungsregeln optimiert werden, um sich an verschiedene Märkte anzupassen und die Einstiegsgenauigkeit zu verbessern.

Im Vergleich zu einfachen gleitenden Durchschnitten ist der dreifache Glättungsmechanismus des T3-Indikators wirksam, um Marktlärm zu filtern und Trendumkehrpunkte zu identifizieren.

Risiken und Lösungen

Die wichtigsten Risiken dieser Strategie stammen aus unangemessener Parameter-Tuning und übergroßer Haltedauer. Wenn der T3-Parameter zu groß eingestellt wird, werden die Indikatoren hinter dem Markt zurückbleiben; wenn er zu klein eingestellt wird, erhöht er die Wahrscheinlichkeit von Lärmtrades. Darüber hinaus können 3-Min-Operationen ohne rechtzeitigen Stop-Loss großen Verlust erleiden.

Um Risiken zu kontrollieren, ist es zunächst erforderlich, wiederholt zu testen, um den optimalen Parameterbereich für verschiedene Produkte zu bestimmen. Zweitens sollte eine strikte Stop-Loss-Strategie ausgeführt werden, um Positionen mit einem akzeptablen Verlustprozentsatz pro Handel zu verlassen.

Verbesserungen

Es gibt mehrere Richtungen zur Verbesserung der Strategie:

  1. Optimieren des T3-Parameters, um die optimale Bandbreite für verschiedene Handelsinstrumente zu finden

  2. Verbesserung der Musterbeurteilungslogik zur Steigerung der Genauigkeit der Mustererkennung

  3. Hinzufügen von fortgeschritteneren Stop-Loss-Mechanismen wie Trailing Stop-Loss

  4. Hinzufügen eines Geldmanagement-Moduls basierend auf Gewinnfaktor oder maximaler Auslastung

  5. Hinzufügen eines Moduls für die unterstützte Eingabe mit maschinellem Lernen

Durch diese Verbesserungen können die Stabilität und Rentabilität der Strategie schrittweise verbessert werden.

Schlussfolgerung

Als kurzfristige Intraday-Handelsstrategie hat diese Strategie Vorteile wie riesigen Optimierungsraum, mehrere Filter und schnelle Auftragsausführung.


/*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)


Mehr