
Esta estratégia utiliza principalmente o preço máximo, o preço mínimo e o preço de fechamento do dia de negociação anterior como o nível de suporte e resistência do dia, fazendo mais quando se rompe o nível de resistência e fazendo um vazio quando se retesta o nível de suporte, pertence à estratégia de ruptura típica.
O código define primeiro uma função para calcular a resistência de suporte, calculateSupportResistance, que extrai o preço máximo, o preço mínimo e o preço de fechamento do dia de negociação anterior como resistência de suporte do dia.
A função é então chamada na lógica principal para obter os três bits de preço e o gráfico é exibido.
Na lógica de retracção, se o preço de fechamento for menor que o preço mínimo do dia anterior e o preço atual for maior que o preço mínimo constituirá uma quebra, faz-se mais; se o preço de fechamento for maior que o preço máximo do dia anterior e o preço atual for menor que o preço máximo constituirá uma quebra, faz-se menos.
Com este modelo de ruptura, é possível avaliar as tendências e gerar sinais de negociação.
Resposta:
A estratégia em geral pertence a uma estratégia típica de ruptura, simples e intuitiva, com base nos dados do dia de negociação anterior, para construir a resistência de suporte do dia, retomando a ruptura com mais ações. A vantagem é que é fácil de entender a realização, pode ver diretamente a resistência de suporte; A desvantagem é a existência de falso risco de ruptura, não é possível determinar a continuidade da tendência.
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Support and Resistance with Backtesting", overlay=true)
// Function to calculate support and resistance levels
calculateSupportResistance() =>
highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on)
[highPrevDay, lowPrevDay, closePrevDay]
// Call the function to get support and resistance levels
[supResHigh, supResLow, supResClose] = calculateSupportResistance()
// Plotting support and resistance levels
plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High")
plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low")
plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close")
// Backtesting logic
backtestCondition = close[1] < supResLow and close > supResLow
strategy.entry("Long", strategy.long, when=backtestCondition)
// Plotting buy/sell arrows for backtesting
plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)