スリッページストップロス付きDCA固定投資戦略


作成日: 2024-02-23 14:01:20 最終変更日: 2024-02-23 14:01:20
コピー: 0 クリック数: 926
1
フォロー
1617
フォロワー

スリッページストップロス付きDCA固定投資戦略

概要

この戦略は,ドルコスト平均法 (DCA) と取引所プラットフォーム上の止滑点 (Trailing Take Profit) の機能を組み合わせている.これは,購入に1%の価格偏差を設定し,販売ごとに0.5%の利潤を目標としている.この微小な利潤の理由は,取引ロボットが順調に動作することを保証し,市場の緩慢期に困ったリスクを回避するためである.

戦略原則

この戦略は,まずスライドストップの損失パーセント,最大DCAの注文数,価格偏差のパーセントなどの設定可能なパラメータを設定します. その後,最後の購入価格,購入回数,最初の購入価格,およびスライドストップの価格などの変数を追跡します. 買入論理上,現在の価格が前回の購入価格より低い場合 (価格偏差のパーセント) で,購入回数が最大DCAの注文数に達していない場合は,買入シグナルを発信し,現在の購入価格を記録します. 売出論理上,現在の価格が前回の購入価格より高い場合 (価格偏差のパーセント) で,スライドストップの価格を設定します.

戦略的優位性

  1. DCAの定投と滑点のストップを組み合わせると,定期定額購入のコスト平均効果を保証するとともに,利益の一部を撤回を避けるためにロックされます.

  2. スライドポイントストップメカニズムは柔軟で,市場状況に応じてストップ幅とスライドポイント比率を調整してリスクを低減することができる.

  3. 長期投資に適した年収率で,従来型の買入保有戦略よりも優れている.

  4. シンプルで,パラメータ設定が柔軟で,主流の取引所プラットフォームで簡単に実用化できます.

戦略リスク

  1. DCAの購入回数は限られており,長期にわたる下落により,損失は拡大する可能性があります.

  2. スライドポイントのストップロスの設定が不適切である場合,利益が頻繁にロックされるか,損失が拡大する可能性があります.

  3. 取引コストは利益に一定の影響を与える.高滑点のストップ損失設定は取引の回数を増加させる.

  4. 頻繁にDCAを購入する際には十分な資金が必要である.初期資金不足により,購入回数が不十分になる可能性がある.

戦略の最適化

  1. 浮動滑点のストップロスを設定し,利潤が一定比率に達すると滑点を徐々に小さくします.

  2. 平均線指数と組み合わせて,重要なサポートの近くで買い上げを増加させる.

  3. DCAの購入額を総資産に合わせて調整する再バランスメカニズムに参加する.

  4. パラメータ設定を最適化し,異なるポジション保持周期におけるリターン率をテストする.

要約する

この戦略は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