동적 평균 가격 추적 전략

저자:차오장, 날짜: 2024-01-29 15:28:53
태그:

img

전반적인 설명

이 전략의 주요 아이디어는 주식 가격이 특정 비율로 떨어지면 지점의 평균 비용을 낮추기 위해 점차적으로 증가 할 수 있다는 것입니다. 가격이 회복되면 평균 보유 비용이 낮기 때문에 더 높은 수익을 얻을 수 있습니다.

전략 원칙

주식 가격이 20일 간 간편한 이동 평균을 초과할 때, 포지션을 오픈하기 위해 장기간 이동한다. 주가가 10%와 같은 목표 손실 비율로 떨어지면 현재 포지션의 50%와 같은 특정 비율로 포지션을 추가한다. 이것은 보유 포지션의 평균 비용을 낮추게 된다. 주식 가격이 평균 보유 비용보다 10% 이상인 수익점까지 도달하면, 모든 포지션을 폐쇄하여 이익을 취한다.

특히 전략 함수는 최대 4 개의 추가 구매를 허용하는 것과 같은 매개 변수를 설정하며, 포지션 사이징은 주식의 비율로 설정되며 초기 포지션 크기는 주식의 10%입니다. 20 일 간 간단한 이동 평균 라인을 얻습니다. 폐쇄 가격이 그 평균을 넘어서 현재 포지션이 없을 때 긴 포지션을 열습니다. 그 다음 포지션의 부동 수익/손실 비율을 계산합니다. 목표 손실 비율에 도달하면 주가가 수익 목표를 달성하기 위해 리바운드 될 때까지 목표 추가 구매 비율로 피라미드를 계속합니다.

이점 분석

이 유형의 전략의 가장 큰 장점은 시장 조건이 불리할 때 추가 구매를 피라미드화함으로써 보유 지위의 평균 비용을 줄일 수 있다는 것입니다. 이것은 시장 조건이 개선되면 더 큰 이익을 얻을 수 있으며, "작은 손실, 더 많은 수익" 효과를 달성 할 수 있습니다. 간단한 스톱 손실에 비해이 전략은 가격이 계속 떨어지면 손실을 멈추도록 강요되는 대신 시장 움직임을 더 잘 파악 할 수 있습니다.

동시에, 전략은 여러 가지 추가 구매를 허용하며, 시장 반전의 시점 차이를 최대한 활용하여 점진을 점차 조정합니다. 이것은 하나의 큰 추가 구매보다 저렴한 비용이며 대부분의 투자자의 자본 강점과 더 잘 어울립니다.

위험 분석

물론, 가격 하락이 계속된다면, 이 전략은 또한 큰 손실의 위험에 직면합니다. 특히 곰 시장에서 가격 하락의 규모는 우리의 상상력을 훨씬 초월 할 수 있습니다. 따라서 추가 구매의 비율과 수는 합리적으로 설정되어야합니다. 허용 가능한 범위 내에서 위험을 제어 할 수 있습니다.

동시에, 우리는 모든 투자자가 그러한 전략을 채택하면 많은 투자자가 손실 비율 목표에 도달하면 포지션에 집단 추가 시나리오가 발생할 수 있음을 알아야합니다. 이것은 가격을 끌어올리고 비합리적인 단기 회복을 형성 할 것입니다. 상황을 올바르게 평가하지 않으면 시장 추세를 잘못 판단하고 우리의 위치를 계속 증가시킬 수 있습니다. 결과는 가격이 다시 떨어지면 더욱 큰 손실이 될 것입니다.

최적화 방향

이 전략을 최적화 할 수있는 몇 가지 방법이 있습니다:

  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')

더 많은