BreakHigh EMA Crossover-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-03-29 14:39:27
Tags:

img

Übersicht

Die BreakHigh EMA Crossover Strategie ist eine Handelsstrategie, die auf dem Preis-Breakout und dem Exponential Moving Average (EMA) Crossover basiert. Die Strategie verwendet den höchsten Preis innerhalb eines bestimmten Zeitraums als Kaufsignal und die EMA als Verkaufssignal. Wenn der Schlusskurs über den höchsten Preis innerhalb des angegebenen Zeitraums bricht, erzeugt die Strategie ein Kaufsignal. Wenn der Schlusskurs unter die EMA fällt, erzeugt die Strategie ein Verkaufssignal. Die Strategie legt auch einen Stop-Loss-Preis fest, um das Risiko zu kontrollieren. Darüber hinaus bietet die Strategie den Benutzern mehrere Parameter, die sie anpassen können, um sich an verschiedene Handelsstile und Marktbedingungen anzupassen.

Strategieprinzip

Das Kernprinzip der BreakHigh EMA Crossover Strategie besteht darin, Markttrends mithilfe von Preisbruch und EMA Crossover zu erfassen. Wenn der Preis innerhalb eines bestimmten Zeitraums über den höchsten Preis bricht, zeigt dies an, dass der Markt einen Aufwärtstrend betreten kann, so dass die Strategie ein Kaufsignal erzeugt. Gleichzeitig dient die EMA als Trend-Nachfolgungsindikator. Wenn der Preis unter die EMA fällt, zeigt sie an, dass der Aufwärtstrend enden kann, so dass die Strategie ein Verkaufssignal erzeugt.

Die Strategie setzt folgende Schritte zur Umsetzung des Handels ein:

  1. Der höchste Preis innerhalb des angegebenen Zeitraums wird als Ausbruchkaufpreis berechnet.
  2. Berechnen Sie die EMA als Verkaufssignal.
  3. Wenn der Schlusskurs über dem Ausbruchskurs liegt, erzeugt die Strategie ein Kaufsignal, wenn keine aktuelle Position vorliegt.
  4. Wenn der Schlusskurs unter die EMA fällt, erzeugt die Strategie ein Verkaufssignal.
  5. Der niedrigste Preis innerhalb des angegebenen Zeitraums wird als Stop-Loss-Preis berechnet.
  6. Wenn der Kurs unter den Stop-Loss-Preis fällt, schließt die Strategie die Position sofort.

Durch die oben genannten Schritte kann die Strategie von dem steigenden Markttrend profitieren und gleichzeitig Stop-Loss zur Kontrolle des Abwärtsrisikos verwenden.

Strategische Vorteile

Die BreakHigh EMA Crossover-Strategie hat folgende Vorteile:

  1. Trendverfolgung: Die Strategie nutzt Preisdurchbruch und EMA-Crossover, um Markttrends zu erfassen und kann von Aufwärtstrends profitieren.
  2. Risikokontrolle: Die Strategie verwendet einen Stop-Loss-Preis, um das Abwärtsrisiko zu kontrollieren, wodurch die maximale Auslastung der Strategie effektiv reduziert werden kann.
  3. Parameterflexibilität: Die Strategie bietet den Nutzern mehrere Parameter zur Anpassung, z. B. Periode, Risikoverhältnis, Verwendung von Stop-Loss usw., die je nach verschiedenen Handelsstilen und Marktbedingungen angepasst werden können.
  4. Einfach und effektiv: Die Strategie ist einfach und klar, leicht zu verstehen und umzusetzen und kann in Trendmärkten gute Renditen erzielen.

Strategische Risiken

Obwohl die BreakHigh EMA Crossover-Strategie gewisse Vorteile hat, birgt sie auch folgende Risiken:

  1. Marktvolatilitätsrisiko: Bei hoher Marktvolatilität kann die Strategie mehr falsche Signale erzeugen, was zu häufigen Handels- und Kapitalverlusten führt.
  2. Trendumkehrrisiko: Wenn sich der Markttrend umkehrt, kann die Strategie den Verkauf verzögern, was zu einer Rückverfolgung des Gewinns oder zu einer Verlustwende der Gewinne führt.
  3. Parameter, die das Risiko festlegen: Die Leistung der Strategie hängt von der Festlegung von Parametern ab, wie Periode, Risikoquote usw. Wenn die Parameter nicht richtig festgelegt werden, kann dies zu einer schlechten Leistung der Strategie führen.

Zur Verringerung dieser Risiken können folgende Maßnahmen in Betracht gezogen werden:

  1. Richtige Anpassung der Parameter: Entsprechend den unterschiedlichen Marktbedingungen und Handelsinstrumenten sollten die Strategieparameter wie die Verlängerung der Laufzeit, die Verringerung der Risikoposition usw. richtig angepasst werden, um falsche Signale und häufiges Handeln zu reduzieren.
  2. Kombination mit anderen Indikatoren: Kombination mit anderen technischen Indikatoren wie RSI, MACD usw., um die Gültigkeit von Trends und Signalen zu bestätigen und die Zuverlässigkeit der Strategie zu verbessern.
  3. Festlegen eines angemessenen Stop-Loss: Festlegen Sie einen angemessenen Stop-Loss-Preis, der das Abwärtstrisiko kontrollieren und den Verlust nicht zu früh stoppen kann, was zu verpassten Gewinnchancen führt.

Strategieoptimierungsrichtlinien

Um die Leistung der BreakHigh EMA Crossover Strategie weiter zu verbessern, können folgende Optimierungsrichtungen in Betracht gezogen werden:

  1. Dynamische Anpassung der Parameter: Entsprechend der Marktvolatilität und der Trendstärke werden die Strategieparameter dynamisch angepasst, z. B. um die Periode, in der die Volatilität hoch ist, zu erhöhen, um die Risikoposition bei starker Tendenz zu erhöhen usw., um sich an unterschiedliche Marktbedingungen anzupassen.
  2. Einführung eines Long-Short-Mechanismus: Auf der Grundlage des ursprünglichen Long-Tradings wird ein Short-Trading-Mechanismus eingeführt, um auch von Abwärtstrends zu profitieren und so die Anpassungsfähigkeit und Rentabilität der Strategie zu verbessern.
  3. Optimieren Sie Stop-Loss und Take-Profit: Optimieren Sie die Einstellung von Stop-Loss und Take-Profit, z. B. die Verwendung von Trailing Stop-Loss, partiellem Take-Profit usw., um Risiken besser zu kontrollieren und Gewinne zu erzielen.
  4. Kombination mit der Fundamentalanalyse: Kombination von Fundamentalanalyse und technischer Analyse, z. B. Anpassung der Position und Parameter der Strategie vor und nach wichtigen Ereignissen wie Unternehmensergebnisberichten und Veröffentlichungen von Wirtschaftsdaten, um möglichen Marktveränderungen gerecht zu werden.

Durch die oben genannten Optimierungsmaßnahmen können die Stabilität, Anpassungsfähigkeit und Rentabilität der BreakHigh EMA Crossover-Strategie verbessert werden, sodass sie in mehr Marktumgebungen eine gute Performance erzielen kann.

Zusammenfassung

Die BreakHigh EMA-Crossover-Strategie ist eine einfache und effektive Trend-folgende Strategie, die Markttrends erfasst, indem Preis-Breakout und EMA-Crossover verwendet werden, während Stop-Loss verwendet wird, um das Abwärtsrisiko zu kontrollieren. Die Strategielogik ist klar, die Parameter sind flexibel und ist leicht zu verstehen und umzusetzen. Obwohl die Strategie bestimmte Risiken wie Marktvolatilitätsrisiko, Trendumkehrrisiko und Parameterrisiko hat, können diese Risiken durch geeignete Risikokontrollmaßnahmen, wie Anpassung von Parametern, Kombination mit anderen Indikatoren und Einstellung eines angemessenen Stop-Loss, gemildert werden. Darüber hinaus hat die Strategie einen weiteren Optimierungsraum wie dynamische Parameteranpassung, Einführung eines Long-Short-Loss-Mechanismus, Optimierung von Stop- und Take-Profit und Kombination mit Fundamentalanalyse usw., um die Leistungsfähigkeit und Anpassungsfähigkeit der Strategie zu verbessern.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version = 5
strategy(title="BreakHigh Strategy", overlay=true)
Period = input.int(34, "Number of previous bars(34,52 Recommend)")
showbg = input(defval = false,title = "Show BackGround Color")
showema = input(defval = true ,title = "Show Line")
MarkBuySig = input(defval = true ,title = "Show Buy/Sell Signal")

Risk_Per_Trade = input(2.5, '% of Risk Per Trade') / 100  // Risk% Per Trade Switch
SLDAY = input(title='Lowest price of the previous number of bars', defval=9)
Buysig = input(defval=true, title='Start Strategy')
UseSl = input(defval=false, title='Use Stoploss Price')
Compound = input(defval = false ,title =  "Compound Profit")
xtf = input.timeframe(title='** Fix chart to which time frame ? **)', defval='D')


//BUY
float buyLine = na
buyLine := ta.highest(high,Period)[1] 
plot(showema ? buyLine : na, linewidth=1, style=plot.style_linebr, color=color.new(color.green, 0))

//SELL
output = ta.ema(close, Period)
show = request.security(syminfo.tickerid, xtf, output)
FastL = plot(showema ? show : na, color=color.new(color.white, 0), linewidth=2, title='Slow EMA')

//Buy-Sell Signal
Green = close > buyLine   // Buy
Red = close < show // Sell

buycond = Green and Green[1] == 0
sellcond = Red and Red[1] == 0

bullish = ta.barssince(buycond) < ta.barssince(sellcond)
bearish = ta.barssince(sellcond) < ta.barssince(buycond)

buy = bearish[1] and buycond
sell = bullish[1] and sellcond

plotshape(MarkBuySig ? buy : na, style=shape.labelup, text='Buy Next Bar', textcolor=color.new(color.black, 0), location=location.belowbar, color=color.new(color.green, 0))
plotshape(MarkBuySig ? sell : na, style=shape.labeldown, text='Sell Next Bar', textcolor=color.new(color.black, 0), location=location.abovebar, color=color.new(color.red, 0))
bgcolor(showbg ? bullish ? color.new(color.green,90) : color.new(color.red,90) : na )


// === BACKTEST RANGE === //
use_date_range = input(true)
FromYear = input.int(defval=2012, title='From Year', minval=1950)
FromMonth = input.int(defval=1, title='From Month', minval=1)
FromDay = input.int(defval=1, title='From Day', minval=1)
ToYear = input.int(defval=9999, title='To Year', minval=1950)
ToMonth = input.int(defval=1, title='To Month', minval=1)
ToDay = input.int(defval=1, title='To Day', minval=1)
in_date_range = use_date_range ? time > timestamp(FromYear, FromMonth, FromDay, 00, 00) and time < timestamp(ToYear, ToMonth, ToDay, 23, 59) : true

//****************************************************************************//

//////////////////////////////////////////////
//    define strategy entry / exit          //
//////////////////////////////////////////////

//****************************************************************************//
// LONG CONDITIONS

Select_Long_Condition_1 = close > buyLine // Buy when Have Signal
Open_Long_Condition = Select_Long_Condition_1 and strategy.opentrades == 0

//****************************************************************************//
// STOP LOSS Price

float longSL = na
longSL := Open_Long_Condition ? ta.lowest(low, SLDAY)[1] : longSL[1]  


//****************************************************************************//
// Cal StopLoss

Long_Entry_Price = close
Diff_OPEN_to_SL = math.abs(Long_Entry_Price - longSL)

// Exit CONDITIONS

Exit_Long_Condition = close < show // Sell when Have Signal

//****************************************************************************//
// POSITION SIZE CAP

strategy.initial_capital = 50000

float portSize = Compound ? strategy.netprofit + strategy.initial_capital : strategy.initial_capital
float LossAmoutUnit = portSize * Risk_Per_Trade //50
float PercentSL = ( Diff_OPEN_to_SL / Long_Entry_Price ) * 100
float PositionSize = LossAmoutUnit / Diff_OPEN_to_SL


//****************************************************************************//
// ENTRY/EXIT

if Buysig
    if Open_Long_Condition and in_date_range 
        strategy.entry('LONG', strategy.long, qty=PositionSize)


if Exit_Long_Condition and in_date_range
    strategy.close('LONG')
if close < longSL and UseSl
    strategy.close('LONG')

//****************************************************************************//
// PLOT STOP LOSS

longPlotSL = strategy.opentrades > 0 and strategy.position_size > 0 ? longSL : na
// label.new(bar_index, high, text=str.tostring(longPlotSL),color=color.white, textcolor=color.black)
plot(longPlotSL, title="", linewidth=2, style=plot.style_linebr, color=color.new(color.red, 0))



//****************************************************************************//



Mehr