
A ideia central desta estratégia é combinar o tempo e o indicador ATR para definir o momento de compra e o ponto de parada. A estratégia emite um sinal de compra no momento indicado no momento indicado, com o preço de encerramento no momento como preço de compra e, em seguida, com o preço de compra mais o valor do ATR como ponto de parada.
A estratégia é composta principalmente pelas seguintes partes:
Parâmetros de entrada: incluem o tempo de compra timeTrade e o ATR parâmetroatrLength. timeTrade determina o tempo de compra,atrLength determina o parâmetro de ciclo do ATR.
Calcular o indicador ATR: calcular o valor do indicador ATR com base no parâmetroatrLengthatrValue。
Definir condições de compra: Gera um sinal de compra quando a combinação de horas e minutos é igual a timeTrade.
Emitir instruções de compra: fazer mais quando se encontra em condições de compra, registrar o preço de compra buyprice.
Configure o ponto de parada: o ponto de parada é adicionado ao preço de compra. O ATR é extinto quando o preço ultrapassa o ponto de parada.
Desenho: desenhe uma linha horizontal de parada.
A maior vantagem desta estratégia é o uso de tempo e o indicador ATR para confirmar duplamente o momento de compra e o ponto de parada. Isso evita o seguimento cego de compras no mercado e controla eficazmente o risco. Em segundo lugar, o ponto de parada configurado com o ATR é dinâmico e pode definir um limite razoável de parada de acordo com a volatilidade do mercado.
Os principais riscos desta estratégia são os seguintes:
Se a hora de compra não for bem definida, você pode perder uma boa oportunidade de compra ou comprar em um mercado desejável.
Se o parâmetro ATR for configurado de forma incorreta, um ponto de parada muito grande ou pequeno pode afetar a eficácia da estratégia.
Não é possível acompanhar de forma eficaz as tendências de linha longa, sendo mais adequado para operações de linha curta.
A análise básica não foi levada em conta.
A estratégia pode ser melhorada em alguns aspectos:
A combinação de modelos multifatoriais determinou um tempo de compra mais científico.
Combinação de um modelo de taxa de flutuação para otimizar a configuração dos parâmetros ATR.
Aumentar o mecanismo de acompanhamento de tendências, adaptando-se a um período de detenção mais longo.
A análise fundamental é a base para avaliar a racionalidade da compra.
Esta estratégia é uma estratégia de negociação intraday de alta frequência mais simples e intuitiva. A idéia central é usar o tempo e a dupla confirmação do indicador ATR para bloquear o momento de compra e o ponto de parada. O benefício é que o risco é controlado e relativamente fácil de implementar.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Time-based Strategy with ATR Take Profit", overlay=true)
// Initialize take profit levels
var float takeProfitLevel = na
var float takeProfitLevelForSell = na
var float buyprice = na
var float sellprice = na
// Input for the time when the trade should be executed
tradeTime = input(0700, "Trade Execution Time (HHMM)", "Specify the time in HHMM format", group="Time Settings")
// Calculate ATR for the last 5 minutes
atrLength = input(14, "ATR Length", "Specify ATR length", group="ATR Settings")
atrValue = request.security(syminfo.tickerid, "5", ta.atr(atrLength))
// Define conditions for buy and sell
buyCondition = hour * 100 + minute == tradeTime // and strategy.position_size == 0
sellCondition = hour * 100 + minute == tradeTime // and strategy.position_size > 0
// Execute Buy and Sell orders
if (buyCondition)
strategy.entry("Buy", strategy.long)
buyprice := close
takeProfitLevel := buyprice + atrValue
strategy.exit("Take Profit BUY", from_entry="Buy", limit =takeProfitLevel)
// if (sellCondition)
// strategy.entry("Sell", strategy.short)
// sellprice := close
// takeProfitLevelForSell := sellprice -atrValue
// strategy.exit("Take Profit Sell", from_entry="Sell", limit=takeProfitLevelForSell)
// Plot horizontal lines for take profit levels
plot(takeProfitLevel, color=color.green, title="Take Profit Level (Buy)")
plot(takeProfitLevelForSell, color=color.red, title="Take Profit Level (Sell)")