Hoch-/Niedrig-Kryptowährungsstrategie auf der Grundlage mehrerer Indikatoren

Schriftsteller:ChaoZhang, Datum: 29.12.2023 14:16:16
Tags:

img

Übersicht

Diese Strategie ist eine für Kryptowährungsmärkte geeignete High/Low-Level-Strategie. Sie integriert MACD, PSAR, ATR, Elliott Wave und andere mehrere Indikatoren für den Handel in höheren Zeitrahmen wie 1 Stunde, 4 Stunden oder 1 Tag. Der Vorteil dieser Strategie liegt in der hohen Risikovergütungsquote mit einem durchschnittlichen Gewinnfaktor von 1,5 bis 2,5.

Strategie Logik

Die Handelssignale dieser Strategie stammen aus den Preishoch-/Niedrigniveaus und zusammengesetzten Beurteilungen mehrerer Indikatoren.

  1. Beurteilen Sie, ob es einen hohen/niedrigen Niveaubereich gibt, der durch aufeinanderfolgende höhere oder niedrigere Höchstwerte auf dem Preisdiagramm gebildet wird.

  2. Überprüfen Sie das Histogrammniveau des MACD.

  3. Überprüfen Sie den PSAR-Indikator für die Trendrichtung.

  4. Überprüfen Sie die Trendrichtung basierend auf ATR und MA.

  5. Bestätigen Sie die Trendrichtung mit Elliott-Wellen-Indikator.

Wenn alle 5 Bedingungen in die gleiche Richtung zeigen, werden lange oder kurze Signale erzeugt.

Vorteile

  1. Hochrisiko-Lohn-Verhältnis bis 1:30.

  2. Hoher durchschnittlicher Gewinnfaktor, in der Regel zwischen 1,5 und 2,5.

  3. Die Kombination mehrerer Indikatoren hilft, falsche Ausbrüche effektiv zu filtern.

Risiken

  1. Relativ niedrige Gewinnquote um 10-20%.

  2. Es besteht ein mögliches Rückzugsrisiko und ein Gefahrenrisiko.

  3. Die Indikatorleistung könnte durch Marktregime beeinflusst werden.

  4. Ich brauche eine gute psychologische Ausdauer.

Entsprechende Maßnahmen:

  1. Kapital erhöhen, um die Gewinnrate auszugleichen.

  2. Setzen Sie für jeden Trade einen strikten Stop-Loss.

  3. Anpassung der Parameter an die verschiedenen Märkte.

  4. Stärkung der Psychologie und Kontrolle der Positionsgröße.

Optimierungsrichtlinien

  1. Testparameter basierend auf verschiedenen Kryptowährungen und Märkten.

  2. Fügen Sie Stop Loss und Take Profit hinzu, um das Geldmanagement zu optimieren.

  3. Erhöhen Sie die Gewinnrate mit Methoden des maschinellen Lernens.

  4. Soziale Stimmung Filter für Handelssignale hinzufügen.

  5. Betrachten Sie die Bestätigung über mehrere Zeitrahmen.

Schlussfolgerung

Zusammenfassend ist dies eine aggressive Hochrisiko-Hochrendite-Kryptowährungshandelsstrategie. Ihr Vorteil liegt in der hohen Risiko-Belohnung und dem Gewinnfaktor. Die Hauptrisiken stammen von der relativ niedrigen Gewinnrate, die eine starke Psychologie erfordert. Die zukünftigen Optimierungsrichtungen könnten Parameter-Tuning, Geldmanagement, Erhöhung der Gewinnrate und so weiter sein. Insgesamt hat diese Strategie praktischen Wert für Kryptowährungshändler, die hohe Gewinne suchen.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 45m
basePeriod: 5m
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/
// © SoftKill21

//@version=4
strategy("Crypto strategy high/low", overlay=true)
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
//sar
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)


// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

CCI = input(20)
ATR = input(5)
Multiplier=input(1,title='ATR Multiplier')
original=input(true,title='original coloring')
thisCCI = cci(close, CCI)
lastCCI = nz(thisCCI[1])
bufferDn= high + Multiplier * sma(tr,ATR)
bufferUp= low - Multiplier * sma(tr,ATR)
if (thisCCI >= 0 and lastCCI < 0) 
    bufferUp := bufferDn[1]
if (thisCCI <= 0 and lastCCI > 0) 
    bufferDn := bufferUp[1]

if (thisCCI >= 0)
    if (bufferUp < bufferUp[1])
        bufferUp := bufferUp[1]
else
    if (thisCCI <= 0)
        if (bufferDn > bufferDn[1])
            bufferDn := bufferDn[1]
x=0.0
x:=thisCCI >= 0 ?bufferUp:thisCCI <= 0 ?bufferDn:x[1]
swap=0.0

swap:=x>x[1]?1:x<x[1]?-1:swap[1]

swap2=swap==1?color.lime:color.red
swap3=thisCCI >=0 ?color.lime:color.red
swap4=original?swap3:swap2

//elliot wave
srce = input(close, title="source")
sma1length = input(5)
sma2length = input(35)
UsePercent = input(title="Show Dif as percent of current Candle", type=input.bool, defval=true)
smadif=iff(UsePercent,(sma(srce, sma1length) - sma(srce, sma2length)) / srce * 100, sma(srce, sma1length) - sma(srce, sma2length))
col=smadif <= 0 ? color.red : color.green

longC = high > high[1] and high[1] > high[2] and close[2] > high[3] and hist > 0 and uptrend and smadif < 0 and swap4==color.lime 
//longC = high > high[1] and high[1] > high[2] and high[2] > high[3] and high[3] > high[4] and close[4] > high[5]
shortC = low < low[1] and low[1] < low[2] and close[2] < low[3] and hist < 0 and not uptrend and  smadif > 0 and swap4==color.red 
//shortC = low < low[1] and low[1] < low[2] and low[2] < low[3] and low[3] < low[4] and close[4] < low[5]

tp=input(0.15, title="tp")
sl=input(0.005, title="sl")


strategy.entry("long",1,when=longC)
strategy.entry("short",0,when=shortC)

strategy.exit("x_long", "long" ,loss = close * sl / syminfo.mintick, profit = close * tp / syminfo.mintick , alert_message = "closelong")
//strategy.entry("short",0, when= loss = close * sl / syminfo.mintick)

strategy.exit("x_short", "short" , loss = close * sl / syminfo.mintick, profit  = close * tp / syminfo.mintick,alert_message = "closeshort")
//strategy.entry("long",1, when = loss = close * sl / syminfo.mintick)

//strategy.close("long",when= hist < 0)
//strategy.close("short", when= hist > 0)

Mehr