Estrategia de negociación multifactorial de Bitcoin

El autor:¿ Qué pasa?, Fecha: 2023-09-25 18:24:02
Las etiquetas:

Resumen general

Se trata de una estrategia comercial integral diseñada para el comercio de Bitcoin y otras criptomonedas en un plazo de 15 minutos. Combina múltiples indicadores para generar señales de compra y venta, incluidos el Triple Exponential Moving Average (TEMA), el Average True Range (ATR) y las velas de Heikin-Ashi, junto con características de gestión de riesgos como tomar ganancias y detener pérdidas.

Estrategia lógica

La estrategia utiliza los siguientes indicadores:

  • Triple Exponential Moving Average (TEMA): Tres líneas TEMA de diferentes longitudes y fuentes, basadas en precios altos, bajos y cerrados respectivamente.

  • En el caso de los instrumentos financieros, el valor de los activos financieros se calculará en función de la variación de la volatilidad.

  • Supertrend: se calcula utilizando el ATR y un multiplicador para determinar la dirección de la tendencia.

  • Promedio móvil simple (SMA): Aplicado en la línea TEMA corta para suavizar sus valores.

  • Heikin-Ashi Close: Se utiliza para la confirmación de tendencias adicionales.

La señal de entrada larga se activa cuando el TEMA corto está por encima de ambas líneas TEMA largas, la Supertrend es alcista, el TEMA corto está por encima de su SMA y el cierre de Heikin-Ashi es más alto que el cierre anterior.

La señal de entrada corta se activa cuando se cumplen las condiciones opuestas.

Los beneficios obtenidos y las pérdidas de detención se fijan en el 1% y el 3% del precio de entrada.

Análisis de ventajas

  • Varios factores mejoran la precisión La combinación de tendencia, volatilidad e indicadores de patrones puede mejorar la precisión y evitar señales falsas.

  • El riesgo razonable de control de pérdidas por parada/beneficio por toma Los niveles de stop loss y take profit bien establecidos bloquean las ganancias y limitan las pérdidas.

  • Espacio de optimización de parámetros grande Los parámetros de los indicadores pueden ajustarse de forma flexible para adaptarse a los mercados cambiantes.

  • Más realista con las comisiones La Comisión considera que los resultados de las pruebas de retroceso se acercan más a las actuaciones en vivo.

Análisis de riesgos

  • Riesgo de error de valoración debido a una sobreoptimización El exceso de indicadores combinados también puede conducir a juicios erróneos.

  • Riesgo mayor con operaciones a corto plazo En comparación con los marcos de tiempo más largos, 15 minutos es más susceptible a eventos y riesgos repentinos.

  • La estabilidad de la estrategia necesita una mayor validación Se necesitan pruebas más extensas a través de una larga historia y mercados para garantizar la fiabilidad.

  • Optimización prolongada con múltiples parámetros Muchos parámetros introducidos conducen a un largo proceso para optimizar todas las combinaciones de parámetros.

Direcciones de mejora

  • Evaluar el efecto real de cada indicador Prueba de retroceso para verificar el beneficio incremental real de cada indicador, evitar la redundancia.

  • Optimizar y probar la estabilidad Resultados de optimización de pruebas en más mercados para garantizar la robustez.

  • Incorporar estrategias de stop loss Por ejemplo, para detener el seguimiento, para detener la orden de paréntesis para controlar aún más el riesgo.

  • Considere otros factores de costo Tal como el deslizamiento para hacer que la prueba posterior sea más cercana a la actuación en vivo.

Resumen de las actividades

Esta estrategia combina múltiples indicadores y técnicas de gestión de riesgos adaptadas para el comercio de Bitcoin de 15 minutos. Queda un gran espacio para optimizar los parámetros, evaluar la efectividad del indicador, probar la estabilidad del mercado en general e introducir más factores del mundo real para encontrar la combinación óptima dentro del enfoque de múltiples factores. Con una optimización y verificación persistentes, puede convertirse en una herramienta efectiva para el comercio de criptomonedas de alta frecuencia.


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

Más.