Preisschock-Ausbruchsstrategie


Erstellungsdatum: 2023-12-13 14:36:04 zuletzt geändert: 2023-12-13 14:36:04
Kopie: 3 Klicks: 635
1
konzentrieren Sie sich auf
1621
Anhänger

Preisschock-Ausbruchsstrategie

Überblick

Eine Shock-Break-Strategie ist eine Strategie, bei der ein Kauf- oder Verkaufsgeschäft durchgeführt wird, wenn der Preis eine wichtige Unterstützung oder Resistenz überschreitet. Die Strategie kombiniert mehrere technische Indikatoren, um wichtige Handelsmöglichkeiten zu identifizieren.

Strategieprinzip

Die Strategie basiert hauptsächlich auf den vier technischen Indikatoren Brin-Band-Mittellinie, 48-Tage-SMA, MACD und ADX. Die spezifische Logik ist:

  1. Berücksichtigung von Handelschancen bei einem Breakout über oder unter dem 48-Tage-SMA;

  2. Als Einstiegssignal, wenn der Schlusskurs die Brin-Band-Mitte überschreitet;

  3. Der MACD ist größer als oder kleiner als 0 und dient als Hilfsindikator für die Trendrichtung.

  4. Der ADX sollte größer als 25 sein, um nicht-trendige Trends zu filtern.

Wenn diese vier Voraussetzungen erfüllt sind, ist es möglich, mehr oder weniger zu tun.

Strategische Vorteile

Es handelt sich um eine Strategie, die Trends und Schwankungen kombiniert. Ihre Hauptvorteile sind:

  1. Der 48-Tage-SMA filtert übermäßig häufige Trades und schließt die mittleren und langen Trends ein.

  2. Die Brin-Band-Mitteinbruch hat eine starke Schadensstop-Funktion, um die Schlüssel-Unterstützungswiderstands-Bruchpunkte zu erfassen.

  3. Die MACD beurteilt die Richtung der großen Trends und vermeidet den Abwärtstrading.

  4. ADX filtert nicht-trendige Märkte und erhöht die Strategie-Gewinnrate.

Insgesamt ist die Strategie in mehreren Aspekten optimiert, wie der Kontrolle der Handelsfrequenz, der Erfassung von Schlüsselfunktionen, der Beurteilung von Trends und der Filterung von Ineffektivitäten.

Strategisches Risiko

Diese Strategie birgt folgende Risiken:

  1. In einem wackligen Markt löst die Brin-Band-Mittellinie häufig Handelschancen aus, die möglicherweise übertrieben werden.

  2. Der ADX-Index ist auch in der Lage, Trends und Unwirksamkeiten zu beurteilen.

  3. Die Rücknahme ist ein sehr risikoreicher Vorgang, der sich für Investoren mit einer gewissen Risikobereitschaft eignet.

Strategieoptimierung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Erhöhung der ATR-Werte, Einstellung der Stop-Loss-Position und Verringerung der Einzelschließung;

  2. Optimierung der Brin-Band-Parameter zur Verringerung der Triggerfrequenz der Mittellinien;

  3. Erhöhung des Handelsvolumens oder der Trendstärke, um zu beurteilen, ob ein Trend stark oder schwach ist, um eine Umkehrung der Schwäche zu vermeiden.

Zusammenfassen

Insgesamt betrachtet ist die Shake-Breakout-Strategie insgesamt relativ ausgereift und kann die wichtigsten Handelsplätze in der Shake-Situation effektiv erfassen. Sie kombiniert Trends und Shake-Indikatoren, um das Gleichgewicht zwischen Risiko und Ertrag zu erfassen. Durch weitere Optimierung ist es möglich, stabilere Überschüsse zu erzielen.

Strategiequellcode
/*backtest
start: 2023-12-11 00:00:00
end: 2023-12-12 00:00:00
period: 10m
basePeriod: 1m
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/
// © 03.freeman
//Volatility Traders Minds Strategy (VTM Strategy)
//I found this startegy on internet, with a video explaingin how it works.
//Conditions for entry:
//1 - Candles must to be above or bellow the 48 MA (Yellow line)
//2 - Candles must to break the middle of bollinger bands
//3 - Macd must to be above or bellow zero level;
//4 - ADX must to be above 25 level
//@version=4
strategy("Volatility Traders Minds Strategy (VTM Strategy)", shorttitle="VTM",overlay=true)
source = input(close)
//MA
ma48 = sma(source,48)
//MACD
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)

MACD = ema(source, fastLength) - ema(source, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

//BB

length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

//ADX
adxThreshold = input(title="ADX Threshold", type=input.integer, defval=25, minval=1)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

sig = adx(dilen, adxlen)

//  Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
//tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit   = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss     = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop    = input(defval = 0, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => close>ma48 and close>basis and delta>0 and sig>adxThreshold  // functions can be used to wrap up and work out complex conditions
//exitLong() => jaw>teeth or jaw>lips or teeth>lips
strategy.entry(id = "Buy", long = true, when = enterLong() )    // use function or simple condition to decide when to get in
//strategy.close(id = "Buy", when = exitLong() )                  // ...and when to get out

// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => close<ma48 and close<basis and delta<0 and sig>adxThreshold
//exitShort() => jaw<teeth or jaw<lips or teeth<lips
strategy.entry(id = "Sell", long = false, when = enterShort())
//strategy.close(id = "Sell", when = exitShort() )

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Buy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Sell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2020, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()