Estratégia de direção dinâmica da linha K


Data de criação: 2023-10-25 16:57:05 última modificação: 2023-10-25 16:57:05
cópia: 0 Cliques: 643
1
focar em
1617
Seguidores

Estratégia de direção dinâmica da linha K

Visão geral

Esta estratégia analisa o preço de fechamento de uma linha K de raiz N superior / inferior ao preço de abertura do passado para determinar a direção da linha K futura. Dependendo da direção da linha K com mais espaço, faça mais ou menos espaço.

Princípio da estratégia

A lógica central da estratégia é:

  1. Configure o parâmetro NUM_CANDLES para determinar o número de linhas K a serem analisadas.

  2. Defina a função candle_dir, que determina a direção de uma única linha K. close>open é a direção de várias cabeças, close

  3. Defina a função count_candles para calcular o número de linhas K em diferentes direções no passado da raiz K de NUM_CANDLES.

  4. Calcule o número de cabeças, cabeças vazias e cabeças de vibração das linhas K da raiz Número de CANDLES do passado, armazenadas em ups, dns, neu.

  5. Defina o indicador indic, cujo valor é igual ao valor de ups-dns mais o valor positivo-negativo de neu。

  6. O indicador indica o tempo de trabalho excessivo e de folga.

A estratégia determina a probabilidade da direção de uma determinada quantidade de linhas K para tomar decisões de negociação. O número de linhas K estatísticas pode ser controlado com o parâmetro NUM_CANDLES, ajustando a sensibilidade da estratégia.

Análise de vantagens estratégicas

  1. A estratégia é clara, fácil de interpretar e de verificar.

  2. Não há necessidade de calcular indicadores complexos, apenas dados de linha K, reduzindo os custos de computação.

  3. O número de linhas K estatísticas pode ser ajustado por meio de parâmetros para controlar a sensibilidade da estratégia.

  4. Pode ser usado em qualquer variedade e em qualquer ciclo.

  5. Optimização de parâmetros fácil, para encontrar o melhor conjunto de parâmetros.

Análise de Riscos

  1. A falta de liquidação pode levar a uma maior frequência de abertura de posições e de liquidação.

  2. O ciclo estatístico inadequado pode causar atraso no sinal, e os parâmetros precisam ser razoavelmente definidos.

  3. A incapacidade de lidar com a reversão da tendência pode levar ao risco de perdas adversas.

  4. Os custos de transação devem ser considerados para evitar transações excessivamente frequentes.

  5. Os parâmetros de otimização do problema de sobre-ajuste devem ser verificados com mais análises de mercado.

Direção de otimização

  1. Pode-se considerar a inclusão de uma lógica de stop loss para reduzir o risco de perdas.

  2. A combinação com indicadores de tendência evita operações de contra-corrida.

  3. Pode-se aumentar o ciclo de estatística ou usar o ciclo baixo, otimizando os parâmetros para melhorar a estabilidade da estratégia.

  4. A combinação de várias variedades pode ser considerada para aumentar a chance de vitória estratégica.

  5. Parâmetros de otimização automática que podem ser combinados com métodos de aprendizado de máquina.

Resumir

Esta estratégia baseia-se na análise da direção K para determinar a direção da negociação, a ideia é clara e fácil de entender, e a sensibilidade da estratégia pode ser controlada através da configuração de parâmetros. Os benefícios da estratégia são a simplicidade lógica, o uso de baixos requisitos e a ampla área de aplicação, mas também existe um certo risco, que precisa ser otimizado para melhorar a estabilidade da estratégia.

Código-fonte da estratégia
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Refined CandleCounter Strategy by origo", overlay=true)

// how many candles to count
NUM_CANDLES = 7

// determine candle direction
candle_dir = close > open ? 1 : (round(close-open) == 0 ? 0 : -1)

// return # of candles with a given direction
count_candles(dir, max) =>
    count = 0
    for i = 0 to max
        if candle_dir[i] == dir
            count := count + 1
    count

ups = count_candles(1, NUM_CANDLES)
dns = count_candles(-1, NUM_CANDLES)
neu = count_candles(0, NUM_CANDLES)

indic = ups-dns


if indic > 0
    indic := indic+neu
else
    indic := indic-neu

plotarrow(neu, title="UP vs DN")

longCondition = (indic) > 0
shortCondition = (indic) <= 0

strategy.entry("buy", strategy.long, 1, when = longCondition and not shortCondition)
strategy.entry("sell", strategy.short, 1, when = shortCondition and not longCondition)