Diese Strategie kombiniert PSAR, um Preistrends zu beurteilen, ADX, um die Trendstärke zu beurteilen, RSI, um Überkauf- und Überverkaufszonen zu lokalisieren, und CMF, um Fondsströme zu beurteilen, um eine intraday-trendfolgende quantitative Handelsstrategie über Zyklen hinweg zu konstruieren. Sie kann schnell neue Trendrichtungen lokalisieren, wenn die Preise aus der Konsolidierung ausbrechen und neue Trends bilden, und weiterhin Trends nachverfolgen. Während sichergestellt wird, dass die wichtigsten Trendgewinne erfasst werden, werden auch Filterbedingungen während des Prozesses festgelegt, um das Halterisiko zu reduzieren.
Die wichtigsten Kriterien für diese Strategie sind:
Der PSAR-Indikator wird verwendet, um zu beurteilen, ob sich die Preise in einem Aufwärtstrend befinden.
Der RSI muss über dem Mittelpunkt von 50 liegen, um falsche Ausbrüche in Überverkaufszonen auszuschließen.
Die ADX muss über der EMA-Linie liegen, was bei der Trendanalyse ein nachhaltiges Signal darstellt.
Die CMF muss größer als 0 sein, wenn der Zuwachs an Geldern beurteilt wird.
Kaufsignale werden erzeugt, wenn alle vier oben genannten Bedingungen erfüllt sind. Verkaufsbedingungen treten auf, wenn PSAR über den Preis steigt, der RSI unter 50 fällt, ADX unter seine EMA fällt und CMF weniger als 0 wird.
Diese Strategie berücksichtigt bei der Festlegung von Handelsregeln umfassend die Kursentwicklungsrichtung, die Trendstärke, den Überkauf-/Überverkaufszustand und die Geldströme.
Zu den Hauptvorteilen dieser Strategie gehören:
Die Kombination mehrerer Indikatoren bei der Festlegung von Handelsregeln kann falsche Ausbrüche wirksam verhindern und die Signalqualität gewährleisten.
Die schnelle Ermittlung und Verfolgung von aufstrebenden Trendrichtungen ermöglicht es, die meisten Trendgewinne zu erzielen.
Die Einrichtung von Prozessfilterbedingungen kann die Risiken wirksam kontrollieren und die Wirksamkeit der Nachverfolgung gewährleisten.
Die Berücksichtigung der Trendstärke hilft, Handelsspanenüberlastungen zu vermeiden.
Zu den wichtigsten Risiken dieser Strategie gehören:
Die Akkumulation einer einzigen Strategie birgt Portfoliorisiko und erfordert eine angemessene Positionsgröße.
Überwachen Sie während der Nachverfolgung die Veränderungen des Filterzustands genau, um Verluste bei der Stornierung zu vermeiden.
Diese mittelfristige und langfristige Strategie kann kurzfristig durch Schwankungen gestört werden und birgt Stop-Loss-Risiken.
Entsprechende Risikomanagementmaßnahmen umfassen: Optimierung der Positionsgrößenregelung, Festlegung von Risikowarnlinien und Erweiterung der Stoppdistanzen usw.
Zu den Optimierungsbereichen gehören:
Parameteroptimierung durch maschinelles Lernen unter Berücksichtigung aktueller subjektiver Einstellungen.
Hinzufügen eines Positionsgrößenmoduls, das dynamisch auf der Grundlage von Risiken grösst.
Verbesserte Stoppmechanismen, z. B. Trailing Stops, Time Stops oder Breakout Stops.
Diese Strategie, die Indikatoren kombiniert, erwies sich als wirksam bei der schnellen Lokalisierung und Verfolgung von aufstrebenden Trends und bei der Validierung quantitativen Handels auf der Grundlage mehrerer Dimensionen wie Trends und Fonds. Als Basis kann sie über Zyklen hinweg indexiert werden. Mit Parameter-Tuning und modularen Verbesserungen kann sie auch zu einer stabilen mittelfristigen / langfristigen Strategie werden.
/*backtest start: 2023-11-14 00:00:00 end: 2023-12-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("psar+ adx + cmf + rsi Strategy", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 ) start = input(1.02) increment = input(1.02) maximum = input(1.2) var bool uptrend = na var float EP = na var float SAR = na var float AF = start var float nextBarSAR = na if bar_index > 0 firstTrendBar = false SAR := nextBarSAR if bar_index == 1 float prevSAR = na float prevEP = na lowPrev = low[1] highPrev = high[1] closeCur = close closePrev = close[1] if closeCur > closePrev uptrend := true EP := high prevSAR := lowPrev prevEP := high else uptrend := false EP := low prevSAR := highPrev prevEP := low firstTrendBar := true SAR := prevSAR + start * (prevEP - prevSAR) if uptrend if SAR > low firstTrendBar := true uptrend := false SAR := max(EP, high) EP := low AF := start else if SAR < high firstTrendBar := true uptrend := true SAR := min(EP, low) EP := high AF := start if not firstTrendBar if uptrend if high > EP EP := high AF := min(AF + increment, maximum) else if low < EP EP := low AF := min(AF + increment, maximum) if uptrend SAR := min(SAR, low[1]) if bar_index > 1 SAR := min(SAR, low[2]) else SAR := max(SAR, high[1]) if bar_index > 1 SAR := max(SAR, high[2]) nextBarSAR := SAR + AF * (EP - SAR) //rsi strat length = input( 50 ) middle_RSI=input(49) price = close vrsi = rsi(price, length) //cmf lengthCMF = input(20, minval=1) ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume mf = sum(ad, lengthCMF) / sum(volume, lengthCMF) //ADX adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) ema_length=input(10) ema_sig= ema(sig,ema_length) long = not uptrend and vrsi > middle_RSI and sig > ema_sig and mf>0 short= uptrend and vrsi < middle_RSI and sig<ema_sig and mf<0 strategy.entry("long",1,when=long) strategy.close('long',when=short)