Die Strategie nutzt hauptsächlich die Kreuzung des Stoch-Indikators in den überkauften und überverkauften Bereichen als Einstiegssignal, und in Kombination mit dem EMA-Indikator beurteilt die Richtung des aktuellen Trends, indem es nur bei einem anhaltenden Aufwärtstrend mehrere Operationen ausführt und bei einem anhaltenden Rückgang der EMA einen Short-Operation ausführt, was zu einer typischen Trend-Tracking-Strategie gehört.
Die Strategie besteht aus drei Teilen:
Mit zwei verschiedenen EMA-Parametern, schnell und langsam, wird der schnelle EMA als Aufwärtstrend beurteilt, wenn er über dem langsamen EMA liegt, und der schnelle EMA als Abwärtstrend beurteilt, wenn er unter dem langsamen EMA liegt.
Der Stoch-Indikator besteht aus %K- und %D-Linien, die ein Kaufsignal erzeugen, wenn ein Goldkreuz mit %D-Linien oberhalb der Überkaufzone auftritt, und ein Verkaufssignal erzeugen, wenn ein Todeskreuz mit %D-Linien unterhalb der Überverkaufszone auftritt. Diese Strategie sendet nur dann ein Handelssignal aus, wenn ein Überkaufskreuz mit %D-Linien in der Überverkaufszone auftritt.
Die Strategie setzt gleichzeitig einen Stop-Loss- und einen Stop-Stop-Mechanismus ein. Wenn Sie mehrere Positionen einnehmen, werden Sie Ihre Off-Position verlieren, wenn der Preis den festgelegten Stop-Loss-Level überschreitet.
Insgesamt ist diese Strategie eine typische Quantitative Trading-Strategie, die eine Kombination von Indikatoren verwendet, um die Richtung der Trends und die Handelssignale zu bestimmen, und die mit strengen Risikomanagementregeln ergänzt wird, um das Handelsrisiko effektiv zu reduzieren.
Diese Strategie hat folgende Vorteile:
Verwenden Sie die EMA, um Trends in den Haupt- und Unterklassen zu beurteilen und sich in einem unsicheren Markt zu schützen.
Der Stoch-Indikator zeichnet sich dadurch aus, dass er sehr gut reflektiert, ob man sich in einem überkauften oder überverkauften Bereich befindet, so dass man in Verbindung mit der Erzeugung von Kreuzsignalen überkaufte oder überverkaufte Handelsbereiche erzeugen kann.
Die Strategie definiert die Umgebung, in der Über- und Untertreibungen möglich sind, so dass die Signalerzeugung weiter gefiltert wird, wodurch die Wahrscheinlichkeit falscher Signale verringert wird, und es wird vermieden, in komplexen Märkten blind zu handeln.
Strenge Risikomanagement-Mechanismen helfen dabei, die Verluste eines einzelnen Handels zu kontrollieren, indem sie sowohl den maximalen Rückzug als auch genügend Raum für profitable Geschäfte freigeben.
Die Strategie birgt auch Risiken:
Die Verzögerung der EMA, Stoch und anderen Indikatoren macht die Strategie schwierig und die Gelegenheit, eine Marktabweichung zu ergreifen, erschwert.
Einfach auf die Kennzahlen angewiesen zu sein, kann zu voreingenommenen Beurteilungen über den Markt führen, wodurch man die tatsächlichen Handelsmöglichkeiten verpasst.
Die Risikomanagement-Mechanismen selbst können die Gewinnspanne der Strategie einschränken. Die Einstellung von Stop-Loss- und Stop-Positions in großen Trends erfordert besondere Vorsicht.
Diese Strategie beinhaltet auch Risiken bei der Parameterwahl, da die Auswirkungen verschiedener Parameter auf das Ergebnis durch viel Rückprüfung und Optimierung zur Erzielung der optimalen Parameterkombination benötigt werden.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Versuchen Sie, Trends anhand verschiedener EMAs, wie beispielsweise der gewichteten Moving Average oder der Hull MA, zu erkennen und sie zu vergleichen.
Versuchen Sie, ein Handelssystem mit mehreren Indikatoren zu erstellen, um Handelssignale in Verbindung mit anderen Indikatoren zu erzeugen, z. B. MACD, KDJ usw.
Optimierung der Einstellungen für Stop-Loss und Stop-Off, um sie besser an die tatsächlichen Schwankungen des Marktes anzupassen. Eine lockere Stop-Loss- und eine strengere Stop-Off-Lösung können festgelegt werden.
Verschiedene Sorten und unterschiedliche Zeitspannen werden getestet, um die optimale Sorten- und Zeitspannenkombination zu finden.
Berücksichtigen Sie die Einbeziehung von Machine Learning oder Neural Network Modellen, um die Richtung von Trends und Handelssignalen zu bestimmen und die Strategie zu intelligentieren.
Insgesamt verwendet die Strategie eine Kombination von gängigen Indikatoren, um eine relativ ausgereifte Trend-Tracking-Trading-Strategie zu erstellen. Es berücksichtigt sowohl die Entwicklung von Trendurteilen und spezifischen Handelssignalen als auch die Einrichtung eines Risikomanagementmechanismus.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//by Wugamlo
//Strategy combining Stochastic Crosses in the Overbought/Oversold Area with a trend determined by two EMAs
//Default setup seems to work best on 4HR timeframe for BTC
strategy(title = "Strategy Stoch/EMA Cross", shorttitle = "Strategy Stoch/EMA Cross", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD, commission_value=0.01,commission_type=strategy.commission.percent, initial_capital=1000)
// === GENERAL INPUTS ===
SectionInd = input(defval = true ,title = "════════════ INDICATORS ════════════")
maFastLength = input(defval = 55, title = "Fast MA Period", minval = 1)
maSlowLength = input(defval = 89, title = "Slow MA Period", minval = 1)
StochLength = input(defval = 14, title = "Stochastic Length", minval=1)
smoothK = input(defval = 6, title = "%K Smooth", minval=1)
smoothD = input(defval = 3, title = "%D Smooth", minval=1)
overbought = 80
oversold = 20
HighlightOBOS = input(defval = true, title = "Highlight Stoch Cross?")
HighlightTrend = input(defval = true, title = "Highlight Trend?")
//DATE AND TIME
SectionFrom = input(defval = true ,title = "═══════════════ FROM ═══════════════")
fromDay = input(defval = 01, title = "From day", minval=1)
fromMonth = input(defval = 1, title = "From month", minval=1)
fromYear = input(defval = 2019, title = "From year", minval=2014)
SectionTo = input(defval = true, title = "════════════════ TO ════════════════")
toDay = input(defval = 31, title = "To day", minval=1)
toMonth = input(defval = 12, title = "To month", minval=1)
toYear = input(defval = 2020, title = "To year", minval=2014)
// === STRATEGY RELATED INPUTS ===
SectionStra = input(defval = true ,title = "═════════════ STRATEGY ═════════════")
// Include Shorts or only trade Long Positions?
includeShorts = input(defval = true, title = "Include Short Positions?")
// Risk Management inputs
useTakeProfit = input(defval = true, title = "User Take Profit?")
inpTakeProfit = input(defval = 8, title = "Take Profit (%)", minval = 0)
useStopLoss = input(defval = false, title = "User Stop Loss?")
inpStopLoss = input(defval = 2, title = "Stop Loss (%)", minval = 0)
StopLossPerc = inpStopLoss * 0.01
TakeProfitPerc = inpTakeProfit * 0.01
// === EMA SERIES SETUP ===
maFast = ema(close, maFastLength)
maSlow = ema(close, maSlowLength)
diff = maFast - maSlow
// === STOCHASTIC SETUP ===
k = sma(stoch(close, high, low, StochLength), smoothK)
d = sma(k, smoothD)
// Stochastic Long/Short Entry determination
stochLong = crossover(k,d) and (k < oversold)
stochShort = crossunder(k,d) and (k > overbought)
// Stochastic Long/Short Exit determination
stochLongEx = crossover (k, overbought)
stochShortEx = crossunder(k, oversold)
// === PLOTTING EMAs ===
fast = plot(maFast, title = "Fast MA", color = yellow, linewidth = 1, style = line, transp = 10)
slow = plot(maSlow, title = "Slow MA", color = white, linewidth = 1, style = line, transp = 10)
// === Vertical Coloring for Crosses in Overbought/Oversold zone and for MA Trend Zones ===
b_color = stochLong ? green : stochShort ? red : na
bgcolor(HighlightOBOS ? b_color : na, title="Overbought / Oversold", transp=65) //Highlight the Overbought/Oversold Stoch Crossings
t_color = diff>=0 ? green : diff<0 ? red : na
bgcolor(HighlightTrend ? t_color : na, title="Trend up / Trend down", transp=75) //Highlight the EMA Trend
// === STRATEGY LOGIC ===
// Time Restriction
timeInRange = true
// === STRATEGY - LONG POSITION EXECUTION ===
if stochLong and (diff >=0) and timeInRange //Open Long when Stoch crossing in Oversold area and EMATrend is up
strategy.entry(id = "Long", long = true)
if stochLong and (diff <0) and timeInRange //Close Long when another Long Stoch cross signal is given after Trend has changed to down (avoid fake signals)
strategy.close(id = "Long")
if stochLongEx and timeInRange //Close Long when Stoch is getting Overbought
strategy.close(id = "Long")
// === STRATEGY - SHORT POSITION EXECUTION ===
if stochShort and (diff <0) and timeInRange and includeShorts //Open Short when Stoch crossing in Overbought area and EMA Trend is down
strategy.entry(id = "Short", long = false)
if stochShort and (diff >=0) and timeInRange //Close Short when another Short Stoch cross signal is given after Trend has changed to up (avoid fake signals)
strategy.close(id = "Short")
if stochShortEx and timeInRange //Close Short when Stoch is getting Oversold
strategy.close(id = "Short")
// === STRATEGY RISK MANAGEMENT EXECUTION ===
//Stop Loss
if useStopLoss //Exit when Stop Loss is hit
strategy.exit("Exit Long SL", from_entry = "Long", loss = close * StopLossPerc / syminfo.mintick )
strategy.exit("Exit Short SL", from_entry = "Short", loss = close * StopLossPerc / syminfo.mintick )
//Take Profit
if useTakeProfit //Exit when Take Profit Limit is hit
strategy.exit("Exit Long TP", from_entry = "Long", profit = close * TakeProfitPerc / syminfo.mintick)
strategy.exit("Exit Short TP", from_entry = "Short", profit = close * TakeProfitPerc / syminfo.mintick)