Williams %R ajusta dinamicamente a estratégia de stop-profit e stop-loss

EMA TP SL
Data de criação: 2024-06-07 15:52:55 última modificação: 2024-06-07 15:52:55
cópia: 10 Cliques: 783
1
focar em
1617
Seguidores

Williams %R ajusta dinamicamente a estratégia de stop-profit e stop-loss

Visão geral

A estratégia baseia-se no indicador Williams %R para otimizar o desempenho das negociações, ajustando dinamicamente os níveis de stop-loss. A estratégia gera um sinal de compra quando o Williams %R atravessa a zona de oversold (−80) e um sinal de venda quando atravessa a zona de oversold (−20). Ao mesmo tempo, usa a média móvel (EMA) do índice para suavizar os valores do Williams %R para reduzir o ruído. A estratégia oferece configurações de parâmetros flexíveis, incluindo o ciclo do indicador, o nível de stop-loss (TP/SL), a escolha do tempo de negociação e a direção de negociação, para se adaptar a diferentes ambientes de mercado e preferências dos comerciantes.

Princípio da estratégia

  1. Calcule o valor do indicador Williams %R para um determinado período.
  2. Calcule a média móvel indexada de Williams %R (EMA) .
  3. Quando o Williams %R atravessa o nível de 80 de baixo para cima, o sinal de compra é acionado; quando o Williams %R atravessa o nível de 20 de cima para baixo, o sinal de venda é disparado.
  4. Após a compra, configure os níveis de stop e stop loss para que você possa fechar a posição até atingir o preço de stop/stop ou até que o Williams %R desencadeie o sinal de reversão.
  5. Após a venda, configure os níveis de stop e stop loss para fechar a posição até atingir o preço de stop/stop ou o Williams %R para disparar o sinal de reversão.
  6. Pode-se escolher se a transação deve ser feita dentro de um intervalo de tempo especificado (por exemplo, 9:00-11:00) e se deve ser feita perto do ponto inteiro (por exemplo, X minutos antes e Y minutos depois).
  7. A opção de negociação é apenas fazer mais, apenas fazer menos ou negociação bidirecional.

Análise de vantagens

  1. Stop Loss Dinâmico: Ajuste o nível de Stop Loss de forma dinâmica de acordo com as configurações do usuário, para melhor proteger os lucros e controlar o risco.
  2. Parâmetros flexíveis: O usuário pode configurar vários parâmetros de acordo com suas próprias preferências, como o ciclo do indicador, o nível de stop loss, o tempo de negociação, etc., para se adaptar a diferentes condições de mercado.
  3. Indicador de suavização: introduzir o valor de Williams % R de suavização do EMA, reduzindo efetivamente o ruído do indicador e aumentando a confiabilidade do sinal.
  4. Limitar o tempo de negociação: pode optar por negociar em um determinado período de tempo, evitando momentos de grande volatilidade do mercado, reduzindo o risco.
  5. Direção de negociação personalizada: opção de apenas fazer mais, apenas fazer de lado ou negociar em ambos os lados, de acordo com as tendências do mercado e o julgamento pessoal.

Análise de Riscos

  1. Parâmetros mal definidos: se o Stop Loss for definido de forma muito relaxada ou muito rígida, pode resultar em perda de lucro ou em perdas frequentes.
  2. Erro de reconhecimento de tendências: O indicador Williams %R não funciona bem em mercados de turbulência, podendo gerar sinais errados.
  3. Limites de tempo têm efeitos limitados: limitar o tempo de negociação pode fazer com que a estratégia perca algumas boas oportunidades de negociação.
  4. Otimização excessiva: Os parâmetros de otimização excessiva podem levar a que a estratégia não funcione bem nas negociações reais futuras.

Direção de otimização

  1. Em combinação com outros indicadores, tais como indicadores de tendência, indicadores de taxa de flutuação, etc., para melhorar a precisão de reconhecimento de sinais.
  2. Otimização de parâmetros dinâmicos: ajuste de parâmetros em tempo real de acordo com a situação do mercado, como a utilização de diferentes configurações de parâmetros em mercados de tendência e de turbulência.
  3. Melhorar os métodos de stop loss, como o uso de stop loss de rastreamento, stop partial, etc., para melhor proteger os lucros e controlar o risco.
  4. Adjuntar o gerenciamento de fundos: ajuste dinamicamente o tamanho da posição de cada transação de acordo com o saldo da conta e as preferências de risco.

Resumir

A estratégia Williams %R para parar e parar os perdedores de forma dinâmica capta o estado de sobrecompra e sobrevenda dos preços de maneira simples e eficaz, oferecendo configurações de parâmetros flexíveis para se adaptar a diferentes ambientes de mercado e estilos de negociação. A estratégia ajusta dinamicamente o nível de parada e parada para controlar melhor o risco e proteger os lucros.

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

//@version=5
strategy("Williams %R Strategy defined buy/sell criteria with TP / SL", overlay=true)

// User inputs for TP and SL levels
tp_level = input.int(defval=60, title="Take Profit (ticks)", minval=10, maxval=500, step=10)
sl_level = input.int(defval=60, title="Stop Loss (ticks)", minval=10, maxval=200, step=10)

// Williams %R calculation
length = input.int(defval=21, title="Length", minval=5, maxval=50, step=1)
willy = 100 * (close - ta.highest(length)) / (ta.highest(length) - ta.lowest(length))

// Exponential Moving Average (EMA) of Williams %R
ema_length = input.int(defval=13, title="EMA Length", minval=5, maxval=50, step=1)
ema_willy = ta.ema(willy, ema_length)

// User inputs for Williams %R thresholds
buy_threshold = -80
sell_threshold = -20

// User input to enable/disable specific trading hours
use_specific_hours = input.bool(defval=false, title="Use Specific Trading Hours")
start_hour = input(defval=timestamp("0000-01-01 09:00:00"), title="Start Hour")
end_hour = input(defval=timestamp("0000-01-01 11:00:00"), title="End Hour")

// User input to choose trade direction
trade_direction = input.string(defval="Both", title="Trade Direction", options=["Buy Only", "Sell Only", "Both"])

// User input to enable/disable "Minutes Before" and "Minutes After" options
enable_minutes_before_after = input.bool(defval=true, title="Enable Minutes Before/After Options")
minutes_before = enable_minutes_before_after ? input.int(defval=10, title="Minutes Before the Top of the Hour", minval=0, maxval=59, step=1) : 0
minutes_after = enable_minutes_before_after ? input.int(defval=10, title="Minutes After the Top of the Hour", minval=0, maxval=59, step=1) : 0

// Condition to check if the current minute is within the user-defined time window around the top of the hour
is_top_of_hour_range = (minute(time) >= (60 - minutes_before) and minute(time) <= 59) or (minute(time) >= 0 and minute(time) <= minutes_after)

// Condition to check if the current time is within the user-defined specific trading hours
in_specific_hours = true
if use_specific_hours
    in_specific_hours := (hour(time) * 60 + minute(time)) >= (hour(start_hour) * 60 + minute(start_hour)) and (hour(time) * 60 + minute(time)) <= (hour(end_hour) * 60 + minute(end_hour))

// Buy and Sell conditions with time-based restriction
buy_condition = ta.crossover(willy, buy_threshold) and is_top_of_hour_range and in_specific_hours
sell_condition = ta.crossunder(willy, sell_threshold) and is_top_of_hour_range and in_specific_hours

// Strategy entry and exit with TP and SL
if (trade_direction == "Buy Only" or trade_direction == "Both") and buy_condition
    strategy.entry("Buy", strategy.long)

if (trade_direction == "Sell Only" or trade_direction == "Both") and sell_condition
    strategy.entry("Sell", strategy.short)

// If a buy entry was taken, allow the trade to be closed after reaching TP and SL or if conditions for a sell entry are true
if (strategy.opentrades > 0)
    strategy.exit("TP/SL", profit=tp_level, loss=sl_level)

// Plot Williams %R and thresholds for visualization
hline(-20, "Upper Band", color=color.red)
hline(-80, "Lower Band", color=color.green)
plot(willy, title="%R", color=color.yellow, linewidth=2)
plot(ema_willy, title="EMA", color=color.aqua, linewidth=2)