
A estratégia baseia-se na relação cruzada entre o indicador VWAP (preço médio ponderado por volume de transação) e o preço. Quando o preço atravessa o VWAP para cima, é aberto um posicionamento excessivo e, quando o preço atravessa o VWAP para baixo, é aberto um posicionamento vazio. Ao mesmo tempo, o indicador ATR (amplitude média real de flutuação) é usado para calcular os níveis de stop loss e stop loss dinâmicos para controlar o risco e bloquear os lucros.
A estratégia tem o VWAP como seu núcleo, gerando sinais de negociação através da interseção com o preço, e, ao mesmo tempo, em combinação com o ATR, realizando a parada de perda dinâmica, controlando o risco de retirada ao mesmo tempo em que se mantém a tendência, a ideia geral é simples e fácil de entender. Mas a estratégia tem espaço para otimização adicional, através da introdução de indicadores auxiliares, otimização da lógica de parada de perda, adição de gerenciamento de fundos, etc., para se adaptar melhor ao ambiente de mercado variável, aumentando a estabilidade da estratégia e a lucratividade.
/*backtest
start: 2023-03-26 00:00:00
end: 2024-03-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Hannah Strategy Stop Loss and Take Profit", overlay=true)
// Inputs
cumulativePeriod = input(40, "VWAP Period")
atrPeriod = input(14, "ATR Period")
multiplier = input(1.5, "ATR Multiplier for Stop Loss")
targetMultiplier = input(3, "ATR Multiplier for Take Profit")
// Calculations for VWAP
typicalPrice = (high + low + close) / 3
typicalPriceVolume = typicalPrice * volume
cumulativeTypicalPriceVolume = sum(typicalPriceVolume, cumulativePeriod)
cumulativeVolume = sum(volume, cumulativePeriod)
vwapValue = cumulativeTypicalPriceVolume / cumulativeVolume
// Plot VWAP on the chart
plot(vwapValue, color=color.blue, title="VWAP")
// Entry Conditions based on price crossing over/under VWAP
longCondition = crossover(close, vwapValue)
shortCondition = crossunder(close, vwapValue)
// ATR Calculation for setting dynamic stop loss and take profit
atr = atr(atrPeriod)
// Execute Trades with Dynamic Stop Loss and Take Profit based on ATR
if (longCondition)
strategy.entry("Long", strategy.long)
// Setting stop loss and take profit for long positions
strategy.exit("Long Exit", "Long", stop=close - atr * multiplier, limit=close + atr * targetMultiplier)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Setting stop loss and take profit for short positions
strategy.exit("Short Exit", "Short", stop=close + atr * multiplier, limit=close - atr * targetMultiplier)