
La idea central de la estrategia es realizar operaciones de compra y venta en función de las rupturas de precios en el canal de Dongxian, una estrategia cuantitativa de tipo de seguimiento de tendencias. Puede identificar automáticamente los canales de precios, abrir posiciones cuando los precios se encuentran en los canales de ruptura, y cerrar posiciones cuando los precios vuelven a la proximidad o el punto de parada en el canal. La estrategia está diseñada para capturar tendencias de precios de longitud y longitud, y se aplica a la negociación algorítmica de derivados financieros como los índices bursátiles.
La estrategia se basa en el indicador de las vías de Dongxian, que son las áreas de vías trazadas a través de los máximos y mínimos de precios en un período dado. Su método de cálculo es:
El precio más alto en casi n ciclos Baja línea = precio más bajo en casi n ciclos
Cuando el precio se rompe en la vía ascendente, se considera que se entra en una tendencia alcista, y cuando el precio se cae en la vía descendente, se considera que se entra en una tendencia alcista. Esta estrategia solo considera la situación de romper la vía ascendente.
La lógica de la transacción es la siguiente:
La estrategia tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
Resolución de las mismas:
La estrategia también puede ser optimizada en los siguientes aspectos:
La estrategia es clara, fácil de entender y de implementar, utiliza los indicadores de la vía de Tongan para identificar automáticamente la dirección de la tendencia. La configuración es flexible y se puede ajustar según las necesidades reales.
/*backtest
start: 2022-12-07 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Giovanni_Trombetta
// Strategy to capture price channel breakouts
//@version=4
strategy("ChannelsBreakout", max_bars_back=50, overlay=true)
instrument = input(1, title = "Select 1: Stock/Forex, 2: Future")
money = input(10000, title = "Money for each trade")
backtest_start = input(2000, "Insert first year to backtest")
period = input(50, title = "Period in bars of Donchian Channel")
monetary_stoploss = input(1000, title = "Monetary Stop Loss")
quantity = if instrument != 1
1
else
int(money / close)
upBarrier = highest(high,period)
downBarrier = lowest(low,period)
up = highest(high,period / 4)
down = lowest(low,period / 4)
plot(upBarrier, color=color.green, linewidth=2)
plot(downBarrier, color=color.red, linewidth=2)
plot(up, color=color.lime, linewidth=1)
plot(down, color=color.orange, linewidth=2)
longCondition = crossover(close, upBarrier[1]) and year >= backtest_start
if (longCondition)
strategy.entry("Long", strategy.long, quantity, when = strategy.position_size == 0)
closeCondition = crossunder(close, down[1]) or down < down[1]
if (closeCondition)
strategy.close("Long", comment = "Trailing")
stop_level = strategy.position_avg_price - monetary_stoploss / strategy.position_size
strategy.exit("StopLoss", from_entry = "Long", stop = stop_level)
plot(stop_level, color=color.yellow, linewidth=2)
// l = label.new(bar_index, na,
// text="PineScript Code", color= color.lime, textcolor = color.white,
// style=label.style_labelup, yloc=yloc.belowbar, size=size.normal)
// label.delete(l[1])