Cruce en movimiento promedio Cruz de oro Cruce de la muerte Estrategia

El autor:¿ Qué pasa?, Fecha: 2023-12-05 11:11:02
Las etiquetas:

img

Esta es una estrategia de cruce de muerte de media móvil de oro muy clásica. La estrategia utiliza dos promedios móviles, TENKAN y KIJUN, con diferentes períodos de tiempo para formar señales de cruz dorada y cruz de muerte para operaciones largas y cortas.

Estrategia lógica

La estrategia se basa principalmente en un método japonés de análisis técnico de acciones llamado Ichimoku Kinko Hyo, que utiliza múltiples promedios móviles como las líneas TENKAN y KIJUN para determinar la dirección de la tendencia del mercado.

En primer lugar, la línea TENKAN es una línea de 9 días que representa la tendencia a corto plazo; la línea KIJUN es una línea de 26 días que representa la tendencia a mediano plazo. Cuando la línea TENKAN cruza por encima de la línea KIJUN, se genera una señal de compra. Cuando la línea TENKAN cae por debajo de la línea KIJUN, se genera una señal de venta. Esto forma la clásica media móvil de cruz de oro y la estrategia de cruz de muerte.

En segundo lugar, la estrategia también introduce la línea Senkou Span A (SSA) y la línea Senkou Span B (SSB). La línea SSA es el promedio de las líneas TENKAN y KIJUN, mientras que la línea SSB es un promedio móvil de 52 días. Juntos forman las bandas Kumo (nube) que determinan la dirección de la tendencia a largo plazo: el precio por encima de la nube significa una tendencia alcista mientras que el precio por debajo de la nube significa una tendencia bajista.

Por último, para filtrar las señales falsas, esta estrategia también examina la posición del precio en comparación con el Chikou Span (el precio de cierre retrasado en 26 días) generando solo señales de compra cuando el precio está por debajo de Chikou y señales de venta cuando el precio está por encima de Chikou.

Beneficios

Esta es una estrategia de media móvil muy típica.

  1. El uso de dos promedios móviles de períodos diferentes permite evaluar eficazmente las tendencias a corto y mediano plazo simultáneamente.

  2. Las tendencias a largo plazo se determinan con las bandas Kumo para evitar comprar en mercados bajistas a largo plazo.

  3. Comparar los precios con la línea Chikou retrasada filtra muchas señales falsas y reduce los intercambios innecesarios.

Al utilizar hábilmente varias funciones de promedios móviles, esta estrategia puede seguir las tendencias a través de plazos cortos, medianos y largos.

Los riesgos

Los principales riesgos de esta estrategia incluyen:

  1. Las estrategias de promedio móvil tienden a producir muchas señales falsas.

  2. Esta estrategia se centra en gran medida en los aspectos técnicos sin tener en cuenta los fundamentos.

  3. Una vez que el juicio de la dirección del mercado es incorrecto, las pérdidas pueden acumularse.

Por lo tanto, necesitamos sistemas de promedios móviles más avanzados, reglas de stop loss adecuadas o señales fundamentales suplementarias, para refinar aún más esta estrategia y disminuir los riesgos.

Oportunidades de mejora

Esta estrategia también puede mejorarse en los siguientes aspectos:

  1. Busque conjuntos de parámetros más estables y eficientes a través de más pruebas de retroceso.

  2. Agregue reglas de stop loss. Un stop loss razonable ayuda a controlar eficazmente las pérdidas máximas.

  3. Complementar las señales fundamentales como las revisiones de las estimaciones de ganancias que contienen información sobre las perspectivas de una empresa.

  4. Optimizar la estrategia de comparación de precios de la línea Chikou con soluciones más estables.

  5. Incorpore señales de selección de acciones. Los factores de puntuación como la proporción de PE y ROE pueden filtrar acciones de menor calidad.

Conclusión

Esta es una estrategia de promedio móvil muy típica y práctica. Al monitorear simultáneamente las tendencias a corto, mediano y largo plazo, utilizando varias funciones de promedios móviles, genera señales comerciales con un rendimiento sólido. Podemos mejorarla aún más ajustando los parámetros, agregando stop loss, selección de acciones, etc. En general, esta es una estrategia cuantitativa prometedora digna de investigación y seguimiento.


/*backtest
start: 2022-11-28 00:00:00
end: 2023-12-04 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/
// © mdeous

//@version=4
strategy(
     title="Ichimoku Kinko Hyo Strategy", 
     shorttitle="Ichimoku Strategy", 
     overlay=true,
     pyramiding=0,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     initial_capital=1000,
     currency="USD",
     commission_type=strategy.commission.percent,
     commission_value=0.0
     )

//
// SETTINGS
//

// Ichimoku

int TENKAN_LEN = input(title="Tenkan-Sen Length", defval=9, minval=1, step=1)
int KIJUN_LEN = input(title="Kijun-Sen Length", defval=26, minval=1, step=1)
int SSB_LEN = input(title="Senkou Span B Length", defval=52, minval=1, step=1)
int OFFSET = input(title="Offset For Chikou Span / Kumo", defval=26, minval=1, step=1)

// Strategy

int COOLDOWN = input(title="Orders Cooldown Period", defval=5, minval=0, step=1)
bool USE_CHIKOU = input(title="Use Imperfect Chikou Position Detection", defval=false)

//
// HELPERS
//

color _red = color.red
color _blue = color.blue
color _lime = color.lime
color _fuchsia = color.fuchsia
color _silver = color.silver
color _aqua = color.aqua

f_donchian(_len) => avg(lowest(_len), highest(_len))

//
// ICHIMOKU INDICATOR
//

float tenkan = f_donchian(TENKAN_LEN)
float kijun = f_donchian(KIJUN_LEN)
float ssa = avg(tenkan, kijun)
float ssb = f_donchian(SSB_LEN)

plot(tenkan, title="Tenkan", color=_silver)
plot(close, title="Chikou", offset=-OFFSET+1, color=_aqua)
_ssa = plot(ssa, title="SSA", offset=OFFSET-1, color=_lime)
_ssb = plot(ssb, title="SSB", offset=OFFSET-1, color=_red)
fill(_ssa, _ssb, color=ssa > ssb ? _lime : _fuchsia, transp=90)

//
// STRATEGY
//

// Check if price is "above or below" Chikou (i.e. historic price line):
// This detection is highly imperfect, as it can only know what Chikou position
// was 2*offset candles in the past, therefore if Chikou crossed the price
// line in the last 2*offset periods it won't be detected.
// Use of this detection is disabled by default,

float _chikou_val = close[OFFSET*2+1]
float _last_val = close[OFFSET+1]
bool above_chikou = USE_CHIKOU ? _last_val > _chikou_val : true
bool below_chikou = USE_CHIKOU ? _last_val < _chikou_val : true

// Identify short-term trend with Tenkan

bool _above_tenkan = min(open, close) > tenkan
bool _below_tenkan = max(open, close) < tenkan

// Check price position compared to Kumo

bool _above_kumo = min(open, close) > ssa
bool _below_kumo = max(open, close) < ssb

// Check if Kumo is bullish or bearish

bool bullish_kumo = ssa > ssb
bool bearish_kumo = ssa < ssb

// Correlate indicators to confirm the trend

bool bullish_trend = _above_tenkan and _above_kumo and bullish_kumo
bool bearish_trend = _below_tenkan and _below_kumo and bearish_kumo

// Build signals

bool buy1 = (close > open) and ((close > ssa) and (open < ssa)) // green candle crossing over SSA
bool buy2 = bullish_kumo and bearish_kumo[1] // bullish Kumo twist

bool sell1 = (close < open) and ((close < ssb) and (open > ssb)) // red candle crossing under SSB
bool sell2 = bearish_kumo and bullish_kumo[1] // bearish Kumo twist

bool go_long = below_chikou and (bullish_trend and (buy1 or buy2))
bool exit_long = above_chikou and (bearish_trend and (sell1 or sell2))

//
// COOLDOWN
//

f_cooldown() =>
    _cd_needed = false
    for i = 1 to COOLDOWN by 1
        if go_long[i]
            _cd_needed := true
            break
    _cd_needed

go_long := f_cooldown() ? false : go_long

//
// ORDERS
//

strategy.entry("buy", strategy.long, when=go_long)
strategy.close_all(when=exit_long)

//
// ALERTS
//

alertcondition(
     condition=go_long,
     title="Buy Signal",
     message="{{exchange}}:{{ticker}}: A buy signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
     )
alertcondition(
     condition=exit_long,
     title="Sell Signal",
     message="{{exchange}}:{{ticker}}: A sell signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
     )


Más.