이 전략은 평균 참 범위 (ATR) 인디케이터를 기반으로 한 동적 트레일링 스톱 전략이다. ATR 값을 통해 스톱 로스 포지션을 동적으로 조정하고 EMA 크로스오버를 사용하여 거래 신호를 확인합니다. 이 전략은 유연한 포지션 관리를 지원하며 다른 시장 환경과 거래 도구에 따라 구매/판매 양을 사용자 정의 할 수 있습니다. 특히 5 분에서 2 시간까지의 중간 시간 프레임에서 잘 수행하여 시장 트렌드를 효과적으로 캡처합니다.
전략의 핵심 논리는 몇 가지 핵심 요소에 기반합니다. 1. ATR 지표를 사용하여 시장 변동성을 계산하고 사용자 정의 계수를 통해 중지 손실 거리를 조정합니다. 2. 가격 움직임에 자동으로 조정되는 동적인 후속 정지 라인을 설정 3. 트레이딩 신호를 확인하기 위해 후속 스톱 라인과 EMA 교차점을 사용합니다. 4. EMA 확인과 함께 가격 후속 스톱 라인을 통과 할 때 거래 신호를 생성 5. 포지션 관리 시스템을 통해 거래 양을 제어하고 실시간으로 포트폴리오 상태를 추적
이 전략은 ATR 지표와 EMA 이동 평균을 결합하여 신뢰할 수 있는 동적 트레일링 스톱 시스템을 구축합니다. 이 전략의 강점은 시장 변동성 적응, 포괄적 인 위험 관리 및 운영 유연성입니다. 내재적인 위험이 존재하지만 전략은 지속적인 최적화 및 개선으로 다른 시장 환경에서 안정적인 성능을 보여줄 수 있습니다. 거래자는 매개 변수 조합을 철저히 테스트하고 라이브 거래 전에 특정 기기 특성에 따라 최적화하는 것이 좋습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title='ADET GİRMELİ Trend İz Süren Stop Strategy', overlay=true, overlay=true,default_qty_type = strategy.fixed, default_qty_value = 1) // Inputs a = input(9, title='Key Value. "This changes the sensitivity"') c = input(3, title='ATR Period') h = input(false, title='Signals from Heikin Ashi Candles') xATR = ta.atr(c) nLoss = a * xATR src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close xATRTrailingStop = 0.0 iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1 xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2 pos = 0 iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0) pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3 xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue ema = ta.ema(src, 1) above = ta.crossover(ema, xATRTrailingStop) below = ta.crossover(xATRTrailingStop, ema) buy = src > xATRTrailingStop and above sell = src < xATRTrailingStop and below barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop // Alım ve Satım Sinyalleri buySignal = src > xATRTrailingStop and above sellSignal = src < xATRTrailingStop and below // Kullanıcı girişi sell_quantity = input.int(1, title="Sell Quantity", minval=1) buy_quantity = input.int(1, title="Buy Quantity", minval=1) // Portföy miktarı (örnek simülasyon verisi) var portfolio_quantity = 0 // Sinyal üretimi (örnek sinyal, gerçek stratejinizle değiştirin) indicator_signal = (src > xATRTrailingStop and above) ? "buy" : (src < xATRTrailingStop and below) ? "sell" : "hold" // Şartlara göre al/sat if indicator_signal == "buy" and portfolio_quantity < buy_quantity strategy.entry("Buy Order", strategy.long, qty=buy_quantity) portfolio_quantity := portfolio_quantity + buy_quantity if indicator_signal == "sell" and portfolio_quantity >= sell_quantity strategy.close("Buy Order", qty=sell_quantity) portfolio_quantity := portfolio_quantity - sell_quantity // Plot buy and sell signals plotshape(buy, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny) plotshape(sell, title='Sell', text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny) // Bar coloring barcolor(barbuy ? color.rgb(6, 250, 14) : na) barcolor(barsell ? color.red : na) // Alerts alertcondition(buy, 'UT Long', 'UT Long') alertcondition(sell, 'UT Short', 'UT Short') // Strategy Entry and Exit if buy strategy.entry('Long', strategy.long) if sell strategy.entry('Short', strategy.short) // Optional Exit Conditions if sell strategy.close('Long') if buy strategy.close('Short')