この戦略は,価格低下に基づいてポジションを追加し,固定利益目標に達するとポジションを閉じるグリッド取引システムである. 市場が既定のパーセントまで下がると購入し,価格が目標利益にリバウンドしたときすべてのポジションを閉じて,このプロセスを繰り返し実行することでリターンを生成する. この戦略は,特に振動する市場で短期的なリバウンドを捕捉するのに適しています.
この戦略は,グリッド取引と方向性得益のメカニズムを組み合わせている.
これは,構造的にシンプルだが実践的なグリッド取引戦略で,既定価格の落下でバッチでポジションを構築し,利益目標に達すると均等にポジションを閉じる.この戦略の主要な利点は実行確実性とリスクの多様化にあるが,市場環境の選択とパラメータ最適化は実装中に決定的である.動的なストップロスを追加し,ポジション管理を改善することによって,重要な最適化可能性がある.ライブ取引では,実際の市場状況に基づいて徹底的なバックテストとパラメータ調整が推奨される.
/*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, "#.##") + "%")