Dynamische Gewinnentnahme nach Trendstrategie

Schriftsteller:ChaoZhang, Datum: 29.12.2023
Tags:

img

Übersicht

Die Dynamic Take Profit Following Trend-Strategie erkennt langfristige Trends und kurzfristige Pullbacks, um niedrige Käufe und hohe Verkäufe zu erreichen, mit dem Ziel, Aufwärtstrends zu verfolgen.

Strategie Logik

Die Kauflogik dieser Strategie ist folgende: Wenn ein langfristiger Aufwärtstrend auftritt (EMA-Wert für 200 Tage steigt, RSI-Wert für 200 Tage größer als 51) und ein kurzfristiger Pullback eintritt (die letzten 2 Kerzen zeigen niedrigere Schlusskosten), werden Long-Positionen eröffnet.

Die Verkaufslogik ist: Gewinn machen, wenn der Preis um mehr als 1 Volatilitäteinheit steigt; Stop-Loss, wenn der Preis um mehr als 2 Volatilitäteinheiten sinkt.

Die Volatilitäts-Einheit wird berechnet als: 2 mal die Standardabweichung der Schlusskurse in den letzten 50 Tagen. Dies kann Volatilitätsbedingungen verschiedener Münzen automatisch erkennen, ohne manuelle Prozentsatz-Einstellungen erforderlich zu machen.

Analyse der Vorteile

Der größte Vorteil dieser Strategie besteht darin, dass sie die Volatilitätsgrößen verschiedener Münzen dynamisch erkennen und die Stop-Loss-/Take-Profit-Level entsprechend festlegen kann. Dies vermeidet das Problem der festen Prozentsatz-Einstellungen und kann sich automatisch an mehr Münzen anpassen.

Ein weiterer Vorteil ist, dass die Kombination von langfristigen und kurzfristigen Urteilen falsche Ausbrüche effektiv herausfiltern kann.

Risikoanalyse

Das größte Risiko dieser Strategie ist die Einstellung der Stop-Loss/Take-Profit-Einheit. Wenn die Volatilität zu hoch ist, können die Take-Profit-Distanzen zu nahe sein, um den Aufwärtstrend zu verfolgen; wenn die Volatilität zu niedrig ist, kann der Stop-Loss zu schnell ausgelöst werden. Dies erfordert längere Perioden-EMAs, um Fehler in den Urteilen der Volatilitäteinheiten zu vermeiden.

Ein weiteres Risiko besteht darin, dass die Strategie auf kurzfristige Trends angewiesen ist. Wenn es einen langfristigen Aufwärtstrend ohne kurzfristigen Pullback gibt, würde der Einstiegszeitpunkt verpasst. Dies kann zusätzliche Unterstützungsindikatoren erfordern.

Optimierungsrichtlinien

Die Strategie kann in folgenden Richtungen optimiert werden:

  1. Hinzufügen von EMA-Bewertungen über längere Zeiträume, um Volatilitäteinheitfehler zu vermeiden

  2. Hinzufügen von Indikatoren wie Handelsvolumen, um Trends zu beurteilen, Verringerung der Abhängigkeit von kurzfristigen Kerzen

  3. Optimierung der Ein- und Ausstiegsbedingungen, strengere Einreisebestimmungen

  4. Kombination von Machine-Learning-Algorithmen zur Bestimmung der Trendrichtung, höhere Gewinnrate

Schlussfolgerung

Die Dynamic Take Profit Following Trend Strategy hat eine klare Logik in ihrem Kerndynamische Einstellung von Stop-Loss/Take-Profit-Einheiten. Diese Strategie kann automatisch die Einstellungen über Münzen hinweg anpassen, ohne manuelle Prozentsatz-Eingaben zu benötigen. In der Zwischenzeit kann die Kombination von doppelter Bestätigung von langfristigen und kurzfristigen Trends falsche Signale effektiv filtern. Mit weiteren Optimierungen kann diese Strategie zu einer hocheffizienten Trendjagdstrategie werden.


/*backtest
start: 2022-12-22 00:00:00
end: 2023-12-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BHD_Trade_Bot

strategy(shorttitle='Take Profit On Trend',
 title='Take Profit On Trend (by BHD_Trade_Bot)',
 overlay=true,
 initial_capital = 15,
 default_qty_type = strategy.cash,
 default_qty_value = 15,
 commission_type=strategy.commission.percent,
 commission_value=0.1)



//Backtest Time
start_day = 1
start_month = 1
start_year = 2021
end_day = 1
end_month = 1
end_year = 2050
start_time = timestamp(start_year, start_month, start_day, 00, 00)
end_time = timestamp(end_year, end_month, end_day, 23, 59)
is_back_test_time() =>
    time >= start_time and time <= end_time ? true : false

// Last bar
h1_last_bar = (timenow - time)/1000/60/60 < 2



// EMA
ema50 = ema(close, 50)
ema200 = ema(close, 200)

// RSI length 200
rsi200 = rsi(close, 200)

// Bollinger Bands length 50
bb50 = 2 * stdev(close, 50)

// BHD Unit
bhd_unit = sma(bb50, 100)
bb50_upper = ema50 + bhd_unit
bb50_lower = ema50 - bhd_unit



// All n candles is going down
all_body_decrease(n) =>
    isValid = true
    for i = 0 to (n - 1)
        if (close[i] > close[i + 1])
            isValid := false
            break
    isValid



// ENTRY

// Long-term uptrend
entry_condition1 = rsi200 > 51 

// Short-term downtrend
entry_condition2 = all_body_decrease(2) 

ENTRY_CONDITION = entry_condition1 and entry_condition2

if (ENTRY_CONDITION and is_back_test_time())
    strategy.entry("entry", strategy.long)



// CLOSE CONDITIONS

// Price increase 1 BHD unit
TAKE_PROFIT = close > strategy.position_avg_price + bhd_unit

// Price decrease 2 BHD unit
STOP_LOSS = close < strategy.position_avg_price - bhd_unit * 2

CLOSE_CONDITION = TAKE_PROFIT or STOP_LOSS

if (CLOSE_CONDITION or h1_last_bar)
    strategy.close("entry")



// Draw
plot(ema50)
plot(ema200, color=color.yellow)
plot(bb50_upper)
plot(bb50_lower)


Mehr