Fallstudie Dynamische Stop-Loss-Strategie


Erstellungsdatum: 2023-09-13 14:08:47 zuletzt geändert: 2023-09-13 14:08:47
Kopie: 0 Klicks: 737
1
konzentrieren Sie sich auf
1617
Anhänger

Diese Strategie basiert auf der Theorie des dynamischen Stop-Losses von Mr. Case. Die Strategie berechnet die dynamische Bandbreite der Preise und sucht nach den optimalen Stop-Loss- und Stop-Stop-Punkten, um eine Gewinn-Loss-Balance zu erzielen.

Die Strategie:

  1. Der Index für die dynamischen Preisschwankungen RWH und RWL wird berechnet.

  2. Der Preisentfernungsindex Pk wird anhand von RWH und RWL ermittelt.

  3. Der Stop-Loss wird berechnet, wenn Pk > 0 ist. Der Stop-Loss wird berechnet, wenn PK < 0 ist.

  4. Die Abweichungsmenge der Schadensstoppe kann gewählt werden und ist in der Regel 1 bis 3 mal so hoch wie die Standarddifferenz.

  5. Wenn der Preis den Stop-Loss-Stopp erreicht, wird ein Umkehrschritt durchgeführt.

Die Vorteile der Strategie:

  1. Die dynamische Berechnung des Stop-Loss-Stopp-Points kann an Marktschwankungen angepasst werden.

  2. Der Stopp wird nicht zu nahe oder zu locker sein.

  3. Mathematische Berechnungsmethoden verhindern, dass subjektive Emotionen das Urteilsvermögen beeinflussen.

Die Risiken dieser Strategie:

  1. Die Berechnung des Stop-Loss-Preises ist nachlässig und kann den optimalen Stop-Loss-Punkt verpassen.

  2. Optimierung der Parameter für die Abweichung von den Multiplikatoren zur Ausgleichung der Stop-Loss-Stopps.

  3. Es gibt keine Einschränkung für die Höhe der Einzelschäden, es besteht die Gefahr eines großen Einzelschädens.

Zusammenfassend lässt sich sagen, dass diese Strategie die Stop-Loss-Setting-Einstellungen zu einem gewissen Grad intelligent optimieren kann, aber ihre Wirksamkeit muss noch überprüft und überprüft werden, und Subjektive Risiken können nicht vollständig umgangen werden, und Investoren müssen weiterhin vorsichtig sein.

Strategiequellcode
/*backtest
start: 2023-01-01 00:00:00
end: 2023-04-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/10/2019
//  The Kase Dev Stops system finds the optimal statistical balance between letting profits run, 
//  while cutting losses.  Kase DevStop seeks an ideal stop level by accounting for volatility (risk),
//  the variance in volatility (the change in volatility from bar to bar), and volatility skew 
//  (the propensity for volatility to occasionally spike incorrectly).
//
//  Kase Dev Stops are set at points at which there is an increasing probability of reversal against 
//  the trend being statistically significant based on the log normal shape of the range curve.  
//  Setting stops will help you take as much risk as necessary to stay in a good position, but not more.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Kase Dev Stops Backtest", overlay = true)
Length = input(30, minval=2, maxval = 100)
Level = input(title="Trade From Level", defval=4, options=[1, 2, 3, 4])
reverse = input(false, title="Trade reverse")
RWH = (high - low[Length]) / (atr(Length) * sqrt(Length))
RWL = (high[Length] - low) / (atr(Length) * sqrt(Length))
Pk = wma((RWH-RWL),3)
AVTR = sma(highest(high,2) - lowest(low,2), 20)
SD = stdev(highest(high,2) - lowest(low,2),20)
Val4 = iff(Pk>0, highest(high-AVTR-3*SD,20), lowest(low+AVTR+3*SD,20))
Val3 = iff(Pk>0, highest(high-AVTR-2*SD,20), lowest(low+AVTR+2*SD,20))
Val2 = iff(Pk>0, highest(high-AVTR-SD,20), lowest(low+AVTR+SD,20))
Val1 = iff(Pk>0, highest(high-AVTR,20), lowest(low+AVTR,20))
ResPrice = iff(Level == 4, Val4,
             iff(Level == 3, Val3,
               iff(Level == 2, Val2,
                 iff(Level == 1, Val1, Val4))))
pos = iff(close < ResPrice , -1, 1)
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )