Estrategia de altibajos de criptomonedas basada en múltiples indicadores


Fecha de creación: 2023-12-29 14:16:16 Última modificación: 2023-12-29 14:16:16
Copiar: 0 Número de Visitas: 652
1
Seguir
1621
Seguidores

Estrategia de altibajos de criptomonedas basada en múltiples indicadores

Descripción general

Esta estrategia es una estrategia de alto y bajo nivel para el mercado de criptomonedas. Utiliza una combinación de indicadores como MACD, PSAR, ATR, Elliott Wave, entre otros, para operar en períodos de tiempo más altos como 1 hora, 4 horas o 1 día. La estrategia tiene la ventaja de tener un alto riesgo de retorno, con un factor de ganancia promedio de 1.5-2.5.

Principio de estrategia

Las señales de negociación de esta estrategia provienen de los puntos altos y bajos de los precios y de un juicio integrado de varios indicadores. La lógica específica es:

  1. Para determinar si la línea K presenta un intervalo de precios altos y bajos, es decir, los altos son de innovación continua alta y los bajos son de innovación continua baja.

  2. Compruebe el nivel del diagrama rectangular en el MACD.

  3. Revisa el indicador PSAR para ver la dirección de la tendencia.

  4. Examine los indicadores de tendencia elaborados por ATR y MA para determinar la dirección de la tendencia.

  5. Revisa el indicador de ondas Elliott para confirmar la dirección de la tendencia.

Si las 5 condiciones anteriores apuntan en la misma dirección, se produce una señal de hacer más o hacer menos.

Ventajas estratégicas

  1. La rentabilidad del riesgo es alta, hasta 1:30.

  2. El factor de ganancias promedio es alto, generalmente entre 1.5 y 2.5.

  3. La combinación de múltiples indicadores puede filtrar eficazmente las brechas falsas.

Riesgo estratégico

  1. La tasa de éxito es baja, entre el 10% y el 20%.

  2. Hay cierto riesgo de retroceso y tirón en la bolsa.

  3. El impacto de los indicadores depende del entorno del mercado.

  4. Se requiere una mayor resistencia psicológica.

Respuesta:

  1. Aumentar el volumen de las transacciones para equilibrar la ganancia.

  2. El control de las pérdidas individuales es estricto.

  3. Ajustar los parámetros del indicador según los diferentes mercados.

  4. La construcción psicológica y el control de la escala de la posición.

Dirección de optimización

  1. Los parámetros de los indicadores de prueba de diferentes criptomonedas y entornos de mercado.

  2. Aumentar las estrategias de stop loss y de suspensión de pérdidas y optimizar la administración de fondos.

  3. La combinación de métodos de aprendizaje automático para mejorar la tasa de éxito.

  4. El aumento de las señales de filtración de los indicadores de emoción social.

  5. Tenga en cuenta la confirmación de indicadores de varios períodos de tiempo.

Resumir

Esta estrategia en su conjunto es una estrategia de comercio de alto riesgo y alto rendimiento adecuada para las criptomonedas. Su ventaja es que tiene un alto índice de retorno de riesgo y puede obtener un alto factor de ganancia promedio. El riesgo se basa principalmente en la baja tasa de ganancia y requiere una fuerte capacidad de tolerancia psicológica. La dirección de optimización del siguiente paso se puede realizar desde varias dimensiones, como ajustar los parámetros, optimizar la administración de fondos y mejorar la tasa de ganancia. En general, esta estrategia tiene cierto valor práctico para los comerciantes de criptomonedas que buscan altos rendimientos.

Código Fuente de la Estrategia
/*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)