Эта стратегия объединяет несколько технических индикаторов и торговых концепций для автоматического генерации сигналов купли и продажи.
Индикатор UTSTC: адаптивная остановка, основанная на среднем истинном диапазоне для корректировки диапазона остановки потери в соответствии с волатильностью рынка.
Индикатор STC: разница между быстрыми и медленными простыми скользящими средними для определения направления тенденции рынка и потенциальных точек переворота.
Простые скользящие средние значения (SMA) и экспоненциальные скользящие средние значения (EMA): графическое изображение скользящих средних значений различных периодов с целью получения дополнительной информации о тенденциях.
Сигнал покупки: генерируется, когда цена закрытия пересекает линию UTSTC и STC находится в бычьем состоянии.
Сигнал продажи: генерируется, когда цена закрытия пересекает линию UTSTC и STC находится в медленном состоянии.
Интегрирует несколько индикаторов для определения тенденции рынка, улучшая точность сигнала.
UTSTC автоматически корректирует остановки на основе реальной волатильности, эффективно контролируя убытки на одну сделку.
Простые и эффективные торговые сигналы от скользящих средних крестов.
Различные комбинации параметров приспосабливаются к большему количеству рыночных условий.
Тенденционные индикаторы, такие как STC, могут отставать и упускать краткосрочные изменения.
Перемещающиеся средние перекрестки могут генерировать ложные сигналы.
Внимательная оценка необходимых параметров, неправильные комбинации могут уменьшить прибыль или увеличить убытки.
Слишком широкий диапазон остановки может увеличить потери, слишком узкий может остановить раньше.
Испытайте различные длины STC, чтобы найти настройки с минимальным влиянием на стратегию.
Включить дополнительные фильтры для уменьшения ложных сигналов, например, KDJ, MACD.
Оптимизируйте остановки на основе результатов обратных тестов, чтобы найти лучшую комбинацию параметров.
Оценить различные периоды хранения для определения оптимального.
Эта стратегия объединяет тренд, автоматизированные остановки и сигнальные модули в довольно полную алгоритмическую торговую структуру.
/*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)