Estratégia baseada em Volume Preço Médio e Stairstep EMA


Data de criação: 2023-11-07 17:03:57 última modificação: 2023-11-07 17:03:57
cópia: 0 Cliques: 688
1
focar em
1617
Seguidores

Estratégia baseada em Volume Preço Médio e Stairstep EMA

Visão geral

Trata-se de uma estratégia de negociação de ouro forex de curto período (de 1 a 5 minutos), que utiliza principalmente a relação de quantidade e preço na teoria da maré e o EMA de múltiplos degraus para prever o ponto de reversão da tendência e realizar negociações de seguimento de tendência de curto período. A estratégia é adequada para negociação de alta frequência.

Princípios

Os sinais de negociação da estratégia são provenientes de duas partes:

  1. A estratégia determina a variação da tendência de alta volatilidade através do cálculo da EMA da média de transações de diferentes períodos (configuráveis). Se um EMA de curto período atravessa um EMA de longo período, é considerado um sinal de otimismo; Se um EMA de curto período atravessa um EMA de longo período, é considerado um sinal de otimismo.

  2. Um sinal de reversão baseado no EMA de Stairstep. Stairstep EMA refere-se a múltiplos EMAs com diferentes parâmetros, como linha de 10 dias, linha de 20 dias, linha de 50 dias, etc., para determinar a reversão de tendência de acordo com a ordem em que eles são organizados. Se o EMA de curto prazo precede a reversão do EMA de longo prazo, a tendência está sendo reversada.

A estratégia combinará os dois sinais para decidir a entrada. Concretamente, se a relação de quantidade for considerada pessimista e a Stairstep EMA mostrar que os múltiplos EMAs se voltaram a ser otimistas, a entrada será maior; ao contrário, se a relação de quantidade for considerada pessimista e a Stairstep EMA mostrar que os múltiplos EMAs se voltaram a ser pessimistas, a entrada será nula.

Vantagens

Esta estratégia combina os benefícios da média de volume de transações e de EMAs múltiplas para melhorar a precisão e a estabilidade do sinal:

  1. Com base no volume de transações, o preço médio pode ser julgado com mais precisão do que o preço simples EMA, evitando a indução de erros por parte das oscilações de preços aumentadas.

  2. O Stairstep EMA pode aumentar a dimensão do julgamento através da ordenação dos diferentes parâmetros do EMA, evitando o ruído causado por um único EMA.

  3. A combinação dos dois sinais permite a verificação mútua e a redução de falsos sinais.

  4. Aplica-se a negociações de curto período de alta frequência, que permitem aproveitar rapidamente oportunidades de reversão em pequenos intervalos.

  5. Os parâmetros da estratégia podem ser configurados de forma flexível para se adaptar a diferentes variedades e ciclos de otimização.

Riscos

A estratégia também apresenta alguns riscos:

  1. A dependência excessiva de indicadores técnicos pode levar a erros de comportamento passivo.

  2. As operações de ciclo curto são mais sensíveis aos custos de transação e requerem controle de pontos de deslizamento e taxas.

  3. Os parâmetros de EMA de curto período precisam ser frequentemente otimizados, caso contrário, podem falhar.

  4. A desviação do preço não necessariamente produz uma inversão, existindo o risco de erro de julgamento.

  5. O julgamento de múltiplos rankings da EMA não é totalmente confiável e pode gerar erros de julgamento.

Medidas de resposta:

  1. A decisão é baseada em mais fatores fundamentais.

  2. Ajustar a posição para garantir que o stop loss não seja muito grande.

  3. Teste e otimize os parâmetros periodicamente.

  4. Aumentar a taxa de sucesso de negociação perto de áreas de resistência de suporte crítico.

  5. Utilizado em conjunto com outros indicadores, para verificação multidimensional.

Direção de otimização

A estratégia também pode ser melhorada em:

  1. Teste diferentes métodos de cálculo de relações de valor e quantidade para encontrar parâmetros mais estáveis.

  2. O EMA da Stairstep é um indicador de avaliação em mais níveis.

  3. Filtragem em combinação com outros sinais de indicadores, como RSI, MACD, etc.

  4. Otimização de mecanismos de parada de perdas, como parada móvel, parada pendurada, etc.

  5. Desenvolver um conjunto de parâmetros apropriados para as diferentes variedades, de acordo com os parâmetros de otimização de diferentes variedades.

  6. Aumentar os algoritmos de aprendizagem de máquina para treinar modelos de julgamento usando Big Data.

  7. Explore diferentes estratégias de saída, como saídas fixas, saídas de seguimento de tendências, etc.

  8. Introdução de um mecanismo de parâmetros de adaptação para ajustar automaticamente os parâmetros de acordo com as mudanças do mercado.

Resumir

Esta estratégia combina o uso do preço médio do volume de negociação e a vantagem dos dois indicadores EMA da Stairstep para o acompanhamento de tendências de curto prazo. A estratégia possui uma alta estabilidade e precisão, mas também precisa prestar atenção ao controle de risco e otimização de parâmetros. Pode ser uma estratégia de negociação de curto prazo altamente eficiente se o teste for otimizado continuamente, em conjunto com o uso de outros indicadores técnicos.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=5

strategy("Forex Fractal EMA Scalper", overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input.int(title="Period Fractals", defval=2, minval=2, group="Optimization Parameters")

src = input(hl2, title="Source for EMA's", group="Optimization Parameters")
len1 = input.int(10, minval=1, title="Length EMA 1", group="Optimization Parameters")
out1 = ta.ema(src, len1)
len2 = input.int(20, minval=1, title="Length EMA 2", group="Optimization Parameters")
out2 = ta.ema(src, len2)
len3 = input.int(100, minval=1, title="Length EMA 3", group="Optimization Parameters")
out3 = ta.ema(src, len3)



// UpFractal
bool upflagDownFrontier = true
bool upflagUpFrontier0 = true
bool upflagUpFrontier1 = true
bool upflagUpFrontier2 = true
bool upflagUpFrontier3 = true
bool upflagUpFrontier4 = true

for i = 1 to n
    upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
    upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
    upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
    upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
    upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
    upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4

upFractal = (upflagDownFrontier and flagUpFrontier)


// downFractal
bool downflagDownFrontier = true
bool downflagUpFrontier0 = true
bool downflagUpFrontier1 = true
bool downflagUpFrontier2 = true
bool downflagUpFrontier3 = true
bool downflagUpFrontier4 = true

for i = 1 to n
    downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
    downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
    downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
    downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
    downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
    downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4

downFractal = (downflagDownFrontier and flagDownFrontier)

// plotshape(downFractal, style=shape.triangledown, location=location.belowbar, offset=-n, color=#F44336, size = size.small)
// plotshape(upFractal, style=shape.triangleup,   location=location.abovebar, offset=-n, color=#009688, size = size.small)


long= out1 > out2 and out2>out3 and upFractal
short= out1 < out2 and out2<out3 and downFractal


strategy.entry("long",strategy.long,when= short)
strategy.entry("short",strategy.short,when=long)

tp=input(25, title="TP in PIPS", group="Risk Management")*10
sl=input(25, title="SL in PIPS", group="Risk Management")*10


strategy.exit("X_long", "long", profit=tp,  loss=sl  )
strategy.exit("x_short", "short",profit=tp, loss=sl  )