Estrategia de trading con impulso cuantitativo Super BitMoon


Fecha de creación: 2023-09-15 16:13:05 Última modificación: 2023-09-15 16:13:05
Copiar: 1 Número de Visitas: 674
1
Seguir
1617
Seguidores

Esta estrategia, llamada Super BitMoon, es una estrategia de comercio de volumen dinámico cuantificado en línea corta para Bitcoin. La estrategia tiene capacidad de hacer un alza y una baja al mismo tiempo, y puede operar cuando Bitcoin se encuentra en un punto de soporte o resistencia clave.

El funcionamiento de la estrategia:

  1. Utiliza el indicador ATR para calcular el rango de fluctuación y el punto de parada recientes. Cuando el precio rompe el punto de parada de la línea K superior, se juzga que se produce una reversión de la tendencia.
  2. Utilice el promedio móvil ponderado WVF y el indicador de la banda de Brin para determinar si Bitcoin está sobrecomprado o sobrevendido. Si el WVF está por debajo de la banda de Brin, lo que indica que el mercado podría estar sobrevendido, puede hacer más.
  3. El indicador RSI se utiliza para determinar si Bitcoin está sobrevendido. Si el RSI está por debajo de dos líneas de sobreventa, se puede hacer una operación de subida y subida.

Las estrategias de negociación específicas:

  1. Si el WVF baja a través de la banda de Brin y el precio es superior al precio de parada ATR, haga más bitcoins.
  2. Si el RSI está por debajo de la línea de venta por encima de 50 o 30, se puede hacer un shorting de Bitcoin.

La ventaja de esta estrategia es que:

  1. También tiene la capacidad de hacer múltiples operaciones de corto plazo y puede operar en dos direcciones.
  2. El ATR se utiliza para controlar el riesgo y evitar la expansión de las pérdidas.
  3. También se utilizan indicadores de WVF, Brin y RSI para juzgar, lo que mejora la precisión de la señal.

El riesgo de esta estrategia:

  1. La configuración incorrecta de los parámetros de la banda de Bryn y el RSI puede causar una señal errónea.
  2. Los eventos inesperados que provocan alzas o saltos en el precio pueden provocar que se active el stop loss.
  3. Los gastos de transacción tienen un impacto en los beneficios.

En resumen, Super BitMoon es una estrategia de dinámica cuantitativa que es muy adecuada para los combos de indicadores de línea corta, al mismo tiempo que tiene las características de seguimiento de tendencias y inversiones comerciales. Se espera obtener una mejor relación de riesgo-recibo con una optimización de parámetros razonable.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-08 09:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Super BitMoon v1", overlay=false, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2011, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2018, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 00, 00)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

//ATR STOPS TREND FILTER
length = input(5, title="ATR Stop's Length")
mult = input(1, minval=0.01, title="ATR Stop's Multiple")
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1

//SYNTHETIC VIX
pd = input(10, title="Synthetic VIX's Length")
bbl = input(2, title="Synthetic VIX's Bollinger Band's Length")
mult2 = input(0.01, minval=0.01, title="Synthetic VIX's Bollinger Band's Std Dev")
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult2 * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
upperBand = midLine + sDev

//RSI
rsi = rsi(close, input(10,title="RSI's Length"))
os1 = input(50,title="RSI's Oversold Level 1")
os2 = input(50,title="RSI's Oversold Level 2")

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = crossunder(wvf, upperBand) and close > vstop and withinTimeRange
condition2 = crossunder(rsi, os1) and withinTimeRange
condition3 = crossunder(rsi, os2) and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2 or condition3)

/////////////////////////////////////////////////////////////
//END - TRADING RULES