패러볼릭 SAR 트렌드 추적 스톱 로스 역전 전략은 트렌드를 식별하고 트렌드가 역전될 때 역트렌드 포지션을 입력하기 위해 패러볼릭 SAR 지표를 사용하는 전략이다. 이 전략은 또한 위험을 제어하기 위해 스톱 로스 및 수익 메커니즘을 포함합니다.
이 전략은 현재 시장 트렌드를 판단하기 위해 파라볼릭 SAR 지표를 사용합니다. 파라볼릭 SAR는
SAR 포인트가 하락하고 가격 이하로 떨어지면 상승 추세를 나타냅니다. SAR 포인트가 상승하고 가격 이상으로 떨어지면 하락 추세를 나타냅니다. 전략은 SAR 포인트의 위치에 따라 현재 트렌드 방향을 판단합니다.
구체적으로, SAR 포인트가 상승 추세를 보이고 가격보다 높을 때 전략은 단축됩니다; SAR 포인트가 하락 추세를 보이고 가격보다 낮을 때 전략은 길게됩니다. 즉 SAR 포인트가 트렌드 반전을 나타낼 때 역 트렌드 지위에 진입합니다.
또한, 전략은 또한 스톱 로스 및 영업 메커니즘을 설정합니다. 장기간에 걸리면 손실을 제한하기 위해 스톱 로스 가격을 설정할 수 있습니다. 동시에 특정 목표 이익에 도달한 후 포지션을 닫기 위해 영업 가격을 설정할 수 있습니다. 쇼트 이동은 비슷합니다.
트렌드 지표와 스톱 로스/프로프트 취득 메커니즘을 결합하는 주요 장점은 다음과 같습니다.
이 전략에는 몇 가지 위험 요소가 있습니다.
이러한 위험은 매개 변수 최적화, 다른 필터 지표 등을 사용하여 해결할 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
일반적으로, 이것은 트렌드 추적 스톱 로스 역전 전략입니다. 트렌드 역전을 식별하고 또한 스톱 로스 및 수익을 취하는 수단으로 위험을 제어합니다. 최적화 후 라이브 트레이딩에 유용한 전략이 될 수 있습니다.
/*backtest start: 2024-01-24 00:00:00 end: 2024-01-31 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Parabolic SAR Strategy", overlay=true) start = input(0.02) increment = input(0.02) maximum = input(0.2) var bool uptrend = na var float EP = na var float SAR = na var float AF = start var float nextBarSAR = na if bar_index > 0 firstTrendBar = false SAR := nextBarSAR if bar_index == 1 float prevSAR = na float prevEP = na lowPrev = low[1] highPrev = high[1] closeCur = close closePrev = close[1] if closeCur > closePrev uptrend := true EP := high prevSAR := lowPrev prevEP := high else uptrend := false EP := low prevSAR := highPrev prevEP := low firstTrendBar := true SAR := prevSAR + start * (prevEP - prevSAR) if uptrend if SAR > low firstTrendBar := true uptrend := false SAR := max(EP, high) EP := low AF := start else if SAR < high firstTrendBar := true uptrend := true SAR := min(EP, low) EP := high AF := start if not firstTrendBar if uptrend if high > EP EP := high AF := min(AF + increment, maximum) else if low < EP EP := low AF := min(AF + increment, maximum) if uptrend SAR := min(SAR, low[1]) if bar_index > 1 SAR := min(SAR, low[2]) else SAR := max(SAR, high[1]) if bar_index > 1 SAR := max(SAR, high[2]) nextBarSAR := SAR + AF * (EP - SAR) if barstate.isconfirmed if uptrend strategy.entry("ParSE", strategy.short, stop=nextBarSAR, comment="ParSE") strategy.cancel("ParLE") else strategy.entry("ParLE", strategy.long, stop=nextBarSAR, comment="ParLE") strategy.cancel("ParSE") plot(SAR, style=plot.style_cross, linewidth=3, color=color.orange) plot(nextBarSAR, style=plot.style_cross, linewidth=3, color=color.aqua) //Stop Loss Inputs use_short_stop_loss = input(false, title="Short Stop Loss", group="Stop Loss and Take Profit", inline="Short_SL") short_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1, defval=5, group="Stop Loss and Take Profit", inline="Short_SL") * 0.01 use_long_stop_loss = input(false, title="Long Stop Loss", group="Stop Loss and Take Profit", inline="Long_SL") long_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1, defval=5, group="Stop Loss and Take Profit", inline="Long_SL") * 0.01 //Take Profit Inputs use_short_take_profit = input(false, title="Short Take Profit", group="Stop Loss and Take Profit", inline="Short_TP") short_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1, defval = 20, group="Stop Loss and Take Profit", inline="Short_TP") * .01 use_long_take_profit = input(false, title="Long Take Profit", group="Stop Loss and Take Profit", inline="Long_TP") long_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1, defval = 20, group="Stop Loss and Take Profit", inline="Long_TP") * .01 longStopPrice = strategy.position_avg_price * (1 - long_stop_loss) shortStopPrice = strategy.position_avg_price * (1 + short_stop_loss) longLimitPrice = strategy.position_avg_price * (1 + long_take_profit) shortLimitPrice = strategy.position_avg_price * (1 - short_take_profit) if (strategy.position_size > 0.0) if (use_long_stop_loss and not use_long_take_profit) strategy.exit("Long", stop = longStopPrice) if (use_long_take_profit and not use_long_stop_loss) strategy.exit("Long", limit = longLimitPrice) if (use_long_take_profit and use_long_stop_loss) strategy.exit("Long", stop = longStopPrice, limit=longLimitPrice) if (strategy.position_size < 0.0) if (use_short_stop_loss and not use_short_take_profit) strategy.exit("Short", stop = shortStopPrice) if (use_short_take_profit and not use_short_stop_loss) strategy.exit("Short", limit = shortLimitPrice) if (use_short_take_profit and use_short_stop_loss) strategy.exit("Short", stop = shortStopPrice, limit = shortLimitPrice) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)