Universal-Sniper-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-12-20 11:04:15
Tags:

img

Übersicht

Diese Strategie verwendet eine Kombination aus mehreren technischen Indikatoren, um eine vielseitige kurzfristige Handelsstrategie umzusetzen.

Strategieprinzip

  1. Die Strategie verwendet zunächst den Indikator für den Kerzenkörperkanal in Kombination mit dem höchsten und niedrigsten Preiskanal, um die aktuelle Trendrichtung und -stärke zu bestimmen.

  2. Die Kombination aus zwei EMA-Indikatoren wird zur Filterung falscher Signale verwendet.

  3. Die Strategie verwendet den Hull MA-Indikator, um festzustellen, ob der aktuelle Preis überkauft oder überverkauft ist.

  4. Schließlich nutzt die Strategie die Sicherheitsfunktion, um einen höheren Zyklus zu eröffnen, um die Richtung des großen Zyklustrends zu bestimmen und Handelssignale zu erzeugen.

Die Kombination mehrerer Teilstrategien ermöglicht es der Strategie, Zwischenzyklustrends zu erfassen und gleichzeitig die allgemeine Trendrichtung anhand langer Zyklen zu beurteilen, wodurch eine vielseitige, universelle Handelsstrategie realisiert wird.

Analyse der Vorteile

Der größte Vorteil dieser Strategie besteht darin, dass sie mehrere technische Indikatoren für den Portfoliohandel kombiniert, die gleichzeitig Trend-Tracking, Mean-Reversion-Handel, Breakout-Handel und andere Handelsmethoden realisieren können, die sehr vielseitig sind und sich an die meisten Marktumgebungen anpassen.

Die wichtigsten Vorteile dieser Strategie sind insbesondere:

  1. Die Verwendung des Kanalindikators des Kerzenkörpers zur Bestimmung des Entitätsbreaches kann Breakout-Signale effektiv identifizieren.

  2. Die Verwendung von doppelten EMA-Combos zur Filterung falscher Signale verbessert die Signalgenauigkeit.

  3. Die Verwendung des Hull MA-Indikators zur Bestimmung von Überkauf- und Überverkaufsgebieten ermöglicht eine genauere Bestimmung von Wendepunkten.

  4. Durch die Übertragung der Öffnungs- und Schlusskurs von höheren Zyklus-K-Linien, um Signale zu erzeugen, kann vermieden werden, durch Lärm irregeführt zu werden.

  5. Die Kombination mehrerer Handelsmethoden macht die Strategie vielseitiger und universeller.

Risikoanalyse

Obwohl die Strategie mehrere Indikatoren kombiniert, um eine vielseitige Handelsstrategie zu erreichen, bestehen im Handel noch bestimmte Risiken, hauptsächlich:

  1. Der Breakout-Handel ist anfällig dafür, durch falsche Breakouts getäuscht zu werden und erzeugt falsche Signale.

  2. Der durchschnittliche Umkehrhandel verursacht in der Regel Verluste auf den Märkten mit Bandbreite.

  3. Die Filterfähigkeit der doppelten EMA-Kombination ist noch begrenzt, was normale Signale filtern kann.

  4. Der Hull-MA-Indikator ist bei den Anpassungskurven noch nicht so genau.

Im Hinblick auf die oben genannten Risiken können in folgenden Bereichen Optimierungen vorgenommen werden:

  1. Verwenden Sie stabilere Indikatoren, um falsche Ausbrüche zu beurteilen und zu vermeiden.

  2. Steigern Sie die Stop-Loss-Strategien, um Einzelverluste zu kontrollieren.

  3. Anpassen der doppelten EMA-Parameter, um die optimale Kombination zu finden.

  4. Versuchen Sie, mehr Indikatoren zu integrieren, um Überkauf- und Überverkaufsbedingungen zu bestimmen.

Optimierungsrichtlinien

Nach der vorstehenden Analyse kann die Strategie hauptsächlich in folgenden Richtungen optimiert werden:

  1. Verwenden Sie als Hilfsbeurteilung mehr Mainstream- und stabile Indikatorenkombinationen wie Kalman-Linien, Bollinger-Bänder usw.

  2. Steigern Sie die Stop-Loss-Strategien, um Einzelverluste streng zu kontrollieren.

  3. Optimierung der Parameter, um die optimale Parameterkombination zu finden.

  4. Erhöhung des Beurteilungsvermögens eines maschinellen Lernmodells, um KI zu nutzen, um überkaufte und überverkaufte Bereiche zu bestimmen.

  5. Erhöhen Sie das adaptive Logik-Urteilsvermögen, um die Strategiemethoden dynamisch an unterschiedliche Marktumgebungen anzupassen.

Zusammenfassung

Die Strategie kombiniert mehrere Indikatoren für den Portfoliohandel, wodurch die organische Integration mehrerer Handelsmethoden wie Trendverfolgung, Breakout-Handel und Mean-Reversion-Handel erreicht wird. Es ist eine sehr vielseitige und universelle kurzfristige Handelsstrategie. Der größte Vorteil dieser Strategie ist ihre breite Anwendbarkeit in den meisten Marktumgebungen. Sie gehört zu einer universelleren Strategieidee. Natürlich gibt es im Handel immer noch gewisse Risiken. Wir können die Strategie optimieren, indem wir stabilere Indikatoren einführen, den Stop-Loss erhöhen, die Parameteroptimierung optimieren, maschinelles Lernen anwenden und viele andere Aspekte, um die Leistung der Strategie weiter zu verbessern. Im Allgemeinen ist dies eine sehr lohnende universelle kurzfristige Handelsstrategie, auf die man sich beziehen und aus der man lernen kann.


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

//@version=2
//╭╮╱╱╭╮╭╮╱╱╭╮
//┃╰╮╭╯┃┃┃╱╱┃┃
//╰╮┃┃╭┻╯┣╮╭┫╰━┳╮╭┳━━╮
//╱┃╰╯┃╭╮┃┃┃┃╭╮┃┃┃┃━━┫
//╱╰╮╭┫╰╯┃╰╯┃╰╯┃╰╯┣━━┃
//╱╱╰╯╰━━┻━━┻━━┻━━┻━━╯
//╭━━━┳╮╱╱╱╱╱╱╱╭╮
//┃╭━╮┃┃╱╱╱╱╱╱╱┃┃
//┃┃╱╰┫╰━┳━━┳━╮╭━╮╭━━┫┃
//┃┃╱╭┫╭╮┃╭╮┃╭╮┫╭╮┫┃━┫┃
//┃╰━╯┃┃┃┃╭╮┃┃┃┃┃┃┃┃━┫╰╮
//╰━━━┻╯╰┻╯╰┻╯╰┻╯╰┻━━┻━╯
//━╯
// http://www.vdubus.co.uk/
strategy(title='Vdub FX SniperVX3 / Strategy  v3', shorttitle='Vdub_FX_SniperVX3_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = request.security(syminfo.tickerid, Piriod, open)
ch2 = request.security(syminfo.tickerid, Piriod, close)
longCondition = crossover(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////

Mehr