Strategie zur Umkehrung der Marktdynamik

Schriftsteller:ChaoZhang, Datum: 2024-02-29 15:10:11
Tags:

img

Übersicht

Diese Strategie kombiniert den Supertrend-Indikator und den Fisher-Transform, um bei Umkehrungen des Marktes nach kurzen Chancen zu suchen. Sie kann die Parameter von Supertrend und Fisher-Transform für verschiedene Kryptowährungen, Aktien und Märkte anpassen.

Strategie Logik

Die Strategie berechnet zunächst die Fisher Transform mit einer 10-Periode. Wenn die Fisher-Linie durch 2.5 von unten bricht, wird ein Verkaufssignal generiert. Gleichzeitig berechnet sie die 10-Perioden-Durchschnittliche Wahre Reichweite (ATR) als Kanal für den Supertrend. Wenn der Preis unter die obere Schiene überschreitet, wird ein Verkaufssignal generiert. Die Strategie kombiniert daher die Fisher Transform und den Supertrend-Kanal, um kurze Chancen zu erfassen, wenn der Markt umkehrt.

Wenn der aktuelle Schlusspunkt unterhalb der vorherigen oberen Schiene liegt und der vorherige Schlusspunkt über der unteren Schiene des Supertrend-Kanals liegt, bestimmt er, dass sich der Markt umgekehrt hat und erzeugt ein Verkaufssignal.

Die Strategie erfordert also sowohl die Umkehridentifizierung von Supertrend als auch Fisher Transform, um das endgültige Verkaufssignal zu generieren.

Vorteile

Die Strategie kombiniert Supertrend-Kanal und Fisher-Transform, die die Umkehrpunkte des Marktes genauer erfassen können.

Darüber hinaus bietet die Strategie Flexibilität, um die Parameter von Supertrend und Fisher anzupassen. Benutzer können die besten Parameterkombinationen für verschiedene Märkte und Produkte auswählen, um den Markt zielgerichtet anzupassen. Dies ist eine anpassbare optimierbare Strategie.

Die Strategie bietet auch ein Risikobegrenzungsmanagement. Benutzer können das Risikokapital für jede Bestellung bequem anpassen, um ihren eigenen Risikomanagementanforderungen gerecht zu werden. Gleichzeitig berechnet sie automatisch die Stop-Loss- und Profit-Taking-Level, um ein gutes Risiko-Rendite-Verhältnis zu erzielen.

Risiken

Die Strategie stützt sich hauptsächlich auf den Supertrend-Kanal, um die Marktstruktur zu bestimmen. Wenn der Trend über einen längeren Zeitraum andauert, kann der Supertrend ausfallen. In diesem Fall sollte der Zeitraum oder der ATR-Multiplikator des Kanals entsprechend erhöht werden.

Darüber hinaus neigt Fisher Transform dazu, leicht falsche Signale oder vorzeitige Signale zu erzeugen.

Darüber hinaus kann die Gesamtgewinnrate von Umkehrstrategien begrenzt sein. Sie sollte sich mit Trendfolgenindikatoren kombinieren, um zu vermeiden, Positionen in Bereichszonen zu eröffnen oder zu beteiligen, nachdem der Trend klarer geworden ist. Gleitende Durchschnitte können als Filter hinzugefügt werden, um die Stabilität zu verbessern.

Anweisungen zur Verbesserung

Die Strategie kann in folgenden Aspekten verbessert werden:

  1. Optimieren Sie die ATR-Periode und den ATR-Multiplikator von Supertrend für die beste Parameterkombination auf der Grundlage verschiedener Produkte und Marktbedingungen.

  2. Optimieren Sie die Periode von Fisher, um die Kurve zu glätten und falsche Signale zu verhindern.

  3. Hinzufügen von gleitenden Durchschnitten oder Bollinger-Bändern als Hilfsindikator, um zu vermeiden, dass Positionen in Schwellenmärkten eröffnet werden.

  4. Kombination von Fisher Transform in verschiedenen Zeitrahmen, um ein stabileres Umkehrurteilsvermögen zu erreichen.

  5. Zusätzliche Positionsmanagement-Module wie Hebelwirkung, Positionsgröße, zusätzliche Regeln usw. zur Risikokontrolle.

  6. Einbeziehung von Methoden des maschinellen Lernens zur automatischen Optimierung von Parametern und Strategieanpassung.

Schlussfolgerung

Die Strategie integriert Supertrend und Fisher Transform mit der Flexibilität, sich durch Parameteranpassung an verschiedene Produkte anzupassen, verglichen mit Einzelindikatorstrategien. Sie erzielt ein zuverlässigeres Signalurteil und Risikokontrolle. Mit kontinuierlicher Verbesserung verspricht die Strategie, die Stabilität und Rentabilität weiter zu verbessern. Es ist eine hochwertige Strategie, die langfristig verfolgt und angesammelt werden sollte.


/*backtest
start: 2024-02-21 00:00:00
end: 2024-02-27 03:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend and Fisher_SHORT", overlay=true)

//This block is for  Fisher Transformation Calculation.
len = input.int(10, minval=1, title="Length") // Length is optional. 10 is good but is up to you.
high_ = ta.highest(hl2, len)
low_ = ta.lowest(hl2, len)
round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val
value = 0.0
value := round_(.66 * ((hl2 - low_) / (high_ - low_) - .5) + .67 * nz(value[1]))
fish1 = 0.0
fish1 := .5 * math.log((1 + value) / (1 - value)) + .5 * nz(fish1[1])
fish2 = fish1[1]

// Sell condition for Fisher transformation.
sell_signal = (fish1 > 2.5) and (fish2 > fish1)
durum = 0 //just for the situation.

if (sell_signal)
    durum := -1 // now it changes from 0 to -1.

// Supertrend indicator inputs and calculations (same as in the indicator)
Periods = input(title='ATR Period', defval=10) // period is 10, but you can change it
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=2) //atr multiplier is important. it is 2 for this strategy but you can find another for best performance 
RiskAmount = input.float(title='Risk Amount ($)', defval=10.0, minval=0.0, step=1.0) // ıf you use risk-reward method, risk is 10$ for each position. you can also change it
changeATR = input(title='Change ATR Calculation Method ?', defval=true)

atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Calculate position size based on risk amount
riskPerContract = atr * Multiplier
contracts = RiskAmount / (riskPerContract * syminfo.mintick)

//short signal condition
sellSignal = trend == -1 and trend[1] == 1 and durum == -1

plotshape(sellSignal, title='Sell Signal', location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) //shows the signal.

// variables
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
var float atr1 = na
var float takeProfit2 = na
var float takeProfit3 = na

//it calculates the stop level and reward profit levels using atr.
if (sellSignal)
    entryPrice := close
    atr1 := atr
    stopLoss := entryPrice + atr1 * Multiplier
    contracts := entryPrice / (stopLoss - entryPrice) * RiskAmount / entryPrice
    takeProfit := entryPrice - atr1 * Multiplier
    takeProfit2 := entryPrice - 2 * atr1 * Multiplier
    takeProfit3 := entryPrice - 3 * atr1 * Multiplier

if (sellSignal)
    strategy.entry("Sell", strategy.short, qty=1)

// 
if (close >= stopLoss)
    strategy.close("Sell", comment="Stop Loss Hit")
else if (close <= takeProfit)
    strategy.close("Sell", comment="Take Profit Hit")

// draw the stop, entry and profit levels
plot(stopLoss, title="Stop Loss", color=color.red, linewidth=1, style=plot.style_linebr)
plot(entryPrice, title="Entry Price", color=color.orange, linewidth=1, style=plot.style_linebr)
plot(takeProfit, title="Take Profit", color=color.green, linewidth=1, style=plot.style_linebr)
plot(takeProfit2, title="Take Profit 2", color=color.blue, linewidth=1, style=plot.style_linebr)
plot(takeProfit3, title="Take Profit 3", color=color.purple, linewidth=1, style=plot.style_linebr)


Mehr