
La estrategia es una estrategia de cruce de media móvil simple (SMA) para el mercado de criptomonedas. Utiliza tres grupos de SMA: rápido, medio y lento para identificar posibles señales de entrada y salida. Cuando el SMA rápido cruza el SMA medio, genera una señal de compra; cuando el SMA rápido cruza el SMA medio, genera una señal de venta.
La estrategia permite al comerciante establecer los siguientes parámetros clave:
Se calcula el SMA rápido, el SMA medio y el SMA lento, respectivamente, según la longitud de SMA configurada por el usuario.
Cuando el SMA rápido sobrepasa el SMA medio, genera una señal de compra; cuando el SMA rápido bajopasa el SMA medio, genera una señal de venta.
La estrategia combina los fondos de la cuenta y la proporción de riesgo asumido por cada operación para calcular el capital nominal de cada operación. Luego, se combina con el ATR para calcular el margen de pérdida, y finalmente se determina la posición específica de cada operación.
Se puede optimizar mediante la reducción adecuada de los ciclos SMA y la ayuda de otros indicadores.
Esta estrategia integra múltiples funciones de juicio de cruzamiento de SMA, gestión de riesgos y optimización de posiciones, es una estrategia de seguimiento de tendencias adecuada para el mercado criptográfico. Los comerciantes pueden ajustar los parámetros y aplicar optimizaciones de acuerdo con su estilo de negociación y el entorno del mercado.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Onchain Edge Trend SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Configuration Parameters
priceSource = input(close, title="Price Source")
includeIncompleteBars = input(true, title="Consider Incomplete Bars")
maForecastMethod = input(defval="flat", options=["flat", "linreg"], title="Moving Average Prediction Method")
linearRegressionLength = input(3, title="Linear Regression Length")
fastMALength = input(7, title="Fast Moving Average Length")
mediumMALength = input(30, title="Medium Moving Average Length")
slowMALength = input(50, title="Slow Moving Average Length")
tradingCapital = input(100000, title="Trading Capital")
tradeRisk = input(1, title="Trade Risk (%)")
// Calculation of Moving Averages
calculateMA(source, period) => sma(source, period)
predictMA(source, forecastLength, regressionLength) =>
maForecastMethod == "flat" ? source : linreg(source, regressionLength, forecastLength)
offset = includeIncompleteBars ? 0 : 1
actualSource = priceSource[offset]
fastMA = calculateMA(actualSource, fastMALength)
mediumMA = calculateMA(actualSource, mediumMALength)
slowMA = calculateMA(actualSource, slowMALength)
// Trading Logic
enterLong = crossover(fastMA, mediumMA)
exitLong = crossunder(fastMA, mediumMA)
// Risk and Position Sizing
riskCapital = tradingCapital * tradeRisk / 100
lossThreshold = atr(14) * 2
tradeSize = riskCapital / lossThreshold
if (enterLong)
strategy.entry("Enter Long", strategy.long, qty=tradeSize)
if (exitLong)
strategy.close("Enter Long")
// Display Moving Averages
plot(fastMA, color=color.blue, linewidth=2, title="Fast Moving Average")
plot(mediumMA, color=color.purple, linewidth=2, title="Medium Moving Average")
plot(slowMA, color=color.red, linewidth=2, title="Slow Moving Average")