Williams % R Estratégia de cruzamento com filtro de média móvel

Autora:ChaoZhang, Data: 2023-09-19 21:57:46
Tags:

Resumo

Esta estratégia utiliza os sinais de cruzamento Williams % R e adiciona um filtro de média móvel para criar um sistema de negociação flexível a curto prazo.

Estratégia lógica

  1. Calcular a Williams %R e a média móvel simples (MA) de 200 períodos.

  2. O preço de venda deve ser o preço de venda do produto.

  3. O preço de venda deve ser o preço de venda do produto.

  4. No caso de posições longas, a posição close é quando as posições close alcançam o nível de take profit (preço de entrada + pips take profit) ou stop loss (preço de entrada - pips stop loss).

  5. Em caso de curto prazo, fechar posição quando se chegar perto do nível de lucro (preço de entrada - pips de lucro) ou do nível de stop loss (preço de entrada + pips de stop loss).

A estratégia capitaliza a natureza de sobrecompra/supervenda da Williams %R, e combina o filtro de tendência MA para sinais mais confiáveis.

Análise das vantagens

  1. A Williams %R identifica eficazmente os níveis de sobrecompra/supervenda com sinais claros.

  2. O filtro MA adiciona tendência para evitar flagelos.

  3. Parâmetros personalizáveis para flexibilidade.

  4. O trail stop-loss bloqueia a maioria dos lucros.

  5. Lógica simples, clara, fácil de entender e implementar, boa para negociações de curto prazo.

  6. Aplicável a vários produtos com flexibilidade.

Análise de riscos

  1. Williams %R tem efeito retardador, pode perder algumas oportunidades.

  2. O filtro MA também tem algum atraso.

  3. Regras estritas de sobrecompra/supervenda podem deixar de lado algumas tendências.

  4. O stop-loss muito apertado pode ser parado por arremessas.

  5. O stop loss demasiado largo pode limitar os lucros.

  6. Os parâmetros precisam de ser ajustados para diferentes ambientes de mercado.

Orientações de otimização

  1. Otimizar os parâmetros para uma maior taxa de vitórias.

  2. Adicione outros filtros como MACD, KDJ etc.

  3. Tente diferentes tipos de MA como MA exponencial.

  4. Adicione o viés da tendência, só negocie na direção da tendência.

  5. Otimizar as estratégias de stop loss como paradas dinâmicas, saídas de candelabro, etc.

  6. Tente dimensionamento de posição como fracionário fixo, Martingale etc.

  7. Utilize aprendizagem de máquina para melhor otimização de parâmetros.

Conclusão

Esta estratégia combina os sinais de sobrecompra / sobrevenda de Williams % R com o filtro de tendência MA em um sistema de curto prazo simples. Tem sinais de entrada claros e lógica de stop loss / take profit. Melhorias adicionais podem ser feitas por meio de ajuste de parâmetros, seleção de indicadores, gerenciamento de stop loss etc. Para mais robustez. Fácil de implementar e expandir, esta estratégia é bem adequada para traders de curto prazo.


/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Williams %R Cross Strategy with MA Filter", overlay=true)

// User Inputs
wrLength = input(14, title="Williams %R Length")
crossPips = input(10, title="Cross Threshold (Pips)")
takeProfitPips = input(30, title="Take Profit (Pips)")
stopLossPips = input(20, title="Stop Loss (Pips)")

// Calculate Williams %R
wrHigh = ta.highest(high, wrLength)
wrLow = ta.lowest(low, wrLength)
wr = (wrHigh - close) / (wrHigh - wrLow) * -100

// Calculate 200-period Simple Moving Average
ma200 = ta.sma(close, 200)

// Entry Conditions
enterLong = ta.crossover(wr, -50 - crossPips) and close > ma200
enterShort = ta.crossunder(wr, -50 + crossPips) and close < ma200

// Exit Conditions
exitLong = close >= (strategy.position_avg_price + (takeProfitPips / syminfo.mintick)) or close <= (strategy.position_avg_price - (stopLossPips / syminfo.mintick))
exitShort = close <= (strategy.position_avg_price - (takeProfitPips / syminfo.mintick)) or close >= (strategy.position_avg_price + (stopLossPips / syminfo.mintick))

// Order Management
if enterLong
    strategy.entry("Long", strategy.long)
    
if enterShort
    strategy.entry("Short", strategy.short)

if exitLong
    strategy.close("Long")

if exitShort
    strategy.close("Short")


Mais.