動的平均価格追跡戦略

作者: リン・ハーンチャオチャン, 日付: 2024-01-29 15:28:53
タグ:

img

概要

この戦略の主な考え方は,株価が一定のパーセントまで下がると,保有ポジションの平均コストを下げるためにポジションを徐々に増加させることができるということです.価格が回復すると,平均保有コストが低いため,より高い収益が得られます.

戦略原則

株価が20日間の単純な移動平均値を超えると,ポジションを開くためにロングに行く.株価が10%などの目標損失パーセントで落ちると,現在のポジションの50%などの指定パーセントでポジションに追加します.これは保有ポジションの平均コストを下げます.株価が平均保有コストより10%高いセットの利益を取点に達すると,利益を得るためにすべてのポジションを閉じる.

戦略関数は,投資額の10%で初期ポジションサイズを設定し,最大4回の追加購入を許可するなどのパラメータを設定する. 20日間の単純な移動平均線を得る. 閉店価格がその平均値を超え,現在のポジションがないとき,ロングポジションを開く. その後,ポジションの浮動利益/損失パーセントを計算する. 目標損失パーセントに達した場合,株がリバウンドして利益目標に達するまで,目標追加購入パーセントでピラミッドを継続する.

利点分析

このタイプの戦略の最大の利点は,市場の条件が不利である場合,追加購入をピラミッド化することで保有ポジションの平均コストを削減することができる. これにより,市場の条件が改善するとより大きな利益を得ることができ, "減損して稼ぎなさい"効果を達成できる.単純なストップ損失と比較して,この戦略は価格が引き続き下がるときに損失を止めるよう強制されるのではなく,市場の動きをよりうまく捉えることができる.

同時に,この戦略は複数の追加購入を可能にし,市場の逆転のタイミング差を最大限に活用してポジションを徐々に調整する.これは1つの大きな追加購入を行うよりもコストが低く,またほとんどの投資家資本強さにより適している.

リスク分析

もちろん,価格が引き続き下落すれば,この戦略は大きな損失のリスクも抱えています.特に熊市では,価格の下落の幅は想像をはるかに超えることがあります.したがって,追加の購入の割合と数は合理的に設定され,リスクは受け入れられる範囲内で制御する必要があります.

同時に,すべての投資家がそのような戦略を採用した場合,多くの投資家が損失率目標に達すると,ポジションへの集団的な追加シナリオが起こり得ることを認識する必要があります.これは価格を上昇させ,不合理な短期的なリバウンドを形成します.状況を適切に評価できなければ,市場の傾向を誤って判断し,ポジションを増加し続けることができます.結果として価格が再び下落するとさらに大きな損失になります.

オプティマイゼーションの方向性

この戦略を最適化できる方法はいくつかあります.

  1. 市場状況に基づいてリアルタイムで調整できる追加購入割合を動的に調整します

  2. 定量指標を組み込む.例えば,反転信号を確認し,誤った信号を避けるために,ボリュームの急増を監視する.

  3. トレイリングストップ損失を採用します.追加購入後,損失が一定の範囲内で保たれるように,漸進的なストップ損失システムを使用します.

概要

ダイナミック平均価格追跡戦略は,追加購入を通じてポジションを調整することによって平均価格効果を利用する.十分な資本支援を前提として,価格が逆転するときに平均以上の収益を効果的に獲得することができる.鍵は,リスクを受け入れられる範囲内に保つためにタイミングと比率を適切に判断することです.適切に適用された場合,これは定量的な取引において非常に効果的な方法になります.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// ########################################################################## // 
//
// This scipt is intended to demonstrate how pyramiding can be used to average
// down a position.
//
// We will buy when a stock closes above its 20 day MA and Average down if
// the trade does not go in our favor. We will hold until a profit is made. 
// (which could mean we hold forever)
//
// ########################################################################## //

strategy("Average Down", overlay=true )

// Date Ranges
from_month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
from_day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
from_year  = input(defval = 2010, title = "From Year")
to_month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
to_day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = true
// Strategy Inputs
target_perc = input(-10, title='Target Loss to Average Down (%)', maxval=0)/100
take_profit = input(10, title='Target Take Profit', minval=0)/100
target_qty  = input(50, title='% Of Current Holdings to Buy', minval=0)/100 
sma_period  = input(20, title='SMA Period') 

// Get our SMA, this will be used for our first entry 
ma = sma(close,sma_period)

// Calculate our key levels
pnl = (close - strategy.position_avg_price) / strategy.position_avg_price
take_profit_level = strategy.position_avg_price * (1 + take_profit)

// First Position
first_long = crossover(close, ma) and strategy.position_size == 0 and window
if (first_long)
    strategy.entry("Long", strategy.long)

// Average Down!
if (pnl <= target_perc)
    qty = floor(strategy.position_size * target_qty)
    strategy.entry("Long", strategy.long, qty=qty)

// Take Profit!
strategy.exit("Take Profit", "Long", limit=take_profit_level)

// Plotting
plot(ma, color=blue, linewidth=2, title='SMA')
plot(strategy.position_avg_price, style=linebr, color=red, title='Average Price')

もっと