Esta estratégia integra múltiplos indicadores técnicos e conceitos de negociação para gerar automaticamente sinais de compra e venda.
Indicador UTSTC personalizado: um stop de trail adaptativo baseado no Intervalo Verdadeiro Médio para ajustar o intervalo de stop loss de acordo com a volatilidade do mercado.
Indicador STC: Diferença entre médias móveis simples rápidas e lentas para determinar a direção da tendência do mercado e os pontos de reversão potenciais.
Médias móveis simples (SMA) e Médias móveis exponenciais (EMA): traçar as médias móveis de diferentes períodos para fornecer informações adicionais sobre a tendência.
Signo de compra: gerado quando o preço de fechamento cruza acima da linha UTSTC e a STC está em estado de alta.
O preço de fechamento é gerado quando o preço de fechamento cruza abaixo da linha UTSTC e a STC está em estado de baixa.
Integra múltiplos indicadores para determinar a tendência do mercado, melhorando a precisão do sinal.
A UTSTC ajusta automaticamente as paradas com base na verdadeira volatilidade, controlando efetivamente as perdas por transação.
Sinais de negociação simples e eficazes de cruzes de médias móveis.
Diferentes combinações de parâmetros permitem acomodar mais ambientes de mercado.
Indicadores de tendência como o STC podem atrasar e perder reversões de curto prazo.
As cruzes da média móvel podem gerar sinais falsos.
Uma avaliação cuidadosa dos parâmetros necessários, combinações inadequadas podem reduzir os lucros ou aumentar as perdas.
Uma faixa de stop loss muito larga pode aumentar as perdas, uma faixa de stop loss muito estreita pode parar cedo.
Teste diferentes comprimentos STC para encontrar configurações com impacto estratégico mínimo.
Incorporar filtros adicionais para reduzir os falsos sinais, por exemplo, KDJ, MACD.
Otimizar as paradas com base nos resultados dos backtests para encontrar a melhor combinação de parâmetros.
Avaliar diferentes períodos de retenção para determinar o ideal.
Esta estratégia combina tendência, paradas automatizadas e módulos de sinal em uma estrutura de negociação algorítmica bastante completa.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("OB+LQ+UTSTC+SMA+EMA-NORA-MIP21-Jashore-Bangladesh-OneMinuteTF", shorttitle="OB+LS+UTSTC-MIP21-Jashore-Bangladesh-OneMinuteTF", overlay=true) // Order Block + Liquidity Swings [NORA] Settings pivot_length = input(14, title="Pivot Lookback") bull_ext_last = input(3, title="Bullish OB Extension") bear_ext_last = input(3, title="Bearish OB Extension") swing_length = input(5, title="Swing Length") area = input("Wick Extremity", title="Swing Area", options=["Wick Extremity", "Full Range"]) min_profit = input(0.5, title="Minimum Profit Target") max_loss = input(0.5, title="Maximum Loss Stop") // Variables var float bull_ob_price = na var float bear_ob_price = na var float swing_high = na var float swing_low = na // Calculate Order Block Prices var float low_lowest = na var float high_highest = na if bar_index >= pivot_length low_lowest := lowest(low, pivot_length) high_highest := highest(high, pivot_length) bull_ob_price := low_lowest bear_ob_price := high_highest // Calculate Swing High/Low Prices var float low_lowest_swing = na var float high_highest_swing = na if area == "Wick Extremity" low_lowest_swing := lowest(low, swing_length) high_highest_swing := highest(high, swing_length) else low_lowest_swing := lowest(high - low, swing_length) high_highest_swing := highest(high - low, swing_length) swing_low := low_lowest_swing swing_high := high_highest_swing // Trading Logic for Order Block + Liquidity Swings buy_liquidity = crossover(close, bull_ob_price) and close > swing_low sell_liquidity = crossunder(close, bear_ob_price) and close < swing_high // Plot Buy/Sell Signals for Order Block + Liquidity Swings plotshape(series=buy_liquidity, style=shape.labelup, location=location.belowbar, color=color.rgb(39, 166, 175), size=size.small, title="Bullish LQ") plotshape(series=sell_liquidity, style=shape.labeldown, location=location.abovebar, color=color.rgb(248, 95, 215), size=size.small, title="Bearish LQ") // UTSTC-SMA-EMA-NORA-New Settings keyvalue = input(3, title="UT Bot Key Value", step=0.5) atrperiod = input(10, title="UT Bot ATR Period") src = close xATR = atr(atrperiod) nLoss = keyvalue * xATR xATRTrailingStop = 0.0 xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss), iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss))) pos = 0 pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1, iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue plot(xATRTrailingStop, color=xcolor, title="UT Bot Trailing Stop") // STC Settings stc_length = input(12, title="STC Length") fastLength = input(26, title="STC Fast Length") slowLength = input(50, title="STC Slow Length") fastMA = ema(close, fastLength) slowMA = ema(close, slowLength) STC = fastMA - slowMA STCColor = STC > STC[1] ? color.green : color.red plot(STC, color=STCColor, title="STC") // Add SMAs sma21 = sma(close, 21) sma44 = sma(close, 44) plot(sma21, color=color.blue, title="SMA 21") plot(sma44, color=color.orange, title="SMA 44") // Add EMA ema5 = ema(close, 5) plot(ema5, color=color.yellow, title="EMA 5") // Combined Strategy buySignal = crossover(src, xATRTrailingStop) and STC < 25 and STCColor == color.green sellSignal = crossunder(src, xATRTrailingStop) and STC > 75 and STCColor == color.red // Plot Buy and Sell signals as triangles plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) strategy.entry("Buy", strategy.long, when=buySignal) strategy.entry("Sell", strategy.short, when=sellSignal)