Estratégia de compra de stop-loss com base no tempo e no ATR


Data de criação: 2024-02-28 17:36:50 última modificação: 2024-02-28 17:36:50
cópia: 0 Cliques: 630
1
focar em
1617
Seguidores

Estratégia de compra de stop-loss com base no tempo e no ATR

Visão geral

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.

Princípio da estratégia

A estratégia é composta principalmente pelas seguintes partes:

  1. 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.

  2. Calcular o indicador ATR: calcular o valor do indicador ATR com base no parâmetroatrLengthatrValue。

  3. Definir condições de compra: Gera um sinal de compra quando a combinação de horas e minutos é igual a timeTrade.

  4. Emitir instruções de compra: fazer mais quando se encontra em condições de compra, registrar o preço de compra buyprice.

  5. 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.

  6. Desenho: desenhe uma linha horizontal de parada.

Análise de vantagens

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.

Análise de Riscos

Os principais riscos desta estratégia são os seguintes:

  1. 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.

  2. 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.

  3. Não é possível acompanhar de forma eficaz as tendências de linha longa, sendo mais adequado para operações de linha curta.

  4. A análise básica não foi levada em conta.

Direção de otimização

A estratégia pode ser melhorada em alguns aspectos:

  1. A combinação de modelos multifatoriais determinou um tempo de compra mais científico.

  2. Combinação de um modelo de taxa de flutuação para otimizar a configuração dos parâmetros ATR.

  3. Aumentar o mecanismo de acompanhamento de tendências, adaptando-se a um período de detenção mais longo.

  4. A análise fundamental é a base para avaliar a racionalidade da compra.

Resumir

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.

Código-fonte da estratégia
/*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)")