Estratégia de stop loss e take profit com base em indicadores de tempo e ATR


Data de criação: 2024-01-29 16:13:57 última modificação: 2024-01-29 16:13:57
cópia: 0 Cliques: 748
1
focar em
1617
Seguidores

Estratégia de stop loss e take profit com base em indicadores de tempo e ATR

Visão geral

A ideia principal desta estratégia é combinar o tempo e o indicador ATR para realizar um stop loss automatizado. A estratégia abre uma posição para comprar ou vender em um ponto fixo e, em combinação com o indicador ATR, calcula um preço de stop loss razoável. Isso permite uma negociação automatizada e eficiente, reduzindo a frequência de operações manuais e, ao mesmo tempo, controlando o risco efetivamente com o indicador ATR.

Princípio da estratégia

Esta estratégia usa o hour e o minuto variáveis combinadas com a condição de julgamento de if para a ação de abertura de posição no ponto de tempo especificado pelo parâmetro da estratégia tradeTime. Por exemplo, a configuração de 0700, significa que a abertura de posição será acionada às 7 da manhã, hora de Pequim.

Após a abertura da posição, a estratégia usa a função ta.atr () para calcular o valor do indicador ATR nos últimos 5 minutos e usa isso como base para o stop loss. Por exemplo, após a compra, o preço de parada = preço de compra + valor de ATR; após a venda, o preço de parada = preço de venda - valor de ATR.

Isso permite a abertura automática de posições baseada em pontos de tempo, bem como o stop loss baseado no indicador ATR. Isso reduz a frequência de operações manuais e, ao mesmo tempo, controla o risco de forma eficaz.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. Alta automação. Pode ser guardado sem o homem para fazer pedidos automáticos em horários específicos, reduzindo significativamente a frequência de operação manual.

  2. O Stop Loss Bar, baseado no indicador ATR, pode controlar efetivamente os prejuízos individuais. O indicador ATR pode capturar dinamicamente a volatilidade do mercado e, assim, definir uma distância de parada razoável.

  3. É altamente escalável. Pode ser facilmente combinado com mais indicadores ou algoritmos de aprendizagem de máquina para auxiliar a decisão. Por exemplo, a combinação de indicadores de avaliação de tendências de linha média.

  4. Arbitragem multi-variedade é fácil de implementar. Uma estratégia de arbitragem de abertura de contrato pode ser facilmente implementada apenas com a configuração do mesmo horário de negociação para diferentes variedades.

  5. É fácil de integrar com o sistema de negociação automatizado. Combinado com a gestão de tarefas em tempo real, pode ser executado 24 horas por dia, sem vigilância, para a realização de negociações totalmente automatizadas.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. Risco de surto de mercado. Um evento de grande escala pode levar a uma flutuação extrema dos preços, desencadeando um stop loss e gerando grandes perdas.

  2. Risco de liquidez da marca. Algumas variedades são menos líquidas, não podem ser totalmente transacionadas no ponto de parada do preço limite e não podem ser liquidadas.

  3. Risco de otimização dos parâmetros ATR. Os parâmetros ATR precisam ser testados repetidamente para otimização, e se forem definidos em tamanhos maiores ou menores, isso afetará a eficácia da estratégia.

  4. Risco de otimização de pontos de tempo. O tempo fixo de abertura de posições pode perder oportunidades de mercado, necessitando de mais pontos de ajuste de indicadores.

Otimização de Estratégia

Esta estratégia pode ser melhorada em relação a:

  1. Combine mais indicadores para avaliar a situação do mercado e evite abrir posições em ambientes de mercado desfavoráveis, como MACD, RSI, etc.

  2. O uso de algoritmos de aprendizagem de máquina para prever a melhor hora de abertura de estoque. Pode coletar mais dados históricos, usar LSTM e outros para treinamento de modelos.

  3. A utilização de plataformas como a Heartbeat para a arbitragem de variedades.

  4. Optimizar os parâmetros ATR e as configurações de stop-loss. Os parâmetros ideais podem ser encontrados com mais feedback repetitivo.

  5. A estratégia é executada no servidor, com a integração de tarefas cronometradas, com a operação totalmente automatizada, 7x24 horas.

Resumir

Esta estratégia integra o ponto de tempo e o indicador ATR para uma negociação de stop loss automática e eficiente. Com otimização de parâmetros, é possível obter um alfa estável. Ao mesmo tempo, possui uma forte capacidade de escalabilidade e integração, sendo uma das estratégias de quantificação recomendadas.

Código-fonte da estratégia
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-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 Sell", 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)")