インテリジェントなプログレッシブ価格エンベロープダイナミックポジション追加戦略

DCA MA SMA EMA Envelope TAKE PROFIT STOP LOSS risk management Moving Average Envelope
作成日: 2025-05-14 15:14:54 最終変更日: 2025-05-14 15:14:54
コピー: 0 クリック数: 330
2
フォロー
319
フォロワー

インテリジェントなプログレッシブ価格エンベロープダイナミックポジション追加戦略 インテリジェントなプログレッシブ価格エンベロープダイナミックポジション追加戦略

概要

スマート・グラデーション・プライス・バケツ・ネットワーク・ライン・ダイナミック・加仓戦略は,移動平均線・バケツ・ネットワーク・バンドに基づく長線取引戦略であり,価格が下包帯から下落した時に買い出し,段階的にリスクをコントロールして加仓する.この戦略は,最大8回の買い出しをサポートし,買い取りの間には冷却期間を設け,平均入場価格に基づいてストップを設定するか,リスク管理に基づいてストップ・ロスを設定する.この戦略は,バックメーティング時に取引範囲を最近365日まで制限し,より制御可能なバックメーティング結果を提供する.

策略の核心思想は,価格が回転して移動平均線包帯を下軌道に移動するときに買い,これは通常,短期的な超売り区域を代表し,その後,価格が上軌道に回復するときに利益を得て結束し,合理的なストップを設定してリスクを制御する.この策略は,価格の変動特性を充分に活用し,複数回分量買いによって平均コストを低減し,波動性の高い市場環境で適用される.

戦略原則

この戦略の核心となる要素は以下の通りです.

  1. 移動平均の包帯帯計算:

    • 基準線を計算する (SMAまたはEMAを選択する)
    • 上包帯状帯 = 基準線 * (1 + パーセント偏移)
    • 下包帯域 = 基準線 * (1%偏差)
  2. 入学条件:

    • 低包帯より安い
    • 商品の購入から 設定された冷却期間が過ぎました
    • 現在,最大限 (8回) を超えない購入数
    • 平均入場価格より低い (または上昇傾向にある)
    • 価格が上回より下がった
  3. 出場条件:

    • 平均入場価格の設定ストップパーセント以上の値上がり
    • 価格が平均入場価格の 設定のストップ損失パーセント以下に下がった場合
  4. ポジション管理:

    • 平均入場料が記録され更新されます.
    • 投資家は最大8回の買い物を許可し,階層的な加減を可能にします.
    • ストップまたはストップ・ロスのトリガー後,すべてのポジションを一度にクリアします.
  5. 傾向を判断する:

    • ベースラインの方向から大トレンドを判断する (ベースラインの上昇は上昇傾向)
    • 株価が上昇する中,購入条件が緩和される.

戦略的優位性

  1. 段階的なリスク管理: この戦略は,一斉に全ポジションを購入するのではなく,段階的な加仓方法を採用し,入場リスクを効果的に分散する.最大8回の加仓機会によって,下降傾向の中で平均コストを継続的に低下させ,最終利益の可能性を高める.

  2. 自動化された入場と出場の仕組み: 策略は,明瞭な技術指標 ((移動平均包帯) に基づく,自動で入場点と出場点を判断し,主観的な判断による感情的な取引決定を減らす.

  3. フレキシブルなパラメータの調整: 策略は,包網線長さ,偏移比率,ストップ・ストップ・ロス比率,購入・クーリング期など,さまざまな市場状況に応じて最適化できる豊富な調整可能なパラメータを提供します.

  4. トレンド認識能力: 策略は,基準線の方向を判断してトレンドを識別し,上昇傾向で適切な買い条件の緩和により,戦略の柔軟性と適応性を高めます.

  5. 波動性の利用: 特に高波動性市場での適用に適しており,価格変動を有効に利用して加仓と利益を得ることができる.波動が大きいほど,戦略の潜在的利益も高い.

戦略リスク

  1. トレンド反転リスク: 強い下落傾向では,価格が包囲帯を継続的に破り,複数の加仓後に依然として損失に直面する可能性があります. 停止メカニズムが設定されていますが,極端な状況では,大きな損失を誘発する可能性があります.

  2. パラメータ感度: 戦略の性能はパラメータ設定に大きく依存し,異なる市場環境では異なるパラメータの組み合わせが必要になる可能性がある.誤ったパラメータ設定は,過度取引や取引機会を逃す可能性があります.

  3. 資金需要: 戦略は最大8回の買い物を許容するので,市場が下落し続けると,小規模な口座の耐えられない可能性を超える複数の加減を支える十分な資金を準備する必要があります.

  4. 冷却期設定リスク: クーリング期を誤って設定すると,重要な購入機会を逃したり,不適切なタイミングで早急に貯金したりする可能性があります.

  5. リスク設定: ストップパーセンテージを高く設定すると,利益の機会を逃す可能性があり,低く設定すると,潜在的利益の余地が制限される可能性があります.

戦略最適化の方向性

  1. ダイナミックパケット帯のパラメータの調整: 市場の変動に応じて自動的に調整する包帯の偏移パーセントを考慮して,低変動の市場でより小さな偏移を使用し,高変動の市場でより大きな偏移を使用することができる.このようにして,異なる市場環境によりうまく適応することができる.

  2. より複雑なトレンドフィルターを追加: 現行の戦略は,シンプルな基準線方向の判断トレンドを使用し,より複雑なトレンド指標 (MACD,ADXなど) を加えることを考慮して,トレンド判断の正確性を向上させ,強烈な下落のトレンドで早急に購入するのを避けることができます.

  3. ダイナミック・ストップ・ストップ・メカニズム: 固定パーセントのストップロスを,ATR (平均リアル波幅) によるストップロスのレベル設定など,市場の変動に基づくダイナミックな調整メカニズムに変えることができる.

  4. 資金管理の最適化: 動的なポジション配分が可能で,購入ごとに固定金額ではなく.例えば,最初の購入で少量の資金を使用して,価格が下がり続けるにつれて購入金額を徐々に増加させることができる.

  5. フィルターを追加する: 時間に基づくフィルタリング条件を追加することを検討し,市場活動が低い時期に取引を避けるか,または歴史統計データに基づいて最も有利な取引時間を特定してください.

要約する

スマート・グラデーション・プライズ・パケット・ライン・ダイナミック・アピローズ・ストラテジー (Smart Progressive Pricing Packet Line) は,技術分析とリスク管理を組み合わせた体系化された取引方法である.この戦略は,移動平均パケット・ライン・バンドを通じて潜在的な購入の機会を識別し,グラデーション・アピローズ・ストラテジーを利用して平均コストを削減し,明確なストップ・ロスのルールでリスクを制御する.

この戦略は,特に波動性の高い市場での適用に適しており,価格変動を効果的に利用して収益の機会を創出することができる.同時に,パラメータの最適化と追加のフィルターの追加により,この戦略には大きな改善の余地があります.しかし,ユーザーは,戦略のリスク,特に,強い下落傾向で発生する連続的な損失のリスク,十分な資金が複数回の加仓をサポートしていることを確認し,異なる市場状況に応じてパラメータ設定を調整する必要があります.

全体として,この戦略は,トレンド追跡と逆転取引の要素を組み合わせた体系化された取引の枠組みを提供し,明確なルールによって感情的な意思決定を減らすことで,規律的な取引習慣を培うのに役立ちます. 波動的な市場の中で安定したリターンを求めるトレーダーにとって,これは考慮すべき戦略の選択肢です.

ストラテジーソースコード
/*backtest
start: 2024-05-14 00:00:00
end: 2025-05-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("SmartScale Envelope DCA", 
     overlay=true, 
     pyramiding=8, 
     default_qty_type=strategy.cash, 
     default_qty_value=25,         // Order size = $25 CAD
     initial_capital=200,          // Initial capital = $200 CAD
     currency=currency.CAD)        // Base currency = CAD

// === Inputs
len                = input.int(13, title="Envelope Length", minval=1)
percent            = input.float(6.6, title="Envelope % Offset", step=0.1) / 100
src                = input(close, title="Source")
exponential        = input(false)
stopLossPctInput   = input.float(15.0, title="Stop Loss %", minval=0.1, step=0.1)
takeProfitPctInput = input.float(5.0, title="Take Profit % from Avg Entry", minval=0.1, step=0.1)
cooldown           = input.int(7, title="Candles Between Buys")  // moved to bottom

stopLossPct    = stopLossPctInput / 100
takeProfitPct  = takeProfitPctInput / 100
maxBuys        = 8  // Hardcoded max buy-ins

// === Envelope Calculation
basis = exponential ? ta.ema(src, len) : ta.sma(src, len)
upper = basis * (1 + percent)
lower = basis * (1 - percent)

// === Limit Backtest to Last 365 Days
startDate   = timestamp("GMT-5", year(timenow), month(timenow), dayofmonth(timenow)) - 365 * 24 * 60 * 60 * 1000
inDateRange = time >= startDate

// === State Tracking
var float avgEntryPrice = na
var float lastBuyPrice  = na
var int buyCount        = 0
var int lastBuyBar      = na

// === Trend Detection
isUptrend = basis > basis[1]

// === Entry Conditions
lowBelowLower     = low < lower
cooldownPassed    = na(lastBuyBar) or (bar_index - lastBuyBar >= cooldown)
belowAvgEntry     = na(avgEntryPrice) or close < avgEntryPrice
lowerThanLastBuy  = na(lastBuyPrice) or close < lastBuyPrice
allowBuyIn        = (belowAvgEntry and lowerThanLastBuy) or isUptrend
highAboveUpper    = high > upper

// === Exit Conditions
sellCondition     = not na(avgEntryPrice) and close >= avgEntryPrice * (1 + takeProfitPct)
stopLossTriggered = not na(avgEntryPrice) and close <= avgEntryPrice * (1 - stopLossPct)

// === Buy Logic
if inDateRange and lowBelowLower and cooldownPassed and buyCount < maxBuys and allowBuyIn and (na(lastBuyPrice) or close <= lastBuyPrice)
    buyCount += 1
    strategy.entry("Buy in " + str.tostring(buyCount), strategy.long)
    lastBuyBar := bar_index
    lastBuyPrice := close
    avgEntryPrice := na(avgEntryPrice) ? close : (avgEntryPrice * (buyCount - 1) + close) / buyCount

// === Sell Logic
if strategy.position_size > 0 and highAboveUpper and sellCondition
    strategy.close_all(comment="Take Profit")
    avgEntryPrice := na
    buyCount := 0
    lastBuyBar := na
    lastBuyPrice := na

// === Stop Loss Logic
if strategy.position_size > 0 and stopLossTriggered
    strategy.close_all(comment="Stop Loss Hit")
    avgEntryPrice := na
    buyCount := 0
    lastBuyBar := na
    lastBuyPrice := na

// === Plot Envelope
plot(basis, "Basis", color=color.orange)
u = plot(upper, "Upper", color=color.blue)
l = plot(lower, "Lower", color=color.blue)
fill(u, l, color=color.rgb(33, 150, 243, 95), title="Envelope Background")

// === Plot Avg Entry Price
plot(strategy.position_size > 0 and not na(avgEntryPrice) ? avgEntryPrice : na, 
     title="Avg Entry Price", 
     color=color.rgb(173, 195, 226), 
     linewidth=2, 
     style=plot.style_line)