Estrategia de negociación multifactorial de Bitcoin


Fecha de creación: 2023-09-25 18:24:02 Última modificación: 2023-09-25 18:24:02
Copiar: 9 Número de Visitas: 837
1
Seguir
1617
Seguidores

Descripción general

La estrategia es una estrategia de negociación integral para Bitcoin y otras criptomonedas con un período de tiempo de 15 minutos. Integra varios indicadores para generar señales de compra y venta, incluidos el promedio móvil de triple índice, la amplitud real media de fluctuación y el gráfico de la barra de equilibrio, y tiene mecanismos de gestión de riesgos como el stop loss.

Principio de estrategia

La estrategia utiliza varios de los siguientes indicadores:

  • Promedio móvil de triple índice ((TEMA): se calcula a partir de 3 TEMA de diferentes longitudes y fuentes, basados en los precios de alto, bajo y cierre.

  • Velocidad media real de fluctuación ((ATR): calcula la tasa de fluctuación del mercado utilizando el ATR personalizado suavizado por la EMA.

  • Indicador de tendencia excesiva: determina la dirección de la tendencia basado en el ATR y el múltiplo.

  • Media móvil simple ((SMA): calcula la SMA para el TEMA de corto período con un valor de fluctuación.

  • El precio de cierre de la línea de equilibrio: para la confirmación adicional de la tendencia.

Cuando el TEMA corto es superior a dos TEMA largos, el indicador de tendencia alza, el TEMA corto es superior a su SMA, y el precio de cierre de la línea de equilibrio es superior al del día anterior, se genera una señal de compra.

Una señal de venta se genera cuando el TEMA corto es inferior a dos TEMA largos, el indicador de tendencia a la baja, el TEMA corto es inferior a su SMA, y el precio de cierre de la línea de equilibrio es inferior al día anterior.

El Stop Loss se establece en el 1% y el 3% del precio de entrada, respectivamente. También se tiene en cuenta el factor de las comisiones.

Análisis de las ventajas

  • El análisis de múltiples factores mejora la precisión

La combinación de varios indicadores de factores, como tendencias, volatilidad y forma, puede mejorar la precisión de los juicios y evitar falsas señales.

  • El mecanismo de suspensión de pérdidas controla el riesgo de manera razonable

La configuración razonable de stop loss puede bloquear las ganancias y limitar eficazmente las pérdidas individuales.

  • Optimización de parámetros con mucho espacio

Los parámetros del indicador se pueden ajustar con flexibilidad para adaptarse a los cambios en el mercado y buscar la combinación óptima.

  • Considerar el factor de las comisiones más cerca del disco

La adición de un factor de comisiones puede hacer que los resultados de la retroalimentación estén más cerca del rendimiento de las transacciones reales.

Análisis de riesgos

  • Riesgo de error en la combinación de múltiples factores

El exceso de combinaciones de indicadores también puede conducir a errores de juicio, por lo que es necesario evaluar cuidadosamente la efectividad de los indicadores.

  • Las operaciones de ciclo corto son más riesgosas

En comparación con el ciclo largo, las operaciones de 15 minutos son más susceptibles a eventos repentinos, con un mayor riesgo de incidentes.

  • La estabilidad de la estrategia está a la prueba

La estrategia aún necesita ser validada en ciclos más largos y en múltiples mercados para asegurar su estabilidad.

  • Optimización de parámetros más larga

La combinación de múltiples indicadores trae una gran cantidad de parámetros, y la optimización de todas las combinaciones de parámetros requiere más tiempo.

Dirección de optimización

  • Evaluar el efecto real de los indicadores

Revisar y comprobar el efecto real de las mejoras de cada indicador, evitando el uso de indicadores redundantes.

  • Parámetros de optimización, prueba de estabilidad

Los resultados de la optimización de parámetros de prueba en más mercados garantizan la estabilidad y la fiabilidad.

  • Participar en la estrategia de detener el daño

El riesgo puede controlarse aún más mediante el movimiento de la pérdida, la suspensión de la pérdida, etc.

  • Considerar más factores de costo

Los costos de los puntos de deslizamiento hacen que la retroalimentación sea más realista.

Resumir

La estrategia integra varios indicadores y mecanismos de control de riesgos, diseñados para el comercio de Bitcoin en un ciclo de 15 minutos. El espacio para su optimización es amplio, y requiere una evaluación profunda de los efectos de los indicadores de retroalimentación, una amplia prueba de estabilidad del mercado, y la adición de más consideraciones de mercado real para encontrar la combinación óptima de parámetros en una estrategia multifactorial. Si se optimiza y verifica continuamente, la estrategia puede convertirse en una herramienta eficaz para el comercio de alta frecuencia de criptomonedas.

Código Fuente de la Estrategia
/*backtest
start: 2023-08-25 00:00:00
end: 2023-09-09 00:00:00
period: 10m
basePeriod: 1m
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/
// © deperp
//@version=5
strategy('3kilos', shorttitle='3kilos BTC 15m', overlay=true, initial_capital=100000, max_bars_back=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0)

short = input.int(50, minval=1)
srcShort = input(high, title='TEMA short')

long = input.int(100, minval=1)
srcLong = input(low, title='TEMA long 2')

long2 = input.int(350, minval=1)
srcLong2 = input(close, title='TEMA long 3')

atrLength = input.int(550, title='ATR Length', minval=1)
mult = input.float(3, title="Multiplier", minval=0.5, step=1)

smaPeriod = input.int(100, title="SMA Period", minval=1)

takeProfitPercent = input.float(1, title="Take Profit (%)", minval=0.1) / 100
stopLossPercent = input.float(3, title="Stop Loss (%)", minval=0.1) / 100


tema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    ema3 = ta.ema(ema2, length)
    3 * (ema1 - ema2) + ema3

tema1 = tema(srcShort, short)
plot(tema1, color=color.new(color.red, 0), linewidth=2)

tema2 = tema(srcLong, long)
plot(tema2, color=color.new(color.blue, 0), linewidth=2)

tema3 = tema(srcLong2, long2)
plot(tema3, color=color.new(color.green, 0), linewidth=2)

// Custom ATR calculation with EMA smoothing
atr_ema(src, length) =>
    trueRange = math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
    emaTrueRange = ta.ema(trueRange, length)
    emaTrueRange

// Calculate ATR with EMA smoothing
atr = atr_ema(close, atrLength)

// Calculate Supertrend
var float up = na
var float dn = na
var bool uptrend = na
up := na(up[1]) ? hl2 - (mult * atr) : uptrend[1] ? math.max(hl2 - (mult * atr), up[1]) : hl2 - (mult * atr)
dn := na(dn[1]) ? hl2 + (mult * atr) : uptrend[1] ? hl2 + (mult * atr) : math.min(hl2 + (mult * atr), dn[1])
uptrend := na(uptrend[1]) ? true : close[1] > dn[1] ? true : close[1] < up[1] ? false : uptrend[1]

// Calculate SMA
sma = ta.sma(tema1, smaPeriod)

// Heikin-Ashi Close
haTicker = ticker.heikinashi(syminfo.tickerid)
haClose = request.security(haTicker, timeframe.period, close)


// Trend determination using Heikin-Ashi Close
longC = tema1 > tema2 and tema1 > tema3 and uptrend and tema1 > sma and haClose > haClose[1]
shortC = tema1 < tema2 and tema1 < tema3 and not uptrend and tema1 < sma and haClose < haClose[1]


alertlong = longC and not longC[1]
alertshort = shortC and not shortC[1]

useDateFilter = input.bool(true, title="Begin Backtest at Start Date",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2023"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")

inTradeWindow = true

stopLossLevelLong = close - atr * mult
stopLossLevelShort = close + atr * mult
longTakeProfitLevel = close * (1 + takeProfitPercent)
longStopLossLevel = close * (1 - stopLossPercent)
shortTakeProfitLevel = close * (1 - takeProfitPercent)
shortStopLossLevel = close * (1 + stopLossPercent)



if inTradeWindow and longC
    strategy.entry('Long', strategy.long, comment='Long')
    strategy.exit("TP Long", "Long", limit=longTakeProfitLevel, stop=longStopLossLevel, comment="TP/SL Long")

if inTradeWindow and shortC
    strategy.entry('Short', strategy.short, comment='Short')
    strategy.exit("TP Short", "Short", limit=shortTakeProfitLevel, stop=shortStopLossLevel, comment="TP/SL Short")

// Alerts

alertcondition(longC, title='Long', message=' Buy Signal ')
alertcondition(shortC, title='Short', message=' Sell Signal ')