オート S/R 戦略は,トレンドフォロー戦略である.特定の期間の最高値と最低値を計算して,主要なサポートとレジスタンスレベルを決定する.価格がこれらのキーレベルを突破すると,購入または販売オーダーが実行される.
この戦略は,まず左側と右側の多くのバー上で最高高値と最低低値を計算し,主要なサポートとレジスタンスレベルを特定します.その後,短期的なサポートとレジスタンスレベルを決定するために,より少ない数のバーで最高高値と最低低値を計算します.価格が短期的なサポートレベルを超えると,購入オーダーが起動します.価格が短期的なレジスタンスレベルを下回ると,販売オーダーが起動します.
この戦略の背後にある重要な論理は,価格が特定の期間中に両側で形成されたサポートまたはレジスタンスレベルを突破した場合,それは新しいトレンドの開始をシグナル化する可能性があります.ブレークアウトの方向にポジションを入力することで,新興トレンドを捕捉することができます.この戦略は,短期的な価格変動によって誤導されないように,トレンドを確認するために異なるタイムフレームを組み合わせます.
この戦略の最大の利点は,手動で価格レベルを特定する必要をなくして,主要なサポートとレジスタンスレベルを自動的に特定できるということです.異なるタイムフレームを組み合わせることで,誤ったブレイクを効果的にフィルタリングし,負けるポジションに囚われないようにすることができます.
さらに,エントリー&アウトリースのルールは単純で直線的です.短期S/Rレベルを断ち切るだけです.これはパラメータを調整することによって戦略を簡単に実装し最適化します.
最大のリスクは,自動的に計算されたS/Rレベルが信頼性がなくなり,トレンドが始まることなく価格が突破する可能性があります.これは損失を引き起こす可能性があります.
また,短期S/Rの期間が短すぎると,過剰な誤った信号が生み出し,ライブ取引では高損失を引き起こす可能性があります.
リスクを軽減するために,エントリの前にトレンド方向性を確認するために,ボリュームや移動平均などの他の指標を使用してフィルター条件を追加することを検討してください.トレーダーは自動的に計算されたS/Rレベルの合理性を手動で検査し確認することもできます.
この戦略を最適化できる主な側面は2つあります.
最高のブレイクアウト成功率のための最適な周期組み合わせを見つけるために入力パラメータを最適化します.異なる左と右周期混合をテストすることができます.
偽のブレイクアウトを避けるために,ボリューム/モメント指標や移動平均値などの追加のフィルターを追加します.S/Rレベルの手動検査と組み合わせると,パフォーマンスも改善できます.
基本的には,サポートレベルとレジスタンスレベルを自動的に識別するための堅牢なフレームワークです.自動S/R検出のおかげで実装は簡単で,トレンドフォローする戦略に適しています.パラメータとフィルターのさらなる最適化は収益性を向上させることができます.
/*backtest start: 2023-01-01 00:00:00 end: 2023-12-05 00:00:00 period: 1d basePeriod: 1h 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/ // © lukaRT //@version=5 strategy("Auto S/R Strategy", shorttitle="Auto S/R", overlay=true) // Ваши входные параметры leftBars = input.int(50, title="Left Bars") rightBars = input.int(25, title="Right Bars") quickRightBars = input.int(5, title="Quick Right Bars") src = input(close, title="Source") pivotHigh = ta.pivothigh(src, leftBars, rightBars) pivotLow = ta.pivotlow(src, leftBars, rightBars) quickPivotHigh = ta.pivothigh(src, leftBars, quickRightBars) quickPivotLow = ta.pivotlow(src, leftBars, quickRightBars) // Ваши уровни сопротивления и поддержки resistanceLevel1 = ta.valuewhen(quickPivotHigh, high[quickRightBars], 0) supportLevel1 = ta.valuewhen(quickPivotLow, low[quickRightBars], 0) // Пересечение ценой уровней longCondition = ta.crossover(close, supportLevel1) shortCondition = ta.crossunder(close, resistanceLevel1) strategy.entry("Long", strategy.long, when=longCondition) strategy.entry("Short", strategy.short, when=shortCondition) // Отображение линий сопротивления и поддержки на графике plot(resistanceLevel1, color=color.red, title="Resistance Level 1") plot(supportLevel1, color=color.green, title="Support Level 1")