
La estrategia de seguimiento de tendencias del canal celta de cruce de oro es una estrategia para operar solo en la dirección de la tendencia. Combina el cruce de oro de la media móvil y el canal celta como señal de entrada para capturar la dirección de la tendencia.
La estrategia utiliza dos medias móviles, las medias móviles de corto plazo y las medias móviles de largo plazo, que forman cruces de oro y cruces de muerte para determinar la dirección de la tendencia. Al mismo tiempo, utiliza los múltiplos definidos por el usuario para trazar la trayectoria ascendente y descendente del canal celta y genera una señal de negociación cuando el precio se rompe el canal.
Concretamente, la estrategia primero determina si la media móvil a largo plazo está por encima de la media móvil a corto plazo, y si lo está, cruza por oro y determina que está en una tendencia alcista; si la media móvil a corto plazo está por debajo de la media móvil a largo plazo, cruza por muerte y determina que está en una tendencia descendente.
Basado en el juicio de la tendencia, si el precio se rompe la vía, se produce una señal de más; si el precio se cae la vía, se produce una señal de más. El usuario puede ajustar el ciclo de la media móvil y el ancho de la vía, lo que ajusta los parámetros de la estrategia.
Una vez en el mercado, la estrategia utiliza el multiplicador ATR de stop-loss definido por el usuario para configurar el nivel de stop-loss. Al mismo tiempo, la estrategia también proporciona condiciones adicionales de stop-loss y stop-loss que permiten un control más flexible de la posición.
La estrategia combina las ventajas del seguimiento de tendencias y la ruptura de canales para determinar con eficacia el movimiento del mercado y las oportunidades de captura de tendencias. Las ventajas específicas son las siguientes:
El uso de la cruz de oro para determinar la dirección de la tendencia puede filtrar eficazmente los intercambios de ruido que no se ajustan a la gran tendencia.
La brecha del canal celta, combinada con la determinación de la dirección de la tendencia, puede mejorar la precisión de la hora de entrada en el mercado.
El mecanismo de stop-loss puede bloquear las ganancias y controlar activamente el riesgo.
Los parámetros de la estrategia se pueden ajustar con flexibilidad para diferentes variedades y entornos de mercado.
Se puede hacer más de un blanqueo al mismo tiempo, ampliando el alcance de la estrategia.
A pesar de las ventajas de esta estrategia, hay ciertos riesgos a tener en cuenta:
En la actualidad, la mayoría de los países de la Unión Europea están en vías de convertirse en una nación democrática.
Si se produce un cambio en la tendencia general, existe el riesgo de pérdidas por reversión.
La configuración incorrecta de los parámetros puede conducir a una transacción demasiado flexible o demasiado frecuente.
El riesgo de pasar la noche es cierto.
Hay un cierto riesgo de coincidencia de curvas.
En este sentido, se puede reducir el riesgo mediante la optimización de los parámetros, el ajuste oportuno del ciclo de la media móvil o la reducción adecuada del tamaño de la posición.
La estrategia tiene espacio para ser optimizada aún más:
Se puede considerar la inclusión de más indicadores de juicio, la formación de modelos multifactoriales, mejorar la precisión de la estrategia. Por ejemplo, la inclusión de MACD, RSI, etc.
Los parámetros se pueden optimizar en función del aprendizaje automático para adaptarse mejor a diferentes entornos de mercado.
Se puede considerar la posibilidad de ajustar dinámicamente las condiciones de stop-loss para obtener mayores ganancias, siempre que se garantice la ganancia.
El tamaño de la posición puede ajustarse a la dinámica de los cambios en la volatilidad.
Estudiar las preferencias de los parámetros de las diferentes variedades y desarrollar combinaciones de parámetros adecuadas para las diferentes variedades.
Añadir mecanismos de reducción de la frecuencia de las transacciones para reducir el impacto de las tarifas de transacción.
La estrategia de seguimiento de tendencias del canal Celta de la cruz dorada es una estrategia de seguimiento de tendencias más estable y confiable en general. Combina los beneficios del juicio de tendencias y la ruptura del canal para identificar eficazmente la dirección de la tendencia del mercado y seleccionar oportunidades de comercio de alta probabilidad. A través de la optimización de parámetros y la mejora de mecanismos, la estrategia puede convertirse en una poderosa herramienta de comercio cuantitativa.
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 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/
// © OversoldPOS
//@version=5
// strategy("Keltner Channel Strategy by OversoldPOS", overlay=true,initial_capital = 100000,default_qty_type = strategy.percent_of_equity,default_qty_value = 10, commission_type = strategy.commission.cash_per_order, commission_value = 7)
// Parameters
length = input(21, title="MA Length")
Entrymult = input(1, title="Entry ATR")
profit_mult = input(4, title="Profit Taker")
exit_mult = input(-1, title="Exit ATR")
// Moving Average Type Input
ma_type = input.string("SMA", title="Moving Average Type", options=["SMA", "EMA", "WMA"])
// Calculate Keltner Channels for different ATR multiples
atr_value = ta.atr(length)
basis = switch ma_type
"SMA" => ta.sma(close, length)
"EMA" => ta.ema(close, length)
"WMA" => ta.wma(close, length)
//
EntryKeltLong = basis + Entrymult * ta.atr(10)
EntryKeltShort = basis - Entrymult * ta.atr(10)
upper_channel1 = basis + 1 * ta.atr(10)
lower_channel1 = basis - 1 * ta.atr(10)
upper_channel2 = basis + 2 * ta.atr(10)
lower_channel2 = basis - 2 * ta.atr(10)
upper_channel3 = basis + 3 * ta.atr(10)
lower_channel3 = basis - 3 * ta.atr(10)
upper_channel4 = basis + 4 * ta.atr(10)
lower_channel4 = basis - 4 * ta.atr(10)
// Entry condition parameters
long_entry_condition = input(true, title="Long Positions")
short_entry_condition = input(true, title="Enable Short Positions")
// Additional conditions for long and short entries
is_long_entry = ta.ema(close, 20) > ta.ema(close, 50)
is_short_entry = ta.ema(close, 20) < ta.ema(close, 50)
// Additional conditions for long and short entries
MAShort = input(50, title="Short MA for Golden Cross")
MALong = input(200, title="Long MA for Golden Cross")
is_long_entry2 = ta.ema(close, MAShort) > ta.ema(close, MALong)
is_short_entry2 = ta.ema(close, MAShort) < ta.ema(close, MALong)
// Exit condition parameters
long_exit_condition1_enabled = input(true, title="Enable Long Profit Taker")
long_exit_condition2_enabled = input(true, title="Enable Long Stop")
short_exit_condition1_enabled = input(true, title="Enable Short Profit Taker")
short_exit_condition2_enabled = input(true, title="Enable Short Stop")
// Take Profit condition parameters
take_profit_enabled = input(true, title="Enable Take Profit Condition")
Takeprofit = basis + profit_mult * atr_value
STakeprofit = basis - profit_mult * atr_value
// Long entry condition
long_condition = long_entry_condition and ta.crossover(close, EntryKeltLong) and is_long_entry2
// Short entry condition
short_condition = short_entry_condition and ta.crossunder(close, EntryKeltShort) and is_short_entry2
// Exit conditions
long_exit_condition1 = long_exit_condition1_enabled and close > Takeprofit
long_exit_condition2 = long_exit_condition2_enabled and close < basis + exit_mult * atr_value
short_exit_condition1 = short_exit_condition1_enabled and close < STakeprofit
short_exit_condition2 = short_exit_condition2_enabled and close > basis - exit_mult * atr_value
// Strategy logic
if (long_condition)
strategy.entry("Long", strategy.long)
if (short_condition)
strategy.entry("Short", strategy.short)
if (long_exit_condition1 or long_exit_condition2)
strategy.close("Long")
if (short_exit_condition1 or short_exit_condition2)
strategy.close("Short")
// Moving Averages
var float MA1 = na
var float MA2 = na
if (ma_type == "SMA")
MA1 := ta.sma(close, MAShort)
MA2 := ta.sma(close, MALong)
else if (ma_type == "EMA")
MA1 := ta.ema(close, MAShort)
MA2 := ta.ema(close, MALong)
else if (ma_type == "WMA")
MA1 := ta.wma(close, MAShort)
MA2 := ta.wma(close, MALong)
// Plotting Keltner Channels with adjusted transparency
transparentColor = color.rgb(255, 255, 255, 56)
plot(upper_channel1, color=transparentColor, title="Upper Channel 1")
plot(lower_channel1, color=transparentColor, title="Lower Channel 1")
plot(upper_channel2, color=transparentColor, title="Upper Channel 2")
plot(lower_channel2, color=transparentColor, title="Lower Channel 2")
plot(upper_channel3, color=transparentColor, title="Upper Channel 3")
plot(lower_channel3, color=transparentColor, title="Lower Channel 3")
plot(upper_channel4, color=transparentColor, title="Upper Channel 4")
plot(lower_channel4, color=transparentColor, title="Lower Channel 4")
plot(basis, color=color.white, title="Basis")
plot(MA1, color=color.rgb(4, 248, 216), linewidth=2, title="Middle MA")
plot(MA2, color=color.rgb(220, 7, 248), linewidth=2, title="Long MA")