Diese Strategie basiert auf der durchschnittlichen realen Schwankungsbreite ((ATR) und der relativ starken Index ((RSI) und hat ein Handelssystem mit Trend-Tracking-Funktion entworfen. Das System kann die Richtung des Trends automatisch identifizieren und verfügt über Stop-Loss- und Stop-Stopp-Funktionen.
Die ATR und der RSI werden berechnet. Der ATR spiegelt die durchschnittliche Preisschwankung in der jüngsten Zeit wider. Der RSI spiegelt die Kräfte zwischen den beiden Währungen wider.
Wenn der ATR größer ist als der gleitende Durchschnitt, ist er für den Handel geeignet.
Wenn der RSI oberhalb der Überkauflinie liegt, ist ein Plus; wenn der RSI unterhalb der Überverkaufszone liegt, ist ein Minus.
Nach dem Plus multipliziert man mit dem Höchstwert und dem Fixed Ratio, um den Stop-Loss zu verfolgen. Nach dem Short multipliziert man mit dem Tiefwert und dem Fixed Ratio, um den Stop-Loss zu verfolgen.
Die Gewinnquote steigt.
Die Verfolgung von Stop-Losses kann die Verringerung von Verlusten und die Maximierung von Stop-Losses ermöglichen.
Der RSI ist ein guter Indikator für die positive Luftwaffe und verhindert, dass man bei einem wackligen Trend immer wieder auftritt.
Der ATR ist ein Indikator für die Volatilität, der Schwankungen filtert und nur in Trends handelt.
Die Gewinnquote-Sperre kann einen Teil des Gewinns sperren.
ATR und RSI sind beide Verzögerungsindikatoren, die dazu führen können, dass der Einstiegszeitpunkt nachlässt. Die Parameter können entsprechend optimiert werden, um das System empfindlicher zu machen.
Die Fixed-Loss-Verhältnis-Stop-Loss-Schranke ist leicht zu optimiert und sollte sorgfältig mit den Rückmeldungen kombiniert werden.
In einem hochperiodischen Zustand kann der ATR länger als der Moving Average liegen, was zu einem Überhandel führt. Weitere Filterbedingungen können hinzugefügt werden.
Optimierung der ATR- und RSI-Parameter, um das System empfindlicher zu machen.
Es ist wichtig, dass die Mainstream-Indikatoren eingesetzt werden, um die Richtung des Trends zu bestimmen.
Versuchen Sie mit einem dynamischen Stop-Loss-Stopp-Verhältnis, anstatt mit einem festen.
Erwägen Sie die Einführung von Volumenkontrollen.
Die Strategie integriert die Vorteile der beiden Indikatoren ATR und RSI und entwirft ein einfaches, praktisches Trend-Tracking-Trading-System. Durch die Optimierung der Parameter und die Erhöhung der Filterbedingungen kann die Systemstabilität weiter verbessert werden. Insgesamt hat die Strategie einen starken Wert für die Anwendung auf dem Markt.
/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// © liwei666
//@version=5
// # ========================================================================= #
// # | Strategy |
// # ========================================================================= #
strategy(
title = "ATR_RSI_Strategy v2[liwei666]",
shorttitle = "ATR_RSI_Strategy",
overlay = true,
max_lines_count = 500,
max_labels_count = 500,
max_boxes_count = 500,
max_bars_back = 5000,
initial_capital = 10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=50, commission_type=strategy.commission.percent, pyramiding=1,
commission_value=0.05
)
// # ========================================================================= #
// # | Strategy |
// # ========================================================================= #
atr_length = input.int(26, "atr_length", minval = 6, maxval = 100, step=1)
atr_ma_length = input.int(45, "atr_ma_length", minval = 6, maxval = 100, step=1)
rsi_length = input.int(15, "rsi_length", minval = 6, maxval = 100, step=1)
rsi_entry = input.int(10, "rsi_entry", minval = 6, maxval = 100, step=1)
atr_ma_norm_min = input.float(0.3, "atr_ma_norm_min", minval = 0.1, maxval = 0.5, step=0.1)
atr_ma_norm_max = input.float(0.7, "atr_ma_norm_max", minval = 0.5, maxval = 1, step=0.1)
trailing_percent= input.float(1.5, "trailing_percent", minval = 0.1, maxval = 2, step=0.1)
var rsi_buy = 50 + rsi_entry
var rsi_sell = 50 - rsi_entry
sma_norm_h_45() =>
source = high
n = 45
sma = ta.sma(source, n)
sma_norm = (sma - ta.lowest(sma, n)) / (ta.highest(sma,n) - ta.lowest(sma, n))
sma_norm
atr_value = ta.atr(atr_length)
atr_ma = ta.sma(atr_value, atr_ma_length)
rsi_value = ta.rsi(close, length = rsi_length)
atr_ma_norm = atr_ma / close * 100
sma_norm = sma_norm_h_45()
var intra_trade_high = 0.0
var intra_trade_low = 0.0
if strategy.position_size == 0
intra_trade_high := high
intra_trade_low := low
if atr_ma_norm >= atr_ma_norm_min and atr_ma_norm <= atr_ma_norm_max
if atr_value > atr_ma
if rsi_value > rsi_buy
strategy.entry("B1", strategy.long, limit = close + 5 )
else if rsi_value < rsi_sell
strategy.entry("S1", strategy.short, limit = close - 5 )
else if strategy.position_size > 0
intra_trade_high := math.max(intra_trade_high, high)
intra_trade_low := low
long_tp = intra_trade_high * (1 - trailing_percent / 100)
strategy.exit("Exit B1", from_entry="B1", stop = long_tp, limit = strategy.position_avg_price * 1.03)
else if strategy.position_size < 0
intra_trade_high := high
intra_trade_low := math.min(intra_trade_low, low)
short_tp = intra_trade_low * (1 + trailing_percent / 100)
strategy.exit("Exit S1", from_entry="S1", stop = short_tp, limit = strategy.position_avg_price * 0.94)