ドローダウンと目標利益に基づくロンググリッド戦略

GRID DCA TP SL ROI
作成日: 2025-01-06 16:29:17 最終変更日: 2025-01-06 16:29:17
コピー: 0 クリック数: 507
1
フォロー
1617
フォロワー

ドローダウンと目標利益に基づくロンググリッド戦略

概要

この戦略は、価格の下落の程度に基づいてポジションを増やし、一定の利益目標に達したときにポジションをクローズするグリッド取引戦略です。この戦略の核となるロジックは、市場が事前に設定された範囲まで下落したときに買い、価格が回復して目標利益に達したときにポジション全体をクローズし、このプロセスを継続的に繰り返すことで利益を得ることです。この戦略は、不安定な市場で短期的な回復の機会を捉えるのに特に適しています。

戦略原則

この戦略では、グリッド取引と方向性のある利益確定の複合メカニズムを使用します。

  1. 最初のポジションオープン: 設定された開始時間後、システムは最初にトリガーされたときに現在の価格で初めてポジションを開きます。
  2. ポジション追加メカニズム:初期ポジション開始価格に対して、価格が事前に設定された下落率(デフォルト 5%)を超えて下落すると、追加購入が行われます。
  3. クローズメカニズム: 価格が最初の始値に対して事前に設定された利益目標 (デフォルトでは 5%) を超えて上昇すると、システムはすべてのポジションをクローズします。
  4. 統計追跡: システムは取引数と累積利益をリアルタイムでカウントし、チャート上に動的に表示します。

戦略的優位性

  1. 高度な自動化: 戦略は完全にシステム化されており、人間の介入を必要とせず、24 時間連続して実行できます。
  2. リスク分散: ポジションをバッチで構築することで、一度にポジションを構築するリスクを効果的に軽減できます。
  3. 明確な利益ストップ: 固定の利益目標を設定し、目標に達したらすぐに利益を獲得します。
  4. 強力な適応性: パラメータ調整により、さまざまな市場環境や取引商品に適応できます。
  5. 強力な実行能力: 戦略ロジックは明確であり、主観的な感情の影響を受けません。

戦略リスク

  1. トレンドリスク: 継続的な下落市場では、ポジションが増加し続け、損失が大きくなる可能性があります。
  2. 資金運用リスク:合理的なポジション管理が設定されていない場合、過度なポジション増加により過剰資金占有が発生する可能性があります。
  3. スリッページリスク: 市場が激しく変動すると、深刻なスリッページが発生し、戦略のパフォーマンスに影響を及ぼす可能性があります。
  4. パラメータの感度: 戦略の効果はパラメータ設定に敏感であり、異なる市場環境下ではパラメータをタイムリーに調整する必要があります。

戦略最適化の方向性

  1. 動的ストップロス: 急激な下落を防ぐために、ATR またはボラティリティに基づいた動的ストップロス メカニズムを追加することをお勧めします。
  2. ポジション管理: 口座残高に基づいた動的なポジション管理を導入することで、資金をより合理的に使用できます。
  3. 市場スクリーニング: トレンド判断指標を追加し、明らかなトレンドがある市場では戦略操作を停止します。
  4. 利益目標の最適化: 動的な利益目標を設計し、市場の変動に応じて適応的に調整できます。
  5. ポジション追加最適化: 初期段階で過剰なポジションを回避するために、ポジション追加量を段階的に設計できます。

要約する

これはシンプルですが実用的なグリッド取引戦略であり、事前に設定された下落範囲に従ってバッチでポジションを構築し、目標利益に達したときにすべてのポジションをクローズします。この戦略の主な利点は、実行の確実性とリスクの分散にありますが、それを使用する際には、市場環境の選択とパラメータの最適化に注意を払う必要があります。動的ストップロスの追加、ポジション管理の改善などにより、戦略を最適化する余地はまだたくさんあります。実際の取引で使用する場合は、事前に十分なバックテストを実施し、実際の市場状況に基づいてパラメータを調整することをお勧めします。

ストラテジーソースコード
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy Down 5%, Sell at 5% Profit", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// Inputs
initial_date = input(timestamp("2024-01-01 00:00:00"), title="Initial Purchase Date")
profit_target = input.float(5.0, title="Profit Target (%)", minval=0.1)   // Target profit percentage
rebuy_drop = input.float(5.0, title="Rebuy Drop (%)", minval=0.1)        // Drop percentage to rebuy

// Variables
var float initial_price = na             // Initial purchase price
var int entries = 0                      // Count of entries
var float total_profit = 0               // Cumulative profit
var bool active_trade = false            // Whether an active trade exists

// Entry Condition: Buy on or after the initial date
if not active_trade
    initial_price := close
    strategy.entry("Buy", strategy.long)
    entries += 1
    active_trade := true

// Rebuy Condition: Buy if price drops 5% or more from the initial price
rebuy_price = initial_price * (1 - rebuy_drop / 100)
if active_trade and close <= rebuy_price
    strategy.entry("Rebuy", strategy.long)
    entries += 1

// Exit Condition: Sell if the price gives a 5% profit on the initial investment
target_price = initial_price * (1 + profit_target / 100)
if active_trade and close >= target_price
    strategy.close_all(comment="Profit Target Hit")
    active_trade := false
    total_profit += profit_target

// Display information on the chart
plotshape(series=close >= target_price, title="Target Hit", style=shape.labelup, location=location.absolute, color=color.green, text="Sell")
plotshape(series=close <= rebuy_price, title="Rebuy", style=shape.labeldown, location=location.absolute, color=color.red, text="Rebuy")

// Draw statistics on the chart
var label stats_label = na
if (na(stats_label))
    stats_label := label.new(x=bar_index, y=close, text="", style=label.style_none, size=size.small)

label.set_xy(stats_label, bar_index, close)
label.set_text(stats_label, "Entries: " + str.tostring(entries) + "\nTotal Profit: " + str.tostring(total_profit, "#.##") + "%")