Estratégia dinâmica de stop-profit e stop-loss da ATR


Data de criação: 2023-09-14 16:22:53 última modificação: 2023-09-14 16:22:53
cópia: 0 Cliques: 904
1
focar em
1617
Seguidores

Princípio da estratégia

A estratégia usa um ponto de parada e perda dinâmico para negociar. O ponto de parada e perda é ajustado em tempo real com base no preço atual e na volatilidade.

Logística de transação:

  1. Calcule a amplitude média real de flutuação ATR para um determinado período (por exemplo, 20 dias)

  2. Quando em bullish, o stop loss é o preço máximo menos o ATR multiplicado

  3. Quando em baixa, o ponto de parada é o preço mínimo mais o ATR multiplicado por

  4. Reversão de negociação quando o preço ultrapassa o ponto de parada

  5. A mudança de tendência quando o preço ultrapassa o ponto de parada

  6. Ajustar o Stop Loss para o novo estado

A estratégia aproveita o ATR para definir automaticamente o ponto de parada de perda, permitindo o rastreamento dinâmico. A estratégia permite bloquear os lucros em tempo hábil e evitar a expansão dos perdas.

Vantagens estratégicas

  • O ATR calcula automaticamente o ponto de parada

  • Ajuste dinâmico, acompanhamento de preços em tempo real

  • Parar os bloqueios e controlar os riscos

Risco estratégico

  • Os parâmetros do ATR precisam ser testados e otimizados repetidamente

  • “O que é que eu faço?”

  • Atenção às mudanças em tempo real nos valores do ATR

Resumir

A estratégia usa o ATR para definir dinamicamente o ponto de parada do stop loss, permitindo o acompanhamento automático. Otimizar os parâmetros do ATR pode obter um melhor efeito de parada. Mas o stop loss muito próximo deve ser usado com cautela.

Código-fonte da estratégia
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Dhananjay Volatility stop strategy v1.0", overlay=true)


length = input(20)
mult = input(1)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=line, linewidth=2)

bearish = close < vstop 
bullish = close > vstop 


if (bullish)
    strategy.entry("Buy", strategy.long, 1)
    
    

if (bearish)
    strategy.entry("Sell", strategy.short, 1)