Estrategia de optimización de la media móvil de entrada

El autor:¿ Qué pasa?, Fecha: 14 de septiembre de 2023 16:52:30
Las etiquetas:

Estrategia lógica

Esta estrategia optimiza los puntos de entrada después de las señales de un sistema básico de media móvil.

La lógica principal es:

  1. Calcular el promedio móvil durante un período (por ejemplo, 20 días)

  2. Los cruces generan señales largas/cortas

  3. Después de las señales, no entre inmediatamente, sino espere a que los niveles mejoren.

  4. Si se producen mejores niveles en los días especificados (por ejemplo, 3 días), introduzca operaciones.

  5. Si no, entra al precio de cierre en el quinto día para evitar perderse

El objetivo es aprovechar la reanudación de las tendencias después de las consolidaciones en lugar de entrar en señales inmediatamente.

Ventajas

  • Optimización de entrada para mejores niveles de entrada

  • Los días de espera máximos evitan que las operaciones se pierdan por completo

  • Reglas simples y claras fáciles de aplicar

Los riesgos

  • El tiempo de espera y los umbrales requieren optimización

  • Podría perder algunas oportunidades de tendencia a corto plazo

  • Necesidad de controlar tanto las condiciones de tiempo como de precios

Resumen de las actividades

Esta estrategia tiene como objetivo obtener mejores niveles de entrada a través de una simple optimización de la entrada, garantizando al mismo tiempo que no se pierden las tendencias.


/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 1h
basePeriod: 15m
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/
// © dongyun

//@version=4
strategy("等待一个更好的入场机会", overlay=true)

period = input(20,'')
maxwait = input(3,'')
threshold = input(0.01,'')

signal = 0
trend = 0.0
newtrend = 0.0
wait = 0.0
initialentry = 0.0

trend := sma(close,period)
signal := nz(signal[1])
if trend > nz(trend[1])
	signal := 1
else
	if trend < nz(trend[1])
		signal := -1

wait := nz(wait[1])
initialentry := nz(initialentry[1])

if signal != signal[1]
	if strategy.position_size > 0
		strategy.close('long',comment='trend sell')
		signal := -1
	else
		if strategy.position_size < 0
    		strategy.close('short',comment='trend buy')
    		signal := 1
	wait := 0
	initialentry := close
else
	if signal != 0 and strategy.position_size == 0
		wait := wait + 1

// test for better entry
if strategy.position_size == 0
	if wait >= maxwait
		if signal > 0
			strategy.entry('long',strategy.long, comment='maxtime Long')
		else
			if signal < 0
				strategy.entry('short',strategy.short, comment='maxtime Short')
	else
		if signal > 0 and close < initialentry - threshold
			strategy.entry('long',strategy.long, comment='delayed Long')
		else
			if signal < 0 and close > initialentry + threshold
				strategy.entry('short',strategy.short, comment='delayed short')


Más.