Hoch- und Tiefststrategie für Kryptowährungen basierend auf mehreren Indikatoren


Erstellungsdatum: 2023-12-29 14:16:16 zuletzt geändert: 2023-12-29 14:16:16
Kopie: 0 Klicks: 652
1
konzentrieren Sie sich auf
1621
Anhänger

Hoch- und Tiefststrategie für Kryptowährungen basierend auf mehreren Indikatoren

Überblick

Diese Strategie ist eine Hoch-Low-Strategie für den Kryptowährungsmarkt. Sie verwendet mehrere Indikatoren wie MACD, PSAR, ATR, Elliott Wave und handelt in höheren Zeitperioden wie 1 Stunde, 4 Stunden oder 1 Tag. Der Vorteil der Strategie liegt in der hohen Risiko-Rendite und einem durchschnittlichen Gewinnfaktor von 1,5 bis 2,5.

Strategieprinzip

Die Handelssignale für diese Strategie stammen aus den Höhen und Tiefen der Preise und aus der Gesamtbeurteilung mehrerer Indikatoren. Die spezifische Logik ist:

  1. Beurteilen Sie, ob die K-Linie einen Preis-Hoch-Tief-Bereich aufweist, d.h. ob die Höhen hoch sind und die Tiefen niedrig sind.

  2. Überprüfen Sie die MACD-Rechteck-Ebene.

  3. Überprüfen Sie die PSAR-Indikatoren, um die Richtung der Trends zu bestimmen.

  4. Überprüfen Sie die Trendindikatoren, die von ATR und MA erstellt wurden, um die Richtung der Tendenz zu bestimmen.

  5. Der Elliott Wave Indicator bestätigt die Richtung der Trends.

Wenn alle fünf Bedingungen in die gleiche Richtung weisen, erzeugt dies ein Über- oder Unterlaufsignal.

Strategische Vorteile

  1. Das Risiko ist mit einem hohen Rendite von bis zu 1:30 zu vergleichen.

  2. Der durchschnittliche Gewinnfaktor ist hoch, in der Regel zwischen 1,5 und 2,5.

  3. Eine Kombination aus mehreren Indikatoren, die die falschen Durchbrüche wirksam filtern können.

Strategisches Risiko

  1. Die Gewinnquote ist niedrig, nur 10 bis 20 Prozent.

  2. Es besteht ein gewisses Risiko für Rückzugs- und Rückziehungsrisiken.

  3. Die Wirksamkeit des Indikators wird durch die Marktbedingungen beeinflusst.

  4. Es wird eine stärkere psychologische Belastbarkeit benötigt.

Gegenmaßnahmen:

  1. Das ist eine sehr gute Idee, um die Gewinnquote auszugleichen.

  2. Einmalige Verluste werden streng kontrolliert.

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

  4. Das ist eine gute Psychologie, um die Größe der Position zu kontrollieren.

Optimierungsrichtung

  1. Parameter für die Testindikatoren für verschiedene Kryptowährungen und Marktbedingungen.

  2. Erhöhung der Stop-Loss-Strategie und Optimierung der Geldverwaltung.

  3. Die Ergebnisse der Studie werden in einer Reihe von Beiträgen veröffentlicht.

  4. Das ist eine sehr gute Idee, aber es ist nicht einfach.

  5. Überlegen Sie, ob Sie mehrere Zeiträume benötigen, um die Indikatoren zu bestätigen.

Zusammenfassen

Diese Strategie ist insgesamt eine für Kryptowährungen geeignete Strategie mit hohem Risiko und hohem Ertrag. Ihr Vorteil liegt in der hohen Risiko-Rendite, die einen höheren durchschnittlichen Gewinnfaktor ermöglicht. Das Risiko liegt hauptsächlich in der niedrigen Gewinnrate, die eine starke psychologische Belastbarkeit erfordert. Die nächste Optimierungsrichtung kann in mehreren Dimensionen erfolgen, z. B. durch Anpassung der Parameter, Optimierung der Kapitalverwaltung und Erhöhung der Gewinnrate.

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