資源の読み込みに... 荷物...

量確認による構造の破裂 多条件のインテリジェント・トレーディング戦略

作者: リン・ハーンチャオチャン開催日:2024年12月20日 16:15:43
タグ:BOSSMAATRTPSL

img

概要

これは,BOS (Break of Structure) とボリューム確認に基づくインテリジェントな取引戦略である.この戦略は,ボリューム拡大確認と組み合わせて,以前の高値または低値の価格ブレイクを検出することによって取引信号を生成する.連続的な確認要件とダイナミックな利益/ストップ損失設定を含む複数の条件検証メカニズムを使用し,取引の信頼性とリスク管理能力を向上させる.

戦略の原則

基本論理には次の主要な要素が含まれます.

  1. 特定の期間中の最高値と最低値を計算することによって構造的な高値と低値を特定します
  2. 移動平均値を用いて,ボリュームベースラインを計算し,ボリュームの重要な拡大を決定します.
  3. 価格が前回の高値を超えると増幅されたボリュームを記録する.
  4. 価格が前回の低値を下回るときに増幅されたボリュームで下落確認数を蓄積する.
  5. 取引シグナルは指定された確認数に達した後で起動する.
  6. ポジションエントリー後に占める利益とストップロスの割合を設定する

戦略 の 利点

  1. 多重条件検証メカニズムにより信号の信頼性が向上する
  2. ボリュームインジケーターの統合は,誤ったブレイクシグナルを避けるのに役立ちます.
  3. 連続確認メカニズムは取引頻度を減らし,勝利率を増加させる
  4. ダイナミックな取利益/ストップ損失設定は,エントリー価格に基づいて終了ポジションを自動的に調整します.
  5. 調整可能なパラメータを持つ明確な戦略論理は,良い適応性を提供します

戦略リスク

  1. 変動市場における頻繁に起こる誤ったブレイクが連続した損失につながる可能性があります
  2. ストップ・ロスのポジションは不安定な市場では十分タイミングがない可能性があります.
  3. 確認メカニズムは,最適な価格ポイントを欠いているため,エントリを遅らせることがあります.
  4. 定量判断基準は 変化する市場状況にうまく適応しない可能性があります 解決策:
  • 動的パラメータ調整のための市場変動指標を導入する
  • トレンドフィルターを追加して,変動市場における誤った信号を減らす
  • 柔軟性を高めるためにストップ・ロスのロジックを最適化
  • 適性容量値計算方法の設計

戦略の最適化方向

  1. トレンド指数,例えば移動平均値システム,トレンド方向での取引に追加する
  2. 動的ストップ・ロスト距離調整のためのATRインジケーターを組み込む
  3. 波動性適応型量値判断メカニズム設計
  4. 高リスク期を避けるため,時間フィルターを追加します.
  5. 信頼性を維持しながら入力タイミングを改善するために確認メカニズムを最適化

概要

この戦略システムは,古典的な技術分析理論と近代的な定量的な取引方法を組み合わせた戦略システムである.複数の条件検証と厳格なリスク管理を通じて,戦略は良好な安定性と信頼性を示している.最適化を要する側面がある一方で,全体的なフレームワークデザインは合理的で,実践的な応用価値があります. 戦略のパフォーマンスは,提案された最適化方向性によってさらに改善することができます.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BOS and Volume Strategy with Confirmation", overlay=true)

// Parameters
swingLength = input.int(20, title="Swing Length", minval=1)
volumeMultiplier = input.float(1.1, title="Volume Multiplier", step=0.1)
volumeSMA_length = input.int(10, title="Volume SMA Length", minval=1)
takeProfitPercentage = input.float(0.02, title="Take Profit Percentage", step=0.01)
stopLossPercentage = input.float(0.15, title="Stop Loss Percentage", step=0.01)  // New parameter for stop loss
atrLength = input.int(14, title="ATR Length")
confirmationBars = input.int(2, title="Confirmation Bars", minval=1)

// Calculate Swing Highs and Lows
swingHigh = ta.highest(high, swingLength)[1]
swingLow = ta.lowest(low, swingLength)[1]

// Calculate Volume Moving Average
volumeSMA = ta.sma(volume, volumeSMA_length)
highVolume = volume > (volumeSMA * volumeMultiplier)

// Break of Structure Detection with Confirmation
var int bullishCount = 0
var int bearishCount = 0

if (close > swingHigh and highVolume)
    bullishCount := bullishCount + 1
    bearishCount := 0
else if (close < swingLow and highVolume)
    bearishCount := bearishCount + 1
    bullishCount := 0
else
    bullishCount := 0
    bearishCount := 0

bullishBOSConfirmed = (bullishCount >= confirmationBars)
bearishBOSConfirmed = (bearishCount >= confirmationBars)

// Entry and Exit Conditions
var float entryPrice = na  // Declare entryPrice as a variable

if (bullishBOSConfirmed and strategy.position_size <= 0)
    entryPrice := close  // Use ':=' for assignment
    strategy.entry("Long", strategy.long)

if (strategy.position_size > 0)
    // Calculate stop loss price
    stopLossPrice = entryPrice * (1 - stopLossPercentage)
    strategy.exit("Take Profit Long", from_entry="Long", limit=entryPrice * (1 + takeProfitPercentage), stop=stopLossPrice)

if (bearishBOSConfirmed and strategy.position_size >= 0)
    entryPrice := close  // Use ':=' for assignment
    strategy.entry("Short", strategy.short)

if (strategy.position_size < 0)
    // Calculate stop loss price
    stopLossPrice = entryPrice * (1 + stopLossPercentage)
    strategy.exit("Take Profit Short", from_entry="Short", limit=entryPrice * (1 - takeProfitPercentage), stop=stopLossPrice)

// Plot Swing Highs and Lows for Visualization
plot(swingHigh, title="Swing High", color=color.green, linewidth=1)
plot(swingLow, title="Swing Low", color=color.red, linewidth=1)

関連性

もっと