Der Trend der dreifachen Bestätigung nach der Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-05 15:46:21
Tags:

img

Übersicht

Diese Strategie erzeugt Handelssignale mit Hilfe eines dreifachen Bestätigungsmechanismus, d. h. der Momentum-Indikator bestätigt einen starken Markttrend, der Supertrend-Indikator bestätigt die Trendrichtung und der EMA-Indikator stellt eine zusätzliche Überprüfung der Trendrichtung zur Verfügung. Nur wenn alle drei Indikatoren die Kriterien erfüllen, erzeugt die Strategie Long- oder Short-Handelssignale, wodurch sichergestellt wird, dass nur Handelsmöglichkeiten mit hoher Wahrscheinlichkeit ausgewählt werden.

Strategieprinzip

  1. Der Momentumindikator (Momentum RSI)

    • Der Momentum RSI-Indikator wird verwendet, um die Stärke des Markttrends zu bestimmen.

    • Handelssignale werden nur während intensiver Bullen- oder Bärenmärkte erzeugt.

  2. Supertrend-Analyse

    • Die Supertrend-Linie stellt die Markttrendrichtung dar. Positionen werden nur berücksichtigt, wenn der Preis die Supertrend-Linie durchbricht.

    • Wenn der Preis die Supertrend-Linie nach oben durchbricht, wird er in einen Aufwärtstrend umgewandelt; wenn er nach unten bricht, wird er in einen Abwärtstrend umgewandelt.

  3. EMA-Strategie

    • Die EMA und ihre Hilfstrendlinien werden verwendet, um die Trendrichtung zu bestätigen.

Nur wenn alle drei Indikatoren gleichzeitig die Bedingungen für die Eröffnung einer Position erfüllen, werden echte Handelssignale ausgegeben, wodurch die Anzahl falscher Signale erheblich reduziert und die Stabilität der Strategie verbessert wird.

Analyse der Vorteile

Die Strategie hat eine äußerst hohe Stabilität und Rentabilität.

  1. Mehrere Bestätigungsmechanismen filtern effektiv Lärm und wählen nur Trades mit hoher Wahrscheinlichkeit aus.

  2. Die Supertrend-Linie verfügt über einen dynamischen Trailing Stop Loss, um das Risiko effektiv zu kontrollieren.

  3. In Kombination mit der Beurteilung der Trendstärke vermeidet nur der Handel mit starken Trends zusätzliches Risiko.

  4. Der EMA-Indikator stellt eine zusätzliche Überprüfung zur Verfügung, um sicherzustellen, dass die Handelsrichtung korrekt ist.

  5. Vollständig parametriert, so dass Händler nach Bedarf anpassen können.

Risikoanalyse

Die wichtigsten Risiken dieser Strategie stammen aus abnormalen Ausbrüchen, die zu fehlerhaften Handelssignalen führen.

  1. Risiko eines falschen Ausbruchs: Erhöhen der Überprüfung von Ausbruchsmechanismen.

  2. Größeres Schwingungsbereichsrisiko: Der Stop-Loss-Bereich muss entsprechend angepasst werden.

  3. Trendumkehrrisiko: Verkürzung der Haltedauer, rechtzeitiger Stop-Loss.

Optimierungsrichtlinien

Zu den wichtigsten Richtungen für die Optimierung dieser Strategie gehören:

  1. Parameteroptimierung: Anpassung der Indikatorparameter an mehr Varianten.

  2. Erhöhte Filterung: Kombination mehrer Indikatoren zur Verbesserung der Signalqualität.

  3. Zusammengesetzte Strategien: Kombination mit anderen Strategien zur Nutzung komplementärer Vorteile.

  4. Dynamische Parameteranpassung: Die Parameter werden automatisch anhand der Marktbedingungen angepasst.

  5. Maschinelles Lernen: Verwenden Sie Algorithmen, um automatisch optimale Parameter zu finden.

Zusammenfassung

Diese Strategie erzielt eine Hochwahrscheinlichkeits-Handelsstrategie mit mehreren Bestätigungen, indem sie Impuls-, Supertrend- und EMA-Indikatoren effektiv kombiniert. Ihr strenger Breakout-Verifizierungsmechanismus verleiht ihr auch eine extrem starke Stabilität. Gleichzeitig hat sie ein sehr hohes Anpassungs- und Optimierungspotenzial. Zusammenfassend lässt sich sagen, dass diese Strategie die Vorteile des Trendfolgens und des Breakout-Handels integriert, was sie zu einer sehr vielversprechenden algorithmischen Handelsstrategie macht.


/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)', shorttitle='The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)', overlay=true,initial_capital = 1000)
//// author -  Baby_whale_to_moon

// MOM Rsi indicator 
group_mom_rsi = "Rsi Of Momentum "
len = input.int(10, minval=1, title="Length Mom-Rsi", group =group_mom_rsi ,tooltip = 'This ind calculate Rsi value of Momentum we use this ind to determine power of trend')
src2 = close
mom = src2 - src2[len]
rsi_mom = ta.rsi(mom, len)
mom_rsi_val = input.int(60, minval=1, title="Mom-Rsi Limit Val", group =group_mom_rsi, tooltip = "When our Mom-Rsi value more then this we open LONG or Short, with help of this indicator we we determine the status of the trend")

// Super Trend Ind
group_supertrend = "SuperTrend indicator"
atrPeriod = input(10, "ATR Length SuperTrend", group = group_supertrend)
factor = input.float(3.0, "Factor SuperTrend", step = 0.01, group = group_supertrend)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

// Ema Indicator
group_most = "Ema indicator"
src = input(close, 'Source Ema Ind',group = group_most)
AP2 = input.int(defval=12, title='Length Ema Ind', minval=1,group = group_most)
Trail1 = ta.ema(src, AP2) //Ema func
AF2 = input.float(defval=1, title='Percent Ema Ind', minval=0.1,group = group_most) / 100
SL2 = Trail1 * AF2  // Stoploss Ema
Trail2 = 0.0
iff_1 = Trail1 > nz(Trail2[1], 0) ? Trail1 - SL2 : Trail1 + SL2
iff_2 = Trail1 < nz(Trail2[1], 0) and Trail1[1] < nz(Trail2[1], 0) ? math.min(nz(Trail2[1], 0), Trail1 + SL2) : iff_1
Trail2 := Trail1 > nz(Trail2[1], 0) and Trail1[1] > nz(Trail2[1], 0) ? math.max(nz(Trail2[1], 0), Trail1 - SL2) : iff_2

//Bull = ta.barssince(Trail1 > Trail2 and close > Trail2 and low > Trail2) < ta.barssince(Trail2 > Trail1 and close < Trail2 and high < Trail2)

//TS1 = plot(Trail1, 'ExMov', style=plot.style_line, color=Trail1 > Trail2 ? color.rgb(33, 149, 243, 100) : color.rgb(255, 235, 59, 100), linewidth=2)
//TS2 = plot(Trail2, 'ema', style=plot.style_line, color=Trail1 > Trail2 ? color.rgb(76, 175, 79, 30) : color.rgb(255, 82, 82, 30), linewidth=2)
//fill(TS1, TS2, Bull  ? color.green : color.red, transp=90)


// Strategy Sett
group_strategy = "Settings of Strategy"
Start_Time = input(defval=timestamp('01 January 2000 13:30 +0000'), title='Start Time of BackTest', group =group_strategy)
End_Time = input(defval=timestamp('30 April 2030 19:30 +0000'), title='End Time of BackTest', group =group_strategy)
dollar = input.float(title='Dollar Cost Per Position* ', defval=50000, group =group_strategy)
trade_direction = input.string(title='Trade_direction', group =group_strategy, options=['LONG', 'SHORT', 'BOTH'], defval='BOTH')
v1 = input(true, title="Version 1 - Uses SL/TP Dynamically ", group =group_strategy ,tooltip = 'With this settings our stoploss price increase or decrease with price to get better PNL score')

v2 = input(false, title="Version 2 -  Uses SL/TP Statically", group =group_strategy)
v2stoploss_input = input.float(5, title='Static Stop.Loss % Val', minval=0.01, group =group_strategy)/100
v2takeprofit_input = input.float(10, title='Static Take.Prof % Val', minval=0.01, group =group_strategy)/100

v2stoploss_level_long = strategy.position_avg_price * (1 - v2stoploss_input)
v2takeprofit_level_long = strategy.position_avg_price * (1 + v2takeprofit_input)

v2stoploss_level_short = strategy.position_avg_price * (1 + v2stoploss_input)
v2takeprofit_level_short = strategy.position_avg_price * (1 - v2takeprofit_input)

group_line = "Line Settings"
show_sl_tp = input.bool(title='  Show StopLoss - TakeProf Lines',inline = "1", defval=true, group =group_line)
show_trend_line = input.bool(title='  Show Trend Line',inline = '3' ,defval=true, group =group_line)
stoploss_colour = input.color(title='StopLoss Line Colour',inline = '2' ,defval=color.rgb(255, 255, 0), group =group_line)
up_trend_line_colour = input.color(title='Up Trend line Colour',inline = '4' ,defval=color.rgb(0, 255, 0, 30), group =group_line)
down_trend_line_colour = input.color(title='Down Trend line Colour',inline = '4' ,defval=color.rgb(255, 0, 0, 30), group =group_line)

//plot(supertrend ,color = strategy.position_size > 0 and show_sl_tp ? color.rgb(255, 0, 0) :show_sl_tp ? color.rgb(0, 255, 0) : na , style = plot.style_steplinebr,linewidth = 2)
// plot(supertrend ,color = show_sl_tp and v1 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)

// plot(v2stoploss_level_long ,color = strategy.position_size > 0 and show_sl_tp and v2 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2stoploss_level_short ,color = strategy.position_size < 0 and show_sl_tp and v2 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2takeprofit_level_long  ,color = strategy.position_size > 0 and show_sl_tp and v2 ? up_trend_line_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2takeprofit_level_short ,color = strategy.position_size < 0 and show_sl_tp and v2 ? up_trend_line_colour : na , style = plot.style_steplinebr,linewidth = 2)


TS2 = plot(Trail2, 'Ema Strategy', style=plot.style_line, color=show_trend_line and Trail1 < Trail2 ? down_trend_line_colour : show_trend_line ? up_trend_line_colour  : na, linewidth=2)

// bgcolor(buy_signal ? color.rgb(0, 230, 119, 80) : na)
// bgcolor(sell_signal ? color.rgb(255, 82, 82, 80) : na)

Time_interval = true
buy_signal = Trail1 > Trail2 and direction < 0 and rsi_mom > mom_rsi_val and Time_interval
sell_signal =Trail1 < Trail2 and direction > 0 and rsi_mom > mom_rsi_val and Time_interval


// Strategy entries 
if strategy.opentrades == 0 and buy_signal and ( trade_direction == 'LONG' or trade_direction == 'BOTH')
    strategy.entry('Long_0', strategy.long, qty=dollar / close)

if strategy.opentrades == 0 and sell_signal and ( trade_direction == 'SHORT' or trade_direction == 'BOTH')
    strategy.entry('Short_0', strategy.short, qty=dollar / close)


if close < supertrend and v1
    strategy.exit('Long_Close',from_entry = "Long_0", stop=supertrend, qty_percent=100)
if  v2 and strategy.position_size > 0
    strategy.exit('Long_Close',from_entry = "Long_0", stop=v2stoploss_level_long,limit= v2takeprofit_level_long  , qty_percent=100)
    
if close > supertrend and v1
    strategy.exit('Short_Close',from_entry = "Short_0", stop=supertrend, qty_percent=100)
if  v2 and strategy.position_size < 0
    strategy.exit('Short_Close',from_entry = "Short_0", stop=v2stoploss_level_short,limit= v2takeprofit_level_short ,qty_percent=100)
    

Mehr