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.
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.
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.
La configuración razonable de stop loss puede bloquear las ganancias y limitar eficazmente las pérdidas individuales.
Los parámetros del indicador se pueden ajustar con flexibilidad para adaptarse a los cambios en el mercado y buscar la combinación óptima.
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.
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.
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 estrategia aún necesita ser validada en ciclos más largos y en múltiples mercados para asegurar su estabilidad.
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.
Revisar y comprobar el efecto real de las mejoras de cada indicador, evitando el uso de indicadores redundantes.
Los resultados de la optimización de parámetros de prueba en más mercados garantizan la estabilidad y la fiabilidad.
El riesgo puede controlarse aún más mediante el movimiento de la pérdida, la suspensión de la pérdida, etc.
Los costos de los puntos de deslizamiento hacen que la retroalimentación sea más realista.
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.
/*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 ')