Estrategia de negociación del canal de ondas de Donchian


Fecha de creación: 2023-11-08 12:31:56 Última modificación: 2023-11-08 12:31:56
Copiar: 0 Número de Visitas: 693
1
Seguir
1617
Seguidores

Estrategia de negociación del canal de ondas de Donchian

Descripción general

La estrategia de comercio de canales de fluctuación de Dongguan determina la tendencia de los precios actuales mediante el cálculo de los canales de precios más altos y más bajos en un período determinado, y se combina con la ruptura de los canales para realizar operaciones largas y cortas. La estrategia es adecuada para el comercio de acciones y monedas digitales con alta volatilidad.

Principio de estrategia

La estrategia construye el canal mediante el cálculo de los precios máximos pcmax y mínimos pcmin en el último ciclo de historia. El método de cálculo de la vía ascendente y descendente es:

La velocidad en la vía de subida yy = pcmax - (pcmax - pcmin) * (100 - percentDev)/100

La velocidad de descenso y la velocidad de descenso son las siguientes:

El porcentaje de personas que creen en la existencia de Dios es de 13%.

Cuando el precio se desvía, se produce una señal larga; cuando el precio se desvía, se produce una señal corta.

La generación de señales de negociación específicas se determina de la siguiente manera:

  1. boundup = high > yh para determinar si se ha roto la vía

  2. bounddn = low < yl Determina si se ha roto la línea de baja

  3. upsign = sma(bounddn, 2) == 1 Determinación de la línea media de bounddn para determinar el descenso continuo

  4. dnsign = sma(boundup, 2) == 1 Juzgado por la línea media del boundup, el avance continúa

  5. exitup = dnsign Se produce una señal de equilibrio al romper la vía de subida

  6. exitdn = upsign Se produce una señal de estabilidad al romper la vía descendente

  7. si upsign rompe la vía de baja genera una señal múltiple

  8. if dnsign La ruptura de la vía generó una señal de vacío

La estrategia también establece el tiempo de inicio de la operación para evitar posiciones innecesarias durante la noche.

Ventajas estratégicas

  1. El uso de la vía de Dongxian para determinar tendencias es más efectivo

  2. Se puede establecer una señal de venta y de ventaja al mismo tiempo, para que el comercio sea bidireccional.

  3. Evita las transacciones erróneas al juzgar las señales con filtros uniformes

  4. Establecer opciones para detener el riesgo y controlarlo

  5. Establezca un horario de inicio y finalización para evitar el riesgo de posiciones nocturnas

Riesgo estratégico

  1. El canal de Dongjian es sensible a los parámetros history y percentDev, y necesita optimizar los parámetros para adaptarse a las diferentes variedades

  2. Las señales falsas pueden producirse en situaciones de temblor.

  3. Sin tener en cuenta los factores de gestión de pedidos, el disco duro podría afectar a las ganancias

  4. El riesgo de exceso de posiciones en el disco físico sin tener en cuenta los factores de gestión de la posición

  5. Sin tener en cuenta los factores de gestión de fondos, se requiere una configuración razonable de fondos de transacción en el disco físico

Dirección de optimización de la estrategia

  1. Optimización de los parámetros history y percentDev para adaptarse mejor a las diferentes variedades

  2. Los filtros se han añadido para evitar señales erróneas en situaciones de temblor.

  3. Añadir un módulo de administración de posiciones para controlar la proporción de capital ocupado por una sola posición

  4. Adición de un módulo de administración de fondos para limitar la proporción de capital que ocupa la posición total

  5. Adición de una función de administración de pedidos para optimizar la forma en que se realiza el pedido

Resumir

La estrategia de comercio de canal de fluctuación de Dongxian determina las tendencias y las señales de comercio a través de la ruptura del canal, mide mejor el rendimiento y tiene capacidad de negociación bidireccional. Sin embargo, la estrategia también tiene algunos riesgos y requiere optimización de los parámetros, filtros, administración de posiciones, administración de fondos y administración de pedidos, etc., para obtener ganancias estables en el mercado. En general, la estrategia es una estrategia de seguimiento de tendencias más tradicional, que puede convertirse en una estrategia de comercio cuantitativa confiable después de una mejora de optimización.

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

////////////////////////////////////////////////////////////
//  Copyright by AlexInc v1.0 02/07/2018  @aav_1980
// PriceChannel strategy
// If you find this script helpful, you can also help me by sending donation to 
// BTC 16d9vgFvCmXpLf8FiKY6zsy6pauaCyFnzS
// LTC LQ5emyqNRjdRMqHPHEqREgryUJqmvYhffM
////////////////////////////////////////////////////////////
//@version=3
strategy("AlexInc PriceChannel Str", overlay=false)
history = input(20)
percentDev = input(13)
capital = input(100)

needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usestoploss = input(true, defval = true, title = "Stop Loss")
stoplossmult = input(3.8, defval = 3.8, minval = 1, maxval = 10, title = "Stop loss multiplicator")


fromyear = input(2018, defval = 2018, 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")

bodymin = min( open, close)
bodymax = max(open, close)

pcmax = highest(bodymax, history)
pcmin = lowest(bodymin, history)

yh = ((pcmax - pcmin) / 100 * (100 - percentDev)) + pcmin
yl = ((pcmax - pcmin) / 100 * percentDev) + pcmin

plot(pcmax)
plot(pcmin)
plot(yh)
plot(yl)

//1
bounddn = low < yl ? 1 : 0
boundup = high > yh ? 1 : 0
upsign = sma(bounddn, 2) == 1
dnsign = sma(boundup, 2) == 1
//2
//upsign = crossover(bodymin, yl)
//dnsign = crossunder(bodymax , yh)


exitup = dnsign
exitdn = upsign

lot = strategy.equity / close * capital / 100


xATR = atr(history)
nLoss = usestoploss ? stoplossmult * xATR : na

stop_level_long = 0.0
stop_level_long := nz(stop_level_long[1])

stop_level_short = 0.0
stop_level_short := nz(stop_level_short[1])

pos = strategy.position_size
if pos >0 and pos[1] <= 0 //crossover(pos, 0.5)
    stop_level_long = strategy.position_avg_price - nLoss
if pos < 0 and pos[1] >= 0 //crossunder(pos, -0.5)
    stop_level_short = strategy.position_avg_price + nLoss
if pos == 0    
    stop_level_long = bodymin - nLoss
    stop_level_short = bodymax + nLoss

//plot(bodymax + nLoss, color=red)
//plot(bodymin - nLoss, color=red)
plot(stop_level_long, color=red)
plot(stop_level_short, color=red)

if upsign
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dnsign
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

if true
    strategy.close_all()


//if strategy.position_size != 0
//    strategy.exit("Exit Long", from_entry = "Long", stop = stop_level_long)
//    strategy.exit("Exit Short", from_entry = "Short", stop = stop_level_short)