Estrategia de criptomonedas alta/baja basada en múltiples indicadores

El autor:¿ Qué pasa?, Fecha: 2023-12-29 14:16:16
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de alto / bajo nivel adecuada para los mercados de criptomonedas. Integra MACD, PSAR, ATR, Elliott Wave y otros múltiples indicadores para operar en plazos más largos como 1 hora, 4 horas o 1 día.

Estrategia lógica

Las señales comerciales de esta estrategia provienen de los niveles altos/bajos de precios y juicios compuestos de múltiples indicadores.

  1. Juzgar si existe un rango de nivel alto/bajo formado por altos o bajos sucesivos en el gráfico de precios.

  2. Compruebe el nivel del histograma del MACD.

  3. Compruebe el indicador PSAR para determinar la dirección de la tendencia.

  4. Compruebe la dirección de la tendencia basada en ATR y MA.

  5. Confirme la dirección de la tendencia con el indicador de onda Elliott.

Si todas las 5 condiciones apuntan en la misma dirección, se generan señales largas o cortas.

Ventajas

  1. Alta relación de riesgo y recompensa hasta 1:30.

  2. Factor de ganancia promedio alto, por lo general entre 1,5 y 2,5.

  3. La combinación de múltiples indicadores ayuda a filtrar las falsas rupturas de manera efectiva.

Los riesgos

  1. Relativamente baja tasa de ganancia alrededor del 10%-20%.

  2. Existen riesgos potenciales de reducción de la producción y de reducción de la producción.

  3. El rendimiento de los indicadores podría verse afectado por los regímenes de mercado.

  4. Necesita una buena resistencia psicológica.

Medidas correspondientes:

  1. Aumentar el capital para equilibrar la tasa de ganancia.

  2. Establezca un estricto stop loss para cada operación.

  3. Ajustar los parámetros basados en diferentes mercados.

  4. Fortalecer la psicología y controlar el tamaño de la posición.

Direcciones de optimización

  1. Parámetros de prueba basados en diferentes criptomonedas y mercados.

  2. Agregue stop loss y take profit para optimizar la gestión del dinero.

  3. Aumentar la tasa de ganancia con métodos de aprendizaje automático.

  4. Añadir filtro de sentimiento social para señales comerciales.

  5. Considere la confirmación en múltiples marcos de tiempo.

Conclusión

En conclusión, esta es una estrategia de comercio de criptomonedas de alto riesgo y alto rendimiento agresiva. Su ventaja radica en la alta relación de recompensa de riesgo y el factor de ganancia. Los principales riesgos provienen de la tasa de ganancia relativamente baja que requiere una fuerte psicología. Las direcciones de optimización futuras podrían ser la puesta a punto de parámetros, la gestión del dinero, el aumento de la tasa de ganancia, etc. En general, esta estrategia tiene un valor práctico para los comerciantes de criptomonedas que buscan altas ganancias.


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

Más.