Esta estrategia integra múltiples indicadores técnicos y conceptos comerciales para generar automáticamente señales de compra y venta.
Indicador UTSTC personalizado: un stop de seguimiento adaptativo basado en el rango verdadero promedio para ajustar el rango de stop loss según la volatilidad del mercado.
Indicador STC: la diferencia entre las medias móviles simples rápidas y lentas para determinar la dirección de la tendencia del mercado y los posibles puntos de inversión.
Promedios móviles simples (SMA) y promedios móviles exponenciales (EMA): Trazar promedios móviles de diferentes períodos para proporcionar información adicional sobre la tendencia.
Se genera cuando el precio de cierre cruza por encima de la línea UTSTC y STC está en estado alcista.
Se genera cuando el precio de cierre se cruza por debajo de la línea UTSTC y STC está en estado bajista.
Integra múltiples indicadores para determinar la tendencia del mercado, mejorando la precisión de la señal.
La UTSTC ajusta las paradas automáticamente en función de la volatilidad real, controlando efectivamente las pérdidas por operación.
Se trata de señales comerciales simples y eficaces de cruces de medias móviles.
Las diferentes combinaciones de parámetros se adaptan a más entornos de mercado.
Los indicadores de tendencia como STC pueden retrasarse y perderse las reversiones a corto plazo.
Las medias móviles pueden generar señales falsas.
Una evaluación cuidadosa de los parámetros requeridos, combinaciones inadecuadas pueden reducir las ganancias o aumentar las pérdidas.
Un rango de pérdida de parada demasiado amplio puede aumentar las pérdidas, demasiado estrecho puede detenerse antes.
Prueba diferentes longitudes STC para encontrar ajustes con un impacto estratégico mínimo.
Incorporar filtros adicionales para reducir las señales falsas, por ejemplo, KDJ, MACD.
Optimizar las paradas basadas en los resultados de las pruebas de retroceso para encontrar la mejor mezcla de parámetros.
Evaluar los diferentes períodos de retención para determinar el óptimo.
Esta estrategia combina tendencia, paradas automatizadas y módulos de señal en un marco de trading algorítmico bastante completo.
/*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)