この戦略は,Pivot Points インディケーターと平均 True Range Bands を組み合わせて,複数のタイムフレームにわたるトレンド追跡システムを実装する.Pivot Points を使用しながら,よりよいエントリーと出口のために長期サポートとレジスタンスを決定するために,中間サイクルにおけるトレンドを把握することができます.
この戦略は主に2つの指標に基づいています.
ピボットポイント:ピボットポイントは,上位と下位ピボットポイントを決定するために,特定の期間中の最高,最低,閉値の平均を計算します.ピボットポイントは主要なサポートとレジスタンスエリアとして機能することができます.
平均真範囲帯: 特定の期間における平均真範囲を計算し,中央帯を上下移動してチャネルを形成する.上下帯は動的ストップ損失線として機能する.
具体的な取引論理は:
価格が平均真範囲チャネルを突破すると,突破方向に沿ってロングまたはショートポジションを取ります.価格がチャネルに戻ると,ポジションを閉じます.また,価格が上位ピボットポイントを突破すると,ロングスタンスを取ります.価格が下位ピボットポイントを突破すると,ショートスタンスを取ります.
この戦略では,ピボット・ミドルラインの概念も導入されています. 利益を取るとミドルラインを突破すると,利益とリスクを制御するためにポジションの半分を閉鎖することが可能です.
この戦略には以下の利点があります.
複数のタイムフレームの設計.長い周期と中間周期が主要な傾向を決定し,短い周期が特定のエントリを決定します.
中間線は半分のポジションを閉じるオプションで 利益を得ながら 勝った取引を保証します
平均 True Range バンドは,明確なストップ損失レベルを提供します.
戦略にはパラメータが少ないので 最適なパラメータ組み合わせを最適化するのが簡単です
偽の脱出の危険を最大限に抑えます
この戦略にはいくつかのリスクもあります:
市場波動が強いとき,ストップロスのリスクが大きい.
中間線は,市場の整合中にしばしばストップロスを引き起こす可能性があります.
パラメータの選択が正しくない場合,取引が少ないか頻すぎることがある.
最近のピボットポイント断裂は 偽断裂であることが判明します
戦略は以下の側面から最適化できます.
ボリュームやボリンジャー帯のようなフィルターを組み合わせて 偽信号を避けるのです
最適なパラメータの組み合わせを見つけるためにピボットポイントとATRの期間を最適化します.
中央線にバッファゾーンを設定して 頻繁に触発を避ける
主要なトレンドに沿って動作することを保証するために適切なトレンドフィルターを追加します
一般的には,これは非常に実践的なトレンド追跡戦略です.トレンドシステムの一般的なストップ・ロスの困難を解決し,リスク制御可能なトレンド取引を達成します.これは非常に推奨される戦略です.適切な最適化と改善により,そのパフォーマンスはさらに向上することができます.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © LonesomeTheBlue //@version=4 strategy("Pivot Point SuperTrend [Backtest]", overlay = true) prd = input(defval = 2, title="Pivot Point Period", minval = 1, maxval = 50) Factor=input(defval = 3, title = "ATR Factor", minval = 1, step = 0.1) Pd=input(defval = 10, title = "ATR Period", minval=1) usecenter = input(defval = false, title="Use Center Line to Close Entry for 50%") showpivot = input(defval = false, title="Show Pivot Points") showcl = input(defval = false, title="Show PP Center Line") float ph = na float pl = na ph := pivothigh(prd, prd) pl := pivotlow(prd, prd) plotshape(ph and showpivot, text="H", style=shape.labeldown, color=na, textcolor=color.red, location=location.abovebar, transp=0, offset = -prd) plotshape(pl and showpivot, text="L", style=shape.labeldown, color=na, textcolor=color.lime, location=location.belowbar, transp=0, offset = -prd) float center = na center := center[1] float lastpp = ph ? ph : pl ? pl : na if lastpp if na(center) center := lastpp else center := (center * 2 + lastpp) / 3 Up = center - (Factor * atr(Pd)) Dn = center + (Factor * atr(Pd)) float TUp = na float TDown = na Trend = 0 TUp := close[1] > TUp[1] ? max(Up, TUp[1]) : Up TDown := close[1] < TDown[1] ? min(Dn, TDown[1]) : Dn Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1) Trailingsl = Trend == 1 ? TUp : TDown linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na plot(Trailingsl, color = linecolor , linewidth = 2, title = "PP SuperTrend") plot(showcl ? center : na, color = showcl ? center < hl2 ? color.blue : color.red : na, transp = 0) bsignal = Trend == 1 and Trend[1] == -1 ssignal = Trend == -1 and Trend[1] == 1 if bsignal strategy.entry("Buy", true, 2, comment = "Buy") if ssignal strategy.entry("Sell", false, 2, comment = "Sell") if strategy.position_size == 2 and center > hl2 and usecenter strategy.close("Buy", qty_percent = 50, comment = "close buy entry for 50%") if strategy.position_size == -2 and center < hl2 and usecenter strategy.close("Sell", qty_percent = 50, comment = "close sell entry for 50%") if change(Trend) strategy.close_all()