
La estrategia de edad de espectro es una estrategia de seguimiento de tendencias basada en el canal de precios. Utiliza canales de tangjian rápidos y lentos para identificar la dirección de la tendencia y realizar compras en los momentos bajos y ventas en los momentos altos cuando se corrige. La ventaja de esta estrategia es que puede seguir automáticamente la tendencia, detener y revertir las posiciones en el momento en que la tendencia cambia.
La estrategia primero define el ciclo de la vía rápida como 20 líneas K y el ciclo de la vía lenta como 50 líneas K. La vía rápida se utiliza para establecer el precio de parada y la vía lenta para determinar la dirección de la tendencia y el momento de entrada.
La estrategia comienza por calcular los precios máximos y mínimos del canal rápido, y toma la línea media como línea de parada. Al mismo tiempo, calcula los precios máximos y mínimos del canal lento, a lo largo del canal y por debajo como línea de entrada.
Haga más cuando el precio rompa la parte superior de la vía lenta; haga un vacío cuando el precio rompa la parte inferior de la vía lenta. Después de la entrada, el punto de parada se establece en la línea media de la vía rápida.
De esta manera, el canal lento determina la dirección de la gran tendencia, y el canal rápido sigue un pequeño rango para romper el punto de parada. Cuando la gran tendencia se invierte, el precio primero romperá la línea de parada del canal rápido y logrará un alto.
Seguimiento automático de la tendencia, parada en tiempo oportuno. Utilizando una estructura de doble canal, se puede seguir automáticamente la tendencia y detenerla rápidamente cuando la tendencia se invierte.
El cambio de posiciones tiene un efecto de filtración de tendencias. La apertura de posiciones solo se realiza cuando el precio supera el límite del canal, lo que permite eliminar algunas falsas rupturas no tendenciales.
El riesgo es controlado. El stop loss es más cercano y se puede controlar la pérdida individual.
La retirada puede ser grande y requiere preparación psicológica.
El punto de parada está demasiado cerca. El ciclo de paso rápido es más corto, el punto de parada es más cercano y es más fácil de encajar. Se puede relajar adecuadamente el ciclo de paso rápido.
Es fácil generar exceso de transacciones. La estructura de doble canal produce más puntos de compra y venta, lo que requiere un control razonable de la posición.
Aumentar las condiciones de filtro de apertura de posición. Se pueden incluir indicadores como la volatilidad en las condiciones de apertura de posición, filtrando las rupturas de baja tendencia.
Optimización de los parámetros del ciclo de la vía. Se puede buscar la combinación óptima de parámetros de la vía con un método más sistemático.
La combinación de varias decisiones de períodos de tiempo. Se puede determinar la tendencia en períodos de tiempo más altos y realizar transacciones específicas en períodos más bajos.
Ajuste dinámico de la distancia de pérdida. Se puede ajustar dinámicamente la distancia de pérdida según la volatilidad del mercado.
La estrategia de edad de espectro en general es una estrategia de seguimiento de tendencias más estándar. Utiliza el canal de precios para determinar la dirección de la tendencia y establece un stop loss para controlar el riesgo. La estrategia tiene ciertas ventajas, pero también hay problemas de retirada y parada demasiado cerca del punto de pérdida.
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2020
//@version=4
strategy("Noro's RiskTurtle Strategy", shorttitle = "RiskTurtle str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
risk = input(2, minval = 0.1, maxval = 99, title = "Risk size, %")
fast = input(20, minval = 1, title = "Fast channel (for stop-loss)")
slow = input(50, minval = 1, title = "Slow channel (for entries)")
showof = input(true, defval = true, title = "Show offset")
showll = input(true, defval = true, title = "Show lines")
showdd = input(true, defval = true, title = "Show label (drawdown)")
showbg = input(true, defval = true, title = "Show background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2
//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)
//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc, title = "Slow channel high")
plot(ls, offset = offset, color = colorpc, title = "Slow channel low")
plot(center, offset = offset, color = colorsl, title = "Fast channel stop-loss")
//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)
//Var
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = true
//Lot size
risksize = -1 * risk
risklong = ((center / hs) - 1) * 100
coeflong = abs(risksize / risklong)
lotlong = (strategy.equity / close) * coeflong
riskshort = ((center / ls) - 1) * 100
coefshort = abs(risksize / riskshort)
lotshort = (strategy.equity / close) * coefshort
//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and hs > 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and ls > 0 and truetime)
strategy.exit("LongExit", "Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")
if showdd
//Drawdown
max = 0.0
max := max(strategy.equity, nz(max[1]))
dd = (strategy.equity / max - 1) * 100
min = 100.0
min := min(dd, nz(min[1]))
//Max loss size
equity := strategy.position_size == 0 ? strategy.equity : equity[1]
loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
maxloss := min(nz(maxloss[1]), loss)
//Label
min := round(min * 100) / 100
maxloss := round(maxloss * 100) / 100
labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
var label la = na
label.delete(la)
tc = min > -100 ? color.white : color.red
osx = timenow + round(change(time)*10)
osy = highest(100)
// la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)