
Die Hauptidee der Strategie besteht darin, zwei Stop-Points zu setzen, die beim Trigger des ersten Stop-Points den Stop-Loss-Punkt zum Einstiegspreis verschieben, um zu verhindern, dass der Stop-Loss an der Kante liegt.
Diese Strategie basiert auf dem Brin-Band-Indikator und dem Stochastic-Indikator-Eintritt.
Die Eintrittslogik der Strategie lautet:
Eintritt der Überschwemmung, wenn der Schlusskurs unterhalb der Brin-Reihe ist und die Stochastic K unterhalb der D-Reihe durchbricht
Eintritt beim Schlusskurs oberhalb der Brin-Band-Strecke und beim Durchschreiten der D-Linie auf der Stochastic K-Linie
Die Strategie setzt zwei Stop-Points ein, wobei der erste Stop-Point auf 200 und der zweite auf 500 festgelegt ist.
Wenn der erste Stop-Loss in der Preisbewegung ausgelöst wird, verschiebt die Strategie den Stop-Loss auf den Einstiegspreis. Auf diese Weise kann der Gewinn der ersten Stufe gesperrt werden, während der Stop-Loss von Preisschwankungen abgehalten wird.
Wenn der zweite Stop-Loss ausgelöst wird oder der Stop-Loss ausgelöst wird, wird die Strategie komplett platziert.
Der größte Vorteil dieser zweistufigen Stop-Loss-Strategie besteht darin, dass Sie Gewinne sperren können und gleichzeitig verhindern, dass die Stop-Loss-Strategie von den Preisschwankungen abhängig ist. Durch das Verschieben des Stop-Loss-Punktes zum Einstiegspreis kann die Wahrscheinlichkeit, dass die Stop-Loss-Strategie abhängig ist, verringert und die Gewinne geschützt werden.
Ein weiterer Vorteil ist, dass die Strategie eine Kombination aus Bollinger Bands und Stochastic Indicators verwendet, um die Bandbreite der Preisschwankungen zu bestimmen. Die beiden Indikatoren ergänzen sich und verbessern die Genauigkeit des Einstiegs.
Das Hauptrisiko dieser Strategie besteht darin, dass sowohl der Brin-Band-Indikator als auch der Stochastic-Indikator falsche Signale erzeugen können. Wenn der Brin-Band-Bereich falsch berechnet wird, führt dies zu einem fehlenden Einstiegszeitpunkt oder zu einem falschen Signal.
Darüber hinaus besteht die Gefahr, dass ein Stop-Loss, der zum Einstiegspreis bewegt wird, erneut ausgeschaltet wird. Wenn eine V-Rückkehr erfolgt, kann der Stop-Loss erneut ausgelöst werden.
Um diese Risiken zu verringern, können die Brin-Band-Parameter angepasst, die Stochastic-Parameterkombination optimiert und die Stop-Loss-Intervalle entsprechend erhöht werden.
Diese zweistufige Stop-Loss-Strategie kann weiter optimiert werden:
Verschiedene Parameterkombinationen können getestet werden, um die optimale Kombination aus Brin-Band-Parametern und Stochastic-Parametern zu finden.
Verschiedene Stop-Loss-Einstellungen können getestet werden, um die Größe der Stop-Loss-Punkte zu optimieren und die optimale Konfiguration zu finden.
Es können weitere Kennzahlen wie beispielsweise ein Moving Average hinzugefügt werden, um eine Mehrindikator-Kombinationsstrategie zu bilden und die Einstiegsgenauigkeit zu verbessern.
Verschiedene Stop-Loss-Movement-Logiken können untersucht werden, z. B. die Bewegung über einen bestimmten Zeitraum hinaus, anstatt den Einstiegspreis.
Es ist möglich, die Anzahl der Stop-Loss-Movements zu erhöhen und die Stop-Loss-Bewegung in drei oder mehr Stufen einzustellen.
Diese Strategie verwendet Brin-Band-Indikatoren und Stochastic-Indikatoren, um den Zeitpunkt des Einstiegs zu bestimmen, zwei Stop-Points zu setzen und nach Erreichen des ersten Stop-Points den Stop-Loss-Punkt zum Einstiegspreis zu verschieben, um eine zweistufige Stop-Loss-Strategie zu bilden. Diese Strategie kann die Gewinne effektiv sperren und verhindern, dass die Stop-Losses am Rande stehen. Die Strategie hat Vorteile, aber es gibt auch Raum für Verbesserungen, die durch Parameteroptimierung, Kombination von mehreren Indikatoren, Anpassung der Stop-Loss-Logik usw. weiter verbessert werden können.
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fpsd4ve
//@version=5
// Add Bollinger Bands indicator (close, 20, 2) manually to visualise trading conditions
strategy("2xTP, SL to entry",
overlay=false,
pyramiding=0,
calc_on_every_tick=false,
default_qty_type=strategy.percent_of_equity,
default_qty_value=25,
initial_capital=1000,
commission_type=strategy.commission.percent,
commission_value=0.01
)
// PARAMETERS
// Assumes quote currency is FIAT as with BTC/USDT pair
tp1=input.float(200, title="Take Profit 1")
tp2=input.float(500, title="Take Profit 2")
sl=input.float(200, title="Stop Loss")
stOBOS = input.bool(true, title="Use Stochastic overbought/oversold threshold")
// Colors
colorRed = #FF2052
colorGreen = #66FF00
// FUNCTIONS
// Stochastic
f_stochastic() =>
stoch = ta.stoch(close, high, low, 14)
stoch_K = ta.sma(stoch, 3)
stoch_D = ta.sma(stoch_K, 3)
stRD = ta.crossunder(stoch_K, stoch_D)
stGD = ta.crossover(stoch_K, stoch_D)
[stoch_K, stoch_D, stRD, stGD]
// VARIABLES
[bbMiddle, bbUpper, bbLower] = ta.bb(close, 20, 2)
[stoch_K, stoch_D, stRD, stGD] = f_stochastic()
// ORDERS
// Active Orders
// Check if strategy has open positions
inLong = strategy.position_size > 0
inShort = strategy.position_size < 0
// Check if strategy reduced position size in last bar
longClose = strategy.position_size < strategy.position_size[1]
shortClose = strategy.position_size > strategy.position_size[1]
// Entry Conditions
// Enter long when during last candle these conditions are true:
// Candle high is greater than upper Bollinger Band
// Stochastic K line crosses under D line and is oversold
longCondition = stOBOS ?
low[1] < bbLower[1] and stGD[1] and stoch_K[1] < 25 :
low[1] < bbLower[1] and stGD[1]
// Enter short when during last candle these conditions are true:
// Candle low is lower than lower Bollinger Band
// Stochastic K line crosses over D line and is overbought
shortCondition = stOBOS ?
high[1] > bbUpper[1] and stRD[1] and stoch_K[1] > 75 :
high[1] > bbUpper[1] and stRD[1]
// Exit Conditions
// Calculate Take Profit
longTP1 = strategy.position_avg_price + tp1
longTP2 = strategy.position_avg_price + tp2
shortTP1 = strategy.position_avg_price - tp1
shortTP2 = strategy.position_avg_price - tp2
// Calculate Stop Loss
// Initialise variables
var float longSL = 0.0
var float shortSL = 0.0
// When not in position, set stop loss using close price which is the price used during backtesting
// When in a position, check to see if the position was reduced on the last bar
// If it was, set stop loss to position entry price. Otherwise, maintain last stop loss value
longSL := if inLong and ta.barssince(longClose) < ta.barssince(longCondition)
strategy.position_avg_price
else if inLong
longSL[1]
else
close - sl
shortSL := if inShort and ta.barssince(shortClose) < ta.barssince(shortCondition)
strategy.position_avg_price
else if inShort
shortSL[1]
else
close + sl
// Manage positions
strategy.entry("Long", strategy.long, when=longCondition)
strategy.exit("TP1/SL", from_entry="Long", qty_percent=50, limit=longTP1, stop=longSL)
strategy.exit("TP2/SL", from_entry="Long", limit=longTP2, stop=longSL)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("TP1/SL", from_entry="Short", qty_percent=50, limit=shortTP1, stop=shortSL)
strategy.exit("TP2/SL", from_entry="Short", limit=shortTP2, stop=shortSL)
// DRAW
// Stochastic Chart
plot(stoch_K, color=color.blue)
plot(stoch_D, color=color.orange)
// Circles
plot(stOBOS ? stRD and stoch_K >= 75 ? stoch_D : na : stRD ? stoch_D : na, color=colorRed, style=plot.style_circles, linewidth=3)
plot(stOBOS ? stGD and stoch_K <= 25 ? stoch_D : na : stGD ? stoch_K : na, color=colorGreen, style=plot.style_circles, linewidth=3)
// Levels
hline(75, linestyle=hline.style_dotted)
hline(25, linestyle=hline.style_dotted)