この戦略は,ドルコスト平均 (DCA) と取引先プラットフォームで利用可能な後継取利益機能を組み合わせます.購入に対して1%の価格偏差を設定し,各販売で0.5%の利益を目標としています.小利益をターゲットとする合理性は,市場が鈍い時期に滞りなくなり,取引ボットのスムーズな運用を確保することです.バックテストに基づいて,このボットは市場変動と操作に耐えられるほど適応性が高いことが証明されています.年収率 (APR) が例外的に高くないかもしれませんが,長期投資のための満足のいくかつ安全なオプションを提供し,しばしば伝統的な買いと保持 (HODL) 戦略を上回っています.
この戦略は,まず,トレーリングストップパーセント,最大DCAオーダー,価格偏差パーセントなどのような構成可能なパラメータを設定します. その後,最後の購入価格,購入数,初期購入価格,トレーリングストップ価格などの変数を追跡します. 購入論理では,現在の価格が最後の購入価格 * (1 - 価格偏差パーセント) 以下で,購入数の最大DCAオーダーに達していない場合は,購入信号を発行し,購入価格を記録します. 販売論理では,現在の価格が最後の購入価格 * (1 + 利益占有パーセント) 以上である場合は,トレーリングストップ価格を設定します. 価格がトレーリングストップ価格以上上昇し続けると,トレーリングストップ価格が現在の価格 * (1 - トレーリングパーセント) に更新されます. 価格がトレーリングストップ値を下回る場合は,関連する価格をリセットする際に信号を発行し,次のラウンドのDCA購入に準備します.
DCAとストップロスを組み合わせてコストを平均化し,部分的な利益を保持し,引き下げを回避する.
リスクを最小限に抑えるため 利得と利回り率を調整できる柔軟なストップメカニズム
バックテストの結果は,長期投資に適した安定した年収で,購入と保有を上回る.
主要な交換プラットフォームで簡単に適用するために,調整可能なパラメータで実装が簡単です.
DCAの購入数が限られているため,市場が長期にわたって下落傾向にある場合,損失は増加する可能性があります.
遅延ストップ損失の設定が不十分である場合,早速利益を得たり,損失を逃げる可能性があります.
トレーディングコストは利益に 影響を及ぼします 高値のストップロスの設定で トレーディング数が増加します
頻繁にDCAの購入を支えるのに十分な資本が必要です. 初期資本の不足は購入の数を制限します.
適応的なトラッキングストップを導入し,特定の利益のマイルストーンに達するとトラッキングパーセントを下げる.
移動平均を組み込み,主要なサポートエリアの購入額を増やす.
総資産に基づいてDCA金額を調整するための再バランスメカニズムを追加します.
パラメータ設定を最適化し,様々な保持期間で収益性をテストする.
この戦略は,DCAとトレーリングストップを組み合わせて長期間にわたって安定したアルゴリズム的な取引リターンを得ています.バックテスト結果は強く,安定した成長に焦点を当てた投資家には適しています.シンプルでクリーンなコードは理解し,実装するのが簡単です.パラメータ最適化および追加の指標を組み込むことでさらなるパフォーマンス向上を達成できます.全体として,投資家に比較的安全で一貫した定量化取引ソリューションを提供します.
/*backtest start: 2023-02-16 00:00:00 end: 2024-02-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Stavolt //@version=5 strategy("DCA Strategy with Trailing Take Profit", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Correctly using input to define user-configurable parameters takeProfitPercent = input.float(0.6, title="Take Profit (%)", minval=0.1, maxval=5) trailingPercent = input.float(0.1, title="Trailing Stop (%)", minval=0.05, maxval=1) maxDCAOrders = input.int(10, title="Max DCA Orders", minval=1, maxval=20) priceDeviationPercent = input.float(1.0, title="Price Deviation (%)", minval=0.5, maxval=5) var float lastBuyPrice = na var int buyCount = 0 var float initialBuyPrice = na var float trailingStopPrice = na // Strategy logic here... // Note: The detailed logic for buying and selling based on the DCA strategy // needs to be tailored to your specific requirements and tested for correctness. if (buyCount < maxDCAOrders) if (na(lastBuyPrice) or close < lastBuyPrice * (1 - priceDeviationPercent / 100)) strategy.entry("Buy", strategy.long) lastBuyPrice := close buyCount += 1 if (na(initialBuyPrice)) initialBuyPrice := close if (not na(lastBuyPrice) and close > lastBuyPrice * (1 + takeProfitPercent / 100)) if (na(trailingStopPrice) or close > trailingStopPrice) trailingStopPrice := close * (1 - trailingPercent / 100) if (close < trailingStopPrice) strategy.close("Buy") lastBuyPrice := na trailingStopPrice := na buyCount := 0 initialBuyPrice := na