この戦略は,主に前取引日の高値,低値,閉値を当日のサポートとレジスタンスレベルとして使用する.レジスタンスレベルが破られたときに長値,サポートレベルがバックテストされたときに短値になる.これは典型的なブレイクアウト戦略に属する.
このコードは,まず,サポートとレジスタンスレベルを計算するための関数calculateSupportResistanceを定義し,前取引日の高値,低値,閉値を現在の取引日のサポートとレジスタンスレベルとして抽出します.
この3つの価格レベルをグラフ化します. この3つの価格レベルをグラフ化します.
バックテストの論理では,閉じる価格が前日の低値より低く,現在の価格がその低値より高く,ブレイクアウトを形成する場合は,ロングになります.閉じる価格が前日の高値よりも高く,現在の価格がその高値より低く,ブレイクアウトを形成する場合は,ショートになります.
このブレイクアウトモデルによって,トレンド判断と取引信号生成が実行されます.
前回の取引日のデータを使用して,現在のサポートとレジスタンスレベルを構築し,パラメータ最適化問題を回避します.
サポートとレジスタンスレベルは,実際の市場取引データから得られ,いくつかの基準値があります.
シンプルで直線的なバックテストモデル,理解し実行しやすい
サポートとレジスタンスレベルの視覚表示は価格の認識を形成します
ブレイクをリアルタイムに監視し,取引機会を間に合うように
サポートとレジスタンスのレベルは 時とともに変化し,有効性を判断するのは難しい
トレンド方向を予測できない 逆転が見逃されるリスク
偽の脱出によって容易に影響され,早期入国リスク
ブレイクアウトの持続可能性を特定できず,早期ストップ損失の可能性が高い
個々のサポートとレジスタンスの失敗は,巨大な市場の変動下でより可能性が高い.
対策:
バークアウトの有効性を判断するためにより多くの要素を組み合わせます
ストップ・ロスの範囲を適切に拡大してトレンドを把握する
バッチで開いたポジション,個々の変動の影響を減らす
レベルを決定するために5日,10日線のようなより多くの歴史的なデータを追加
ブレイクアウトの有効性を判断するために,ボリュームなどの他の指標を組み込む
ストップロスの設定は,実際の波動性に基づいて行う
資本管理を最適化し,単一の損失を制御する
一般的には,これは典型的なブレークアウト戦略であり,シンプルで直感的です.前日のデータと現在の日のサポートとレジスタンスを構築し,ロング/ショートにそれらのレベルのブレークアウトをバックテストします.プロは理解し,直接レベルを視覚化することが簡単です.デメリットは偽のブレークアウトリスクと持続不確実性です.次のステップはブレークアウトの有効性を向上させ,リスクを制御し,資本管理を最適化します.
/*backtest start: 2024-01-22 00:00:00 end: 2024-02-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Support and Resistance with Backtesting", overlay=true) // Function to calculate support and resistance levels calculateSupportResistance() => highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on) lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on) closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on) [highPrevDay, lowPrevDay, closePrevDay] // Call the function to get support and resistance levels [supResHigh, supResLow, supResClose] = calculateSupportResistance() // Plotting support and resistance levels plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High") plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low") plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close") // Backtesting logic backtestCondition = close[1] < supResLow and close > supResLow strategy.entry("Long", strategy.long, when=backtestCondition) // Plotting buy/sell arrows for backtesting plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)