Esta estratégia otimiza os pontos de entrada após os sinais de um sistema básico de média móvel.
A lógica principal é:
Calcular a média móvel durante um período (por exemplo, 20 dias)
Os cruzamentos geram sinais longos/cortos
Depois dos sinais, não entrem imediatamente, mas esperem por níveis melhores.
Se os níveis melhores ocorrerem em dias especificados (por exemplo, 3 dias), introduzir transações
Se não, entre no preço de fechamento no 5o dia para evitar perder
O objectivo é capitalizar a retomada das tendências após a consolidação, em vez de entrar em sinais imediatamente, permitindo estabelecer posições em níveis melhorados.
Optimização de entrada para melhores níveis de entrada
Os dias de espera máximos evitam que as transacções sejam completamente perdidas
Regras simples e claras de fácil aplicação
Tempo de espera e limiares exigem otimização
Pode perder algumas oportunidades de tendência a curto prazo
Necessidade de monitorizar as condições de tempo e preço
Esta estratégia visa obter melhores níveis de entrada através de uma simples otimização da entrada, garantindo que as tendências não sejam perdidas.
/*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')