Estratégia de negociação quantitativa baseada na comparação de preço de fechamento de linha K longo-curto e filtragem de EMA


Data de criação: 2023-12-27 14:38:28 última modificação: 2023-12-27 14:38:28
cópia: 1 Cliques: 755
1
focar em
1623
Seguidores

Estratégia de negociação quantitativa baseada na comparação de preço de fechamento de linha K longo-curto e filtragem de EMA

Uma visão geral da estratégia

Esta estratégia é chamada de estratégia de negociação quantitativa baseada na comparação de preços de fechamento de K-line com o filtro EMA. A estratégia é baseada na comparação de preços de fechamento de K-line com o filtro EMA. A estratégia é baseada na comparação de preços de fechamento de K-line com o filtro EMA.

2. Princípios de estratégia

A lógica central da estratégia é a estatística do número de linhas K de fechamento ascendente no último período de lookback upCloseCount e o número de linhas K de fechamento descendente downCloseCount, se o número de fechamento ascendente for maior, será considerado um mercado de mais de um lado, se o número de fechamento descendente for maior, será considerado um mercado vazio. Ao mesmo tempo, em combinação com o indicador EMA para determinar a tendência dos preços e como filtro, só é considerado o aumento quando o preço está acima do EMA e o fechamento quando o preço está abaixo do EMA. Além disso, a estratégia também define períodos de negociação session1 e session2, em que apenas os dois períodos de negociação.

A lógica do julgamento é a seguinte:

Condições de ação do sinal múltipla: inSession é “true” (dentro do intervalo de tempo de negociação) e upCloseCount > downCloseCount (mais linhas K de fechamento ascendentes) e close > ema (preço de fechamento acima do EMA) e currentSignal não é “long” (não há posição atual)

Condição de acionamento do sinal de cabeça vazia: inSession é verdadeiro e downCloseCount > upCloseCount ((o número maior de linhas de fechamento de K em queda) e close < ema ((o preço de fechamento é inferior ao EMA) e currentSignal não é “short” ((a posição atual não está em vigor))

Terceiro, análise de estratégia.

  1. Comparando a tendência de preços e a psicologia do mercado através da estatística de preços de fechamento da linha K durante um determinado período histórico, com um certo efeito de acompanhamento de tendências
  2. Filtragem de tendências de preços em combinação com EMAs para evitar erros de negociação em situações de turbulência
  3. Configurar períodos de negociação específicos para evitar negociação em ambientes barulhentos em períodos de negociação não-principal
  4. Equilíbrio entre tendência e frequência de transações

Quatro, análise de risco estratégico

  1. Em um mercado de liquidação lateral, o excesso de vazio no preço de fechamento é mais fácil de ser enganado, resultando em perdas desnecessárias.
  2. A configuração incorreta dos parâmetros da EMA também pode causar efeitos de filtragem inadequados
  3. Se os intervalos de tempo de negociação não forem configurados corretamente, muitas oportunidades de negociação serão perdidas ou as negociações serão erradas.
  4. O GAP não conseguiu acompanhar de forma eficaz os acontecimentos causados pelo surto.

Resposta:

  1. Optimizar os parâmetros da EMA para encontrar o melhor equilíbrio
  2. Optimizar o período de transação
  3. Controle de perdas individuais combinado com estratégias de stop loss

Cinco, estratégias de otimização

  1. Optimizar o período de negociação para encontrar o melhor período de negociação
  2. Parâmetros de otimização para o ciclo EMA e suavidade
  3. Adição de um mecanismo de stop loss baseado no ATR
  4. Aumentar o módulo de reconhecimento de incidentes para evitar o risco de um Gap
  5. Considerar combinações com outros indicadores para encontrar melhores condições de entrada de filtragem
  6. Testar diferenças de desempenho entre variedades, ajustando parâmetros de acordo com as diferenças

VI. Conclusão

Esta estratégia identifica os sinais de tendência em um determinado período de negociação definido através da estatística do número de linhas K de fechamento de liquidação de linhas e linhas vazias em um determinado período histórico, combinado com o efeito de filtragem do indicador EMA. Mas também existe um certo risco de erro de negociação.

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

//@version=5
strategy("Up vs Down Close Candles Strategy with EMA and Session Time Frames", shorttitle="UvD Strat EMA Session", overlay=true)

// User input to define the lookback period, EMA period, and session strings for time frames
int lookback = input(20, title="Lookback Period")
int emaPeriod = input(50, title="EMA Period")
string session1 = input("0900-1200", title="Time Frame 1 Session")
string session2 = input("1300-1600", title="Time Frame 2 Session")

// Calculate the EMA
float ema = ta.ema(close, emaPeriod)

// State variable to track the current signal
var string currentSignal = na

// Counting up-close and down-close candles within the lookback period
int upCloseCount = 0
int downCloseCount = 0

if barstate.isnew
    upCloseCount := 0
    downCloseCount := 0
    for i = 0 to lookback - 1
        if close[i] > close[i + 1]
            upCloseCount += 1
        else if close[i] < close[i + 1]
            downCloseCount += 1

// Define the long (buy) and short (sell) conditions with EMA filter and session time frame
bool inSession = time(timeframe.period, session1) or time(timeframe.period, session2)
bool longCondition = inSession and upCloseCount > downCloseCount and close > ema and currentSignal != "long"
bool shortCondition = inSession and downCloseCount > upCloseCount and close < ema and currentSignal != "short"

// Enter or exit the market based on conditions
if longCondition
    currentSignal := "long"
    strategy.entry("Buy", strategy.long)

if shortCondition
    currentSignal := "short"
    strategy.entry("Sell", strategy.short)

// Exit logic for long and short positions
if currentSignal == "long" and strategy.position_size <= 0
    strategy.close("Sell")

if currentSignal == "short" and strategy.position_size >= 0
    strategy.close("Buy")

plot(ema, color=color.blue, title="EMA")