Estratégia de negociação de equilíbrio de rotação longa e curta de ciclo de tempo inteligente

ATR SMA RSI BB MA
Data de criação: 2024-11-12 16:33:43 última modificação: 2024-11-12 16:33:43
cópia: 1 Cliques: 506
1
focar em
1617
Seguidores

Estratégia de negociação de equilíbrio de rotação longa e curta de ciclo de tempo inteligente

Visão geral

Trata-se de uma estratégia de rotação inteligente baseada em um período de tempo, que obtém lucros por meio de negociações rotativas em vários níveis em um determinado período de tempo. A estratégia usa um mecanismo de gerenciamento de posições flexível, que pode ajustar automaticamente a direção da negociação de acordo com o ambiente do mercado, além de ter funções de controle de risco.

Princípio da estratégia

A estratégia controla a negociação principalmente através do período de tempo e do estado de posição. Primeiro, a função inActivePeriod () determina se a negociação está dentro do intervalo de negociação válida da linha K 500 mais recente. Dentro do intervalo válido, a estratégia decide o comportamento de negociação com base em variáveis como o estado de posição (positionHeld), o tempo de posição (barsHeld) e o tempo de suspensão (barsPaused). Quando o modo de negociação de swing é ativado, a estratégia gira rapidamente em direção multi-espacial; Quando o modo de negociação de swing é desativado, a estratégia equilibra a posição após 3 ciclos de posição e aguarda novas oportunidades de negociação.

Vantagens estratégicas

  1. Flexível: Suporte para multi-cabeça pura, multi-cabeça pura ou multi-cabeça pura de negociação bidirecional
  2. Risco controlado: limite o tempo de posse para evitar o risco de posse a longo prazo
  3. Boa adaptabilidade: é capaz de ajustar automaticamente a direção de negociação de acordo com a situação do mercado
  4. Simplicidade de operação: lógica de transação clara, fácil de entender e executar
  5. Eficiência do capital: aumentar a eficiência do uso do capital por meio de rotatividade frequente
  6. Parâmetros ajustáveis: os parâmetros-chave podem ser ajustados de forma flexível de acordo com a necessidade real

Risco estratégico

  1. A frequência das transações pode acarretar despesas com taxas mais elevadas
  2. Falso sinal pode ser frequente em mercados em turbulência
  3. O ciclo de detenção de posições fixas pode perder oportunidades de mercado importantes
  4. A tendência de mercado não é levada em consideração e pode ser contrária à tendência dominante.
  5. A falta de um mecanismo de suspensão de prejuízos, que pode causar grandes prejuízos em situações extremas

Direção de otimização da estratégia

  1. Introdução de indicadores de volatilidade (como o ATR) para ajustar dinamicamente o tempo de detenção
  2. Aumentar os indicadores de tendência e melhorar a precisão da direção de negociação
  3. Adição de um mecanismo de bloqueio de perda para aumentar a capacidade de controle de risco
  4. Optimizar o tempo de entrada, evitando negociações em períodos desfavoráveis
  5. Introdução de um sistema de gestão de fundos para otimizar a dimensão das posições
  6. Adição de indicadores de sentimento de mercado para melhorar a precisão das transações

Resumir

A estratégia tem uma forte flexibilidade e adaptabilidade para obter ganhos de mercado por meio de controle de ciclo de tempo e rotação multi-espaço. Embora haja alguns riscos, a estabilidade e a lucratividade da estratégia podem ser significativamente aumentadas por meio de medidas razoáveis de otimização e controle de risco. O principal benefício da estratégia reside na sua lógica de negociação simples e eficaz, adaptada a estratégias básicas para otimização e expansão.

Código-fonte da estratégia
/*backtest
start: 2024-10-12 00:00:00
end: 2024-11-11 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Tickerly Test Strategy", overlay=true)

// Inputs
longEnabled = input.bool(true, "Enable Long Trades")
shortEnabled = input.bool(true, "Enable Short Trades")
swingEnabled = input.bool(false, "Enable Swing Trading")

// Variables
var positionHeld = 0
var barsHeld = 0
var barsPaused = 0
var lastAction = "none"

// Function to determine if we're in the last 500 bars
inActivePeriod() => 
    barIndex = bar_index
    lastBarIndex = last_bar_index
    barIndex >= (lastBarIndex - 499)

// Main strategy logic
if inActivePeriod()
    if swingEnabled
        if positionHeld == 0 and barstate.isconfirmed
            if lastAction != "long"
                strategy.entry("Long", strategy.long)
                positionHeld := 1
                barsHeld := 0
                lastAction := "long"
            else
                strategy.entry("Short", strategy.short)
                positionHeld := -1
                barsHeld := 0
                lastAction := "short"
        
        if positionHeld != 0
            barsHeld += 1
            if barsHeld >= 2
                if positionHeld == 1
                    strategy.entry("Short", strategy.short)
                    positionHeld := -1
                    barsHeld := 0
                    lastAction := "short"
                else
                    strategy.entry("Long", strategy.long)
                    positionHeld := 1
                    barsHeld := 0
                    lastAction := "long"
    else
        if positionHeld == 0 and barsPaused >= 1 and barstate.isconfirmed
            if longEnabled and shortEnabled
                if lastAction != "long"
                    strategy.entry("Long", strategy.long)
                    positionHeld := 1
                    barsHeld := 0
                    barsPaused := 0
                    lastAction := "long"
                else
                    strategy.entry("Short", strategy.short)
                    positionHeld := -1
                    barsHeld := 0
                    barsPaused := 0
                    lastAction := "short"
            else if longEnabled
                strategy.entry("Long", strategy.long)
                positionHeld := 1
                barsHeld := 0
                barsPaused := 0
                lastAction := "long"
            else if shortEnabled
                strategy.entry("Short", strategy.short)
                positionHeld := -1
                barsHeld := 0
                barsPaused := 0
                lastAction := "short"
        
        if positionHeld != 0
            barsHeld += 1
            if barsHeld >= 3
                strategy.close_all()
                positionHeld := 0
                barsHeld := 0
                barsPaused := 0  // Reset pause counter when exiting a position
        else
            barsPaused += 1

// Plotting active period for visual confirmation
plot(inActivePeriod() ? 1 : 0, "Active Period", color=color.new(color.blue, 80), style=plot.style_areabr)