ドルコスト平均化戦略

作者: リン・ハーンチャオチャン,日付: 2023-09-15 16:52:06
タグ:

この戦略はドルコスト平均化戦略と呼ばれる.長期保有を可能にする定期的な固定額購入を通じて目標ポジションサイズを蓄積することを目的としている.

方法:

  1. 決まった購入額と頻度を設定します
  2. 設定された金額に従って,定期的な期間で資産の購入を行う.
  3. 累積されたポジションサイズが値に達すると売却する.
  4. 定期的に位置を積み重ね続けるために繰り返す.

典型的なワークフロー:

  1. 定期的に固定額の資産を購入する (例:毎月$200).
  2. 累積されたポジションサイズが限界値を超えると (例えば200株) すべて売却する.
  3. 定期的な購入を再開して ポジションを蓄積し続けます

この戦略の利点:

  1. 長期投資で平均コストが下がる
  2. 引き上げリスクが低く 高値の買い物を避けます
  3. 頻繁に市場モニタリングなしで一貫して実行するのが簡単です

この戦略のリスク:

  1. 長期保持期間が必要で 短期的な価格変動に適応できない
  2. 長期的下落傾向で損失を伴う可能性があります
  3. 最適でない出口タイミングで 売り上げが落ちるかもしれません

要するに,ドルコスト平均化戦略は,長期投資家に友好的なバッチ買いを通じて資産を蓄積する.しかし,トレーダーは依然として幅広い市場リスクに注意し,高値でのバッチ販売を通じて利益を最大化するために,出口戦略を最適化する必要があります.


/*backtest
start: 2022-09-08 00:00:00
end: 2023-09-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tanoshimooo

//@version=5
strategy ("DCA", initial_capital=44700, overlay=true)

// To start script at a given date
tz = 0 //timezone
timeadj = time + tz * 60 * 60 * 1000 //adjust the time (unix)
t1 = timeadj >= timestamp(2003, 03, 01, 0, 0) ? 1 : 0 //get the starting time

// Variables
var float lastRef = na
if barstate.isfirst
    lastRef := close
var float cash = 50000 // available money
var float sell_contracts = na
var bool first_trade_done = false

// Parameters
var float sell_min = 200 //200 sell more than sell_min or sell all
var float buy_dollars = 200

var int bi = 90

// LONGS
// if bar_index < bi
strategy.order("Long", strategy.long, int(buy_dollars/close))
cash := cash - int(buy_dollars/close)*close
// label.new(bar_index, na, na, xloc.bar_index, yloc.abovebar, color.blue, label.style_triangleup, color.blue, size.tiny)

//plot(cash)

// SHORTS
// if longExit  
//     if (strategy.position_size*sf*close > sell_min) and (strategy.position_size*sf >= 1)
//         strategy.order ("Long", strategy.short, strategy.position_size*sf)
//         cash := cash + strategy.position_size*sf*close
//     else 
//         strategy.order ("Long", strategy.short, strategy.position_size)
//         cash := cash + strategy.position_size*close
//     lastRef := close
//     label.new(bar_index, na, na, xloc.bar_index, yloc.belowbar, color.red, label.style_triangledown, color.red, size.tiny)

if bar_index == last_bar_index - 2 // bi
    strategy.order ("Long", strategy.short, strategy.position_size)

もっと