Esta estrategia se basa en un sistema de línea uniforme móvil básica, optimizada para el momento de entrada específico después de la emisión de la señal.
La lógica principal es la siguiente:
Calcula el promedio móvil de un período determinado (por ejemplo, 20 días)
Cuando el precio sube por la línea media, se produce una señal de más, y cuando baja, una señal de vacío.
Cuando se recibe la señal, no se entra inmediatamente, sino que se espera a que el precio sea mejor
Si se obtiene un precio más favorable en un número de días determinado (por ejemplo, 3 días), la entrada
Si no, ingrese al cierre del mercado el día 5 para no perderse.
Esta estrategia consiste en no apresurarse a entrar en juego después de emitir la señal, sino en buscar oportunidades para volver a la tendencia después de la liquidación y así establecer posiciones a mejores precios.
Optimización de la entrada, para obtener mejores puntos de entrada
Establezca el número máximo de días de espera para evitar perderlo
Las reglas son simples, claras y fáciles de aplicar.
Tiempo de espera y valoración de la necesidad de repetición de pruebas de optimización
Puede que se pierda parte de la oportunidad en la tendencia corta
La doble condición de atención es el tiempo y el precio
La estrategia se optimiza a través de una simple entrada, para obtener mejores puntos de entrada con la garantía de no perderse la tendencia. Sin embargo, la optimización de los tiempos de espera y las condiciones de entrada es fundamental para el efecto de la estrategia.
/*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')