この戦略は,あなたが盲目的にスーパートレンドインジケーターに従う場合,何が起こるかを示しています. 我々は知っているように,スーパートレンドはすぐに現れず,我々はポジションに入るか否かを決定するために次のバーを待つ必要があります. したがって,あなたはスーパートレンドが最終的に形成された後にポジションを取ると何が起こるかを見ることができます. このインジケーターは,他のツールなしで非常に危険であり,非常に深刻な引き下げを与えることができます. 自分を注意してください...
この戦略は,価格動向を決定するためにスーパートレンド指標を使用します.スーパートレンドは,平均の真の範囲と高値と低値の真ん中点に基づいて構築されています.
閉じる価格が上方レールの上にあるとき,それは持続的な上昇傾向を表し,閉じる価格が下部レールの下にあるとき,それは持続的な下落傾向を表します.
この戦略は2つのパラメータを設定します.ファクタとPd.ファクタはスーパートレンドチャネルの幅を制御し,PdはATRを計算するための期間長さを制御します.これらの2つのパラメータに基づいて,上下のレールを構築することができます.
上部レール式: hl2 - (因数 * ATR(Pd)) 下鉄の公式: hl2 + (因数 * ATR(Pd))
HL2は高値と低値の真ん中です
次に,現在の閉店価格を上下線と比較して,上昇傾向か下落傾向かを判断し,ブル式トレンド変数を出力します.
トレンドに基づいてスーパートレンドの上下線をグラフ化し,トレンドの状態が変わるときにエントリーと出口信号を配置します.
信号に基づいて戦略のエントリーロジックを設定します.
この戦略には以下の利点があります.
価格傾向とピボットポイントを明確に決定できるスーパートレンド指標を使用します
明確な入力と出口論理を設定します.
矢印で入力時間を表示します
シンプルで分かりやすい戦略の論理です
この戦略には次のリスクがあります
他の補助指標やマネーマネジメントなしで スーパートレンドを盲目的にフォローすると 大量の引き下げにつながる可能性があります
ストップ損失設定がない 単一の損失を制御できない
シグナルが遅れて ターニングポイントの周りに 間に合わないかもしれません
パラメータの設定が正しくない場合,スーパートレンドチャネルが幅も狭すぎます.
リスク管理対策:
MACD,KDJなどの指標と組み合わせて有効性を検証し 盲目追従を避けます
合理的なストップ損失を設定して 単一の損失を最大限に制御します
パラメータを調整して,超トレンドチャンネルを合理的にします. 幅が幅も狭すぎないようにします.
この戦略は,次の側面で最適化できます.
失敗を防ぐため,有効性の検証のための補助指標を追加します.例えば,MACD指標は検討できます.
合理的なストップ損失ロジックを設定します ATRに基づいて ストップ損失の割合を設定できます
ハイパーパラメータ Factor と Pd を最適化して最適なパラメータの組み合わせを見つけます.例えば,最適パラメータを見つけるために横断方法を使用できます.
信号遅延を避けるためにエントリータイミングを最適化します.例えば,強度と弱さのベースでエントリータイミングを調整するためにモメントインジケーターを導入することができます.
位置サイズ戦略を追加します.例えば,固定分数位置サイズを採用することができます.
この戦略は,価格傾向を決定し,ターニングポイントを見つけるためにスーパートレンドインジケーターを使用します.補助指標やストップ損失手段なしでスーパートレンドを盲目的にフォローすることは大きなリスクをもたらします.リスク管理,ストップ損失戦略,パラメータ最適化,エントリータイミングなどの側面の改善を提案しました.これは戦略の安定性と収益性を大幅に向上させることができます.
/*backtest start: 2022-12-06 00:00:00 end: 2023-12-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Supertrend blind follow", overlay=true) Factor=input(3, minval=1,maxval = 100) Pd=input(7, minval=1,maxval = 100) Up=hl2-(Factor*atr(Pd)) Dn=hl2+(Factor*atr(Pd)) TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1) Tsl = Trend==1? TrendUp: TrendDown linecolor = Trend == 1 ? green : red plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend") plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0) plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0) //plot(Trend==1 and Trend[1]==-1,color = linecolor, style = circles, linewidth = 3,title="Trend") plotarrow(Trend == 1 and Trend[1] == -1 ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0) plotarrow(Trend == -1 and Trend[1] == 1 ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0) longCondition = cross(close,Tsl) and close>Tsl if (longCondition) strategy.entry("long", strategy.long) shortCondition = cross(Tsl,close) and close<Tsl if (shortCondition) strategy.entry("short", strategy.short)