Handelsstrategie auf der Grundlage einer Kombination aus mehreren Zeitrahmen EMA-Durchbruch und K-Linien-Muster

Schriftsteller:ChaoZhang, Datum: 2024-02-21 15:00:06
Tags:

img

Übersicht

Diese Strategie integriert mehrere Zeitrahmen-EMA-Indikatoren und K-Linien-Musterbeurteilungen, um relativ empfindliche langfristige Signalfassung und Stop-Loss-Ausgänge zu erreichen.

Strategieprinzip

Die Strategie stützt sich hauptsächlich auf folgende Indikatoren:

  1. EMA: Verwendet 2 Sätze von 13 und 21 EMA-Zyklen, um das Handelssignal bei Preisdurchbruch zu bestimmen.

  2. K-Linienmuster: Beurteilt die Richtung der K-Linienentität und verwendet sie mit dem EMA-Indikator, um falsche Durchbrüche zu filtern.

  3. Unterstützungswiderstand: Erstellt anhand der höchsten Punkte in den letzten 10 Zyklen, um festzustellen, ob der Durchbruch diesen Bereich überschreitet, um die Signalzuverlässigkeit zu erhöhen.

  4. Aufstieg in der Zeitteilung: 120-Zyklus-Schließung ist oben offen zu beurteilen als Aufstieg in der Zeitteilung, als Hilfsurteil.

Die Regeln für die Erzeugung von Handelssignalen sind:

  1. Bullish Signal: Schnelle EMA durchbricht langsame EMA nach oben mit einer Yang-Linie K-Linie, schließt Short-Position und öffnet Long.

  2. Bärensignal: Schnelle EMA bricht durch langsame EMA mit einer Yin-Linie K-Linie ab, flache Longposition.

  3. Stop-Loss-Ausgang: Stop-Loss-Ausgang in der aktuellen Position, wenn das Rückwärtssignal angezeigt wird.

Vorteile

  1. Mehrfache Zeitrahmen-EMA-Indikatoren beurteilen den Trend zuverlässiger und vermeiden falsche Durchbrüche.
  2. Kombiniert mit K-Line Entity-Richtung zur Filterung, um Trends genauer zu erkennen.
  3. Erhöhung der Zeitteilungsbeurteilungen und Unterstützung der Widerstandsbeurteilungen zur Sicherstellung der Signalqualität.
  4. Verwenden Sie umgekehrte Signale als Stop-Loss, um das Verlustrisiko zu verringern.

Risiken

  1. Risiko ungültiger Durchbrüche, die zu Verlusten führen.
  2. Risiko einer unsachgemäßen Parameterwahl: Eine unsachgemäße Einstellung der EMA-Zyklen und der K-Linien-Urteilszyklen führt zu einer Abnahme der Signalqualität.
  3. Das Risiko eines Ausfalls des Stützwiderstands ist häufig, was auch zu einem Mangel an Schwung bei der Erzeugung von Signalen führt.
  4. Die Situation der Zeitteilung ändert sich und kann nicht vollständig für das Urteilsvermögen verwendet werden.

Die oben genannten Risiken können durch Methoden wie die Vermeidung übermäßiger Optimierung, sorgfältige Parameterwahl, strenge Kontrolle der Positionsgröße gemindert werden.

Optimierungsrichtlinien

  1. Einführung von Modellen für maschinelles Lernen zur Unterstützung des Urteils, Ausbildung von Klassifizierungsmodellen zur Beurteilung von K-Linien-Entitäterichtungen für höhere Genauigkeit.
  2. Erhöhen Sie den adaptiven Stop-Loss-Mechanismus wie Trailing-Stops oder Volatilitäts-basierte Stops.
  3. Sie müssen eine emotionale Analyse kombinieren und bestimmte Meinungsurteile der Medien einführen, um die Auswirkungen der Nachrichten zu vermeiden.
  4. Einführung von festen Positionsgrößenverhältnissen oder einer auf Fondsmanagement basierenden Größenordnung.

Schlussfolgerung

Die Strategie integriert mehrere Zeitrahmen EMA und K-Line Entität Urteile für relativ zuverlässige Trendurteile. Hilfsurteile mit Unterstützung Widerstand und Zeitteilung gewährleisten Signalqualität. Die Verwendung von umgekehrten Signalen für Stop-Loss kann effektiv Single Stop-Loss kontrollieren. Zukünftige Optimierungen können durch die Einführung von Machine Learning-Modellen, adaptive Stops, sentimental Analysis und Position Größenmanagement-Module durchgeführt werden, um die Strategie robuster zu machen.


/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='ck - CryptoSniper Longs Only (Strategy)', shorttitle='ck - CryptoSniper Longs (S) v1', overlay=true, precision=2, commission_value=0.25, default_qty_type=strategy.percent_of_equity, pyramiding=0, default_qty_value=100, initial_capital=100)

open_long = 0
close_position = 0
last_long=close
last_short=close

//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=false

//-----------------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)

//--------------------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

//-------------------- 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

//=============Hull MA//
show_hma = false
hma_src = input(close, title="HullMA Source:")
hma_base_length = input(8, minval=1, title="HullMA Base Length:")
hma_length_scalar = input(5, minval=0, title="HullMA Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))

//============ signal Generator ==================================//
Period=input(title='Period', defval='120')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)

// Signals//
long = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
short = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short) ? 1 : -1
short_signal = crossover(last_short, last_long) ? -1 : 1

if (long_signal == 1)
    strategy.entry("Long Open", strategy.long)

if (short_signal == -1)
    strategy.close("Long Open")
    
if (long_signal[1] == 1 and short_signal[1] == 1)
    open_long := 1
    close_position := 0

if (short_signal[1] == -1 and long_signal[1] == -1)
    open_long := 0
    close_position := 1

plotshape(open_long == 1, title="Open Long", location=location.belowbar, style=shape.triangleup, size=size.small, color=green, transp=10)
plotshape(close_position == 1, title="Close Long", location=location.abovebar, style=shape.triangledown, size=size.small, color=red, transp=10)
//plot(0, title="Trigger", color=white)

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

Mehr