パラボリックSARトレンドトラッキングストップ損失逆転戦略 (Parabolic SAR Trend Tracking Stop Loss Reversal Strategy) は,トレンドを特定し,トレンドが逆転するときに反トレンドポジションを入力するためにパラボリック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)