
Esta estratégia usa uma combinação de indicadores de dinâmica e linha média para identificar tendências de mercado e pontos de reversão e negociação quando a tendência ocorre, pertence à estratégia de acompanhamento de tendências e negociação de contraste. É composta principalmente por módulos como zona de oferta e demanda, linha média EMA, marcas de várias áreas de HH, LL, LH e HL, e ATR Stop Loss.
De acordo com a linha K, as relações de oferta e demanda são divididas em áreas de suprimento excedente de oferta, áreas verdes de demanda maior que a oferta.
A linha média de EMA de 200 metros de comprimento é calculada e traçada para avaliar a tendência de alta amplitude em relação ao tamanho do preço em relação à EMA. Os preços acima do EMA são considerados tendências de alta e os preços abaixo do EMA são considerados tendências de baixa.
A região de reversão é avaliada de acordo com os dois pontos mais recentes de alta e baixa da linha K:
Calcule o valor do ATR de 14 ciclos, multiplicado pelo fator 2 para o ponto de parada da estratégia.
O preço de monitorização está relacionado com a alta e baixa do Kline do dia anterior. Quando o preço é superior à alta do dia anterior, um sinal de múltiplas cabeças é gerado; Quando o preço é inferior à baixa do dia anterior, um sinal de cabeças vazias é gerado. O sinal de entrada é adiado até a confirmação da linha K 3 para evitar o sinal de erro causado pela oscilação de impacto.
A solução para o risco:
Esta estratégia utiliza a análise de oferta e demanda, a avaliação de tendências, a identificação de reversões e o módulo de gestão de perdas para identificar efetivamente as oportunidades de reversão do mercado em áreas-chave. É um conjunto de estratégias eficazes de acompanhamento de tendências e negociação de contrastes. Além disso, é necessário testar e otimizar continuamente, auxiliado por julgamentos de experiência manual, para obter ganhos estáveis a longo prazo.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-20 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supply and Demand Zones with EMA and Trailing Stop", shorttitle="SD Zones", overlay=true)
showBuySignals = input(true, title="Show Buy Signals", group="Signals")
showSellSignals = input(true, title="Show Sell Signals", group="Signals")
showHLZone = input(true, title="Show HL Zone", group="Zones")
showLHZone = input(true, title="Show LH Zone", group="Zones")
showHHZone = input(true, title="Show HH Zone", group="Zones")
showLLZone = input(true, title="Show LL Zone", group="Zones")
emaLength = input(200, title="EMA Length", group="EMA Settings")
atrLength = input(14, title="ATR Length", group="Trailing Stop")
atrMultiplier = input(2, title="ATR Multiplier", group="Trailing Stop")
// Function to identify supply and demand zones
getZones(src, len, mult) =>
base = request.security(syminfo.tickerid, "D", close)
upper = request.security(syminfo.tickerid, "D", high)
lower = request.security(syminfo.tickerid, "D", low)
multiplier = request.security(syminfo.tickerid, "D", mult)
zonetype = base + multiplier * len
zone = src >= zonetype
[zone, upper, lower]
// Identify supply and demand zones
[supplyZone, _, _] = getZones(close, high[1] - low[1], 1)
[demandZone, _, _] = getZones(close, high[1] - low[1], -1)
// Plot supply and demand zones
bgcolor(supplyZone ? color.new(color.red, 80) : na)
bgcolor(demandZone ? color.new(color.green, 80) : na)
// EMA with Linear Weighted method
ema = ta.ema(close, emaLength)
// Color code EMA based on its relation to candles
emaColor = close > ema ? color.new(color.green, 0) : close < ema ? color.new(color.red, 0) : color.new(color.yellow, 0)
// Plot EMA
plot(ema, color=emaColor, title="EMA")
// Entry Signal Conditions after the third candle
longCondition = ta.crossover(close, high[1]) and (bar_index >= 2)
shortCondition = ta.crossunder(close, low[1]) and (bar_index >= 2)
// Trailing Stop using ATR
atrValue = ta.atr(atrLength)
trailStop = close - atrMultiplier * atrValue
// Strategy Entry and Exit
if (longCondition)
strategy.entry("Buy", strategy.long)
strategy.exit("TrailStop", from_entry="Buy", loss=trailStop)
if (shortCondition)
strategy.entry("Sell", strategy.short)
strategy.exit("TrailStop", from_entry="Sell", loss=trailStop)
// Plot Entry Signals
plotshape(series=showBuySignals ? longCondition : na, title="Buy Signal", color=color.new(color.green, 0), style=shape.triangleup, location=location.belowbar)
plotshape(series=showSellSignals ? shortCondition : na, title="Sell Signal", color=color.new(color.red, 0), style=shape.triangledown, location=location.abovebar)
// Plot Trailing Stop
plot(trailStop, color=color.new(color.red, 0), title="Trailing Stop")
// Plot HH, LL, LH, and HL zones
plotshape(series=showHHZone and ta.highest(high, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HH Zone", color=color.new(color.blue, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showLLZone and ta.lowest(low, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LL Zone", color=color.new(color.blue, 80), style=shape.triangledown, location=location.belowbar)
plotshape(series=showLHZone and ta.highest(high, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LH Zone", color=color.new(color.orange, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showHLZone and ta.lowest(low, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HL Zone", color=color.new(color.orange, 80), style=shape.triangledown, location=location.belowbar)