이 전략은 여러 가지 기술 지표와 거래 개념을 통합하여 자동으로 구매 및 판매 신호를 생성합니다. 주요 기능은 트렌드 지표에 기반한 스톱을 최적화하고 이동 평균 크로스오버에서 거래를 유발합니다.
사용자 지정 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)