Estrategia de trading con canal de precios dinámicos


Fecha de creación: 2023-09-16 19:01:26 Última modificación: 2023-09-16 19:01:26
Copiar: 2 Número de Visitas: 659
1
Seguir
1617
Seguidores

Descripción general

En este artículo se presenta una estrategia de negociación en línea corta basada en canales de precios dinámicos. La estrategia determina la dirección de la tendencia mediante el cálculo de canales dinámicos de precios y la negociación en los puntos de ruptura de canales.

Principio de estrategia

La estrategia se basa en los siguientes principios:

  1. Calcula el canal de precios dinámicos utilizando los precios máximos y mínimos. La línea de la línea superior es la mitad de la suma de los precios máximos y medios del canal, y la línea inferior es la mitad de la diferencia entre los precios mínimos y medios del canal.

  2. Cuando el precio rompe la vía, indica que el mercado está entrando en una tendencia alcista; cuando el precio rompe la vía, indica que el mercado está entrando en una tendencia bajista.

  3. En una tendencia alcista, haga más cuando aparezcan dos líneas negativas consecutivas; en una tendencia bajista, haga vacío cuando aparezcan dos líneas positivas consecutivas.

  4. Se puede optar por invertir la posición, es decir, hacer menos en la subida y más en la caída, para seguir la emoción del mercado.

  5. Se puede configurar un porcentaje de parada, por ejemplo, configurar el punto de parada como el x% del precio de entrada para bloquear las ganancias.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Los canales dinámicos reflejan los cambios en el mercado en tiempo real y permiten conocer mejor las tendencias.

  2. La combinación de la tendencia y las señales de ruptura de varias líneas K permite filtrar las falsas rupturas.

  3. La inversión inversa puede atraer a los puntos calientes del mercado y generar ganancias adicionales.

  4. El establecimiento de la proporción de frenado permite un control efectivo del riesgo.

  5. La estrategia es simple, clara y fácil de implementar.

Análisis de riesgos

La estrategia también tiene ciertos riesgos:

  1. El canal puede fallar cuando el mercado fluctúa fuertemente. Los parámetros deben ajustarse adecuadamente para que el canal sea más estable.

  2. La inversión inversa es susceptible a pérdidas, por lo que se debe controlar el porcentaje de pérdidas individuales.

  3. Las brechas falsas pueden conducir a transacciones erróneas. La efectividad de las brechas debe ser evaluada en relación con las tendencias.

  4. Se debe tener cuidado de evitar transacciones demasiado frecuentes para controlar los costos de las transacciones.

Resumir

Esta estrategia integra la tendencia de juicio de canal dinámico, la entrada de la línea K y la idea de la parada. Si los parámetros se ajustan adecuadamente, puede ser una herramienta eficaz para el comercio de línea corta. Sin embargo, el comerciante debe prestar atención al control del riesgo y realizar las modificaciones adecuadas en combinación con su estilo de negociación.

Código Fuente de la Estrategia
/*backtest
start: 2022-09-09 00:00:00
end: 2023-09-15 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Scalper Strategy v1.1", shorttitle = "Scalper str 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needct = input(false, defval = false, title = "Counter-trend entry")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
sma = sma(close, 20)
smatrend = close > sma ? 1 : close < sma ? -1 : smatrend[1]
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and bar == -1 and bar[1] == -1 ? 1 : 0
dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and bar == 1 and bar[1] == 1 ? 1 : 0

if up7 == 1 or up8 == 1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)