Estratégia baseada no tempo com ATR Take Profit

Autora:ChaoZhang, Data: 2024-01-29 16:13:57
Tags:

img

Resumo

A ideia principal desta estratégia é combinar o tempo e o indicador ATR para alcançar stop loss e take profit automatizados. A estratégia abrirá posições em pontos de tempo fixos para compra ou venda e usará o indicador ATR para calcular preços razoáveis de stop loss e take profit. Isso permite uma negociação automatizada eficiente, reduz a frequência de operações manuais e controla efetivamente os riscos através do indicador ATR.

Princípio da estratégia

Esta estratégia utiliza as variáveis de hora e minuto combinadas com as condições se para desencadear a abertura de posições no momento especificado no parâmetro de estratégia tradeTime.

Após a abertura de posições, a estratégia usará a função ta.atr() para calcular o valor do indicador ATR nos últimos 5 minutos e usá-lo como base para stop loss e take profit. Por exemplo, após a compra, take profit price = buy price + ATR value; após a venda, take profit price = sell price - ATR value.

Isto permite a abertura automatizada com base em pontos de tempo e stop loss e take profit com base no indicador ATR, reduzindo assim a frequência de operações manuais, enquanto controla eficazmente os riscos.

Análise das vantagens

Esta estratégia tem as seguintes vantagens:

  1. Alto grau de automação, pode abrir posições sem supervisão no momento especificado, reduzindo consideravelmente a frequência das operações manuais.

  2. O indicador ATR pode capturar dinamicamente a volatilidade do mercado para definir uma distância razoável de stop loss.

  3. Forte escalabilidade. É fácil combinar mais indicadores ou algoritmos de aprendizado de máquina para ajudar nas decisões. Por exemplo, combinar média móvel para determinar tendências.

  4. Simplesmente definir o mesmo tempo de negociação para diferentes produtos para implementar facilmente estratégias de negociação spread.

  5. Fácil de integrar em sistemas de negociação automatizados. Combinado com o gerenciamento de tarefas programadas, o programa de estratégia pode funcionar 24 horas sem supervisão para alcançar a automação completa.

Análise de riscos

Esta estratégia tem também alguns riscos:

  1. Risco de eventos de mercado: Eventos importantes de cisne negro podem causar flutuações extremas de preços, desencadeando paradas e perdas maiores.

  2. Risco de liquidez: alguns produtos apresentam baixa liquidez e não podem ser totalmente encerrados no limite do ponto de obtenção de lucro.

  3. O risco de otimização dos parâmetros ATR. Os parâmetros ATR precisam de testes e otimização repetidos, configurações inadequadas afetarão o desempenho da estratégia.

  4. Risco de otimização do ponto de tempo. Horário de abertura fixo pode perder oportunidades de mercado, precisa de ajuste com base em mais indicadores.

Optimização da Estratégia

Esta estratégia pode ser melhorada nas seguintes dimensões:

  1. Combine mais indicadores para julgar as condições do mercado, evitar a abertura em ambientes desfavoráveis, tais como MACD, RSI etc.

  2. Usar algoritmos de aprendizagem de máquina para prever pontos de tempo ideais. Coletar mais dados históricos, usar modelos LSTM etc.

  3. Expandir para arbitragem entre commodities usando plataformas como Heartbeat.

  4. Otimizar os parâmetros ATR e as configurações stop loss/take profit através de mais backtesting.

  5. Executar a estratégia num servidor, integrar tarefas cronometradas, conseguir negociação totalmente automatizada 24x7 lucros constantes sem supervisão.

Conclusão

Esta estratégia integra o tempo e o ATR para alcançar uma operação de stop loss e take profit eficiente. Através da otimização de parâmetros, um alfa estável pode ser obtido.


/*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)")


Mais.