
この戦略の主な考えは,株価が一定の比率まで下落したときに,徐々にポジションを上げ,それによって平均保有コストの低下という目的を達成することである.価格が反発したときに,平均保有コストがより低いため,より高い利益を得ることができる.
株価が20日単調移動平均を初めて破るときに,多額の開設を行う.それ以降の株価の下落幅が設定された目標損失パーセント,例えば10%に達した場合,指定された割合のポジション,例えば50%の現在のポジションを加設する.これにより,平均保有コストを減らす.株価が設定されたストップポイントに達したとき,例えば,平均保有コストより10%高く,全平仓をストップする.
具体的には,strategy関数は,最大4回の加仓を許容するようなパラメータを設定し,ポジション計算方法は,占拠資金のパーセントであり,最初の開設ポジションは10%である. 20日間のシンプル移動平均を取得し,閉盘価格でこの平均線を突破し,ポジションがないときに多額のポジションを開設する. そして,保有ポジションの浮動損率を計算し,目標損失パーセントに達した場合,目標加仓比率に従って加仓を継続し,株式が反発停止するまで.
この戦略の最大の利点は,市場が不利であるとき,加仓によって平均保有コストを低下させ,市場が好転するときにより大きな利益を得て,損失を減らすという効果である.単純に移動止損と比較して,このような戦略は,市場動向を把握し,株価が下落し続けると止損を強制されるのではなく,市場動向を把握することができる.
同時に,この戦略は,多くの加仓を許し,市場状況の逆転の時間差を最大限に活用し,ポジションを段階的に調整する.これは,一度の大量の加仓よりもコストが低く,またほとんどの投資家の資金強さに適している.
もちろん,この戦略は,下落が続く場合,大きな損失の危険にも直面する.特に,熊市では,株価の下落幅は,私たちの想像を超えるかもしれません.
同時に,我々は,すべての投資家がこのような戦略を採用している場合,多くの投資家が目標パーセントに達したときに,集団の加仓が発生する可能性があることに注意する必要があります. これは,株価を上昇させ,不合理な短期反転を形成します.
この戦略は,以下の点で最適化できます.
動的に加仓幅を調整する.大株の動きなどによって,次の加仓の割合をリアルタイムで調整することができる.
数値指標と組み合わせて.例えば,交差量の明らかな増幅を監視して反転信号を確認し,誤判を避ける.
トラッキング・ストップを採用. 貯蓄後,漸進的なストップを採用し,損失を一定範囲で制御することを確保する.
動的均価追跡戦略は,加仓して持仓を調整し,十分な資金支持を保証する前提で,均価効果を有効に利用し,株価が逆転したときに余分な収益を得ることができる. ポイントは,タイミングと割合を把握し,様々なリスクを許容範囲内で制御することです. この戦略は,適切に適用されれば,量化取引の非常に有効な方法になることができます.
/*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')