리소스 로딩... 로딩...

평균 반전 볼링거 밴드 달러-비용 평균화 투자 전략

저자:차오장, 날짜: 2024-12-12 17:17:15
태그:BBDCAEMASMA

img

전반적인 설명

이 전략은 달러 비용 평균 (DCA) 와 볼링거 밴드 기술 지표를 결합한 지능형 투자 접근법이다. 평균 회전 원칙을 활용하여 가격 인하 시 체계적으로 포지션을 구축합니다. 핵심 메커니즘은 가격이 낮은 볼링거 밴드 아래로 넘어갈 때 고정 금액 구매를 실행하여 시장 수정 중에 더 나은 입시 가격을 달성하는 것을 목표로합니다.

전략 원칙

이 전략은 세 가지 기본 기둥에 기반한다: 1) 정해진 금액의 정기적 투자로 시간 위험을 줄이는 달러-비용 평균화 (Dollar-Cost Averaging), 2) 가격이 궁극적으로 역사적 평균으로 돌아갈 것이라고 가정하는 평균 반전 이론, 3) 과잉 구매 및 과잉 판매 구역을 식별하는 볼링거 밴드 지표. 가격이 하위 대역 아래로 넘어갈 때 구매 신호가 발생하며, 구매 양은 설정된 투자 금액을 현재 가격으로 나누어서 결정된다. 이 전략은 상위 및 하위 대역을 정의하기 위해 2의 표준편차 배수와 함께 200 기간 EMA를 중간 대역으로 사용한다.

전략적 장점

  1. 시간적 위험 감소 - 주관적 판단보다는 체계적인 구매가 인간 오류를 줄입니다.
  2. 소액액액액액액액액액액액액액액액액액액액
  3. 유연한 매개 변수 - 조정 가능한 볼링거 대역 매개 변수 및 다른 시장 조건에 대한 투자 금액
  4. 명확한 출입/출입 규칙 - 기술적 지표에 기초한 객관적 신호
  5. 자동 실행 - 수동 개입이 필요없고 감정 거래를 피합니다.

전략 위험

  1. 평균 회전 실패 위험 - 트렌드 시장에서 잘못된 신호를 생성할 수 있습니다.
  2. 소정의 적립자본이 적립되지 않은 경우
  3. 매개 변수 최적화 위험 - 과도한 최적화는 전략 실패로 이어질 수 있습니다.
  4. 시장 환경 의존성 - 매우 변동적인 시장에서 실적이 저하될 수 있습니다. 엄격한 자본 관리 규칙을 적용하고 이러한 위험을 관리하기 위해 전략 성과를 정기적으로 평가하는 것이 좋습니다.

전략 최적화 방향

  1. 강한 트렌드에서 트렌드 반대 작전을 피하기 위해 트렌드 필터를 포함
  2. 여러 시간 프레임 확인 메커니즘을 추가
  3. 변동성 기반 포지션 사이징으로 자본 관리 시스템을 최적화
  4. 이윤을 취득하는 메커니즘을 구현합니다.
  5. 신호 신뢰성을 향상시키기 위해 다른 기술적 지표와 결합하는 것을 고려하십시오.

요약

이 전략은 기술적 분석과 체계적인 투자 방법을 결합한 강력한 전략이다. 위험 감소를 위해 달러-비용 평균을 구현하면서 과판 기회를 식별하기 위해 볼링거 밴드를 사용합니다. 성공의 열쇠는 적절한 매개 변수 설정과 엄격한 실행 규율에 있습니다. 위험이 존재하지만 지속적인 최적화와 위험 관리는 전략의 안정성을 향상시킬 수 있습니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("DCA Strategy with Mean Reversion and Bollinger Band", overlay=true) // Define the strategy name and set overlay=true to display on the main chart

// Inputs for investment amount and dates
investment_amount = input.float(10000, title="Investment Amount (USD)", tooltip="Amount to be invested in each buy order (in USD)") // Amount to invest in each buy order
open_date = input(timestamp("2024-01-01 00:00:00"), title="Open All Positions On", tooltip="Date when to start opening positions for DCA strategy") // Date to start opening positions
close_date = input(timestamp("2024-08-04 00:00:00"), title="Close All Positions On", tooltip="Date when to close all open positions for DCA strategy") // Date to close all positions

// Bollinger Band parameters
source = input.source(title="Source", defval=close, group="Bollinger Band Parameter", tooltip="The price source to calculate the Bollinger Bands (e.g., closing price)") // Source of price for calculating Bollinger Bands (e.g., closing price)
length = input.int(200, minval=1, title='Period', group="Bollinger Band Parameter", tooltip="Period for the Bollinger Band calculation (e.g., 200-period moving average)") // Period for calculating the Bollinger Bands (e.g., 200-period moving average)
mult = input.float(2, minval=0.1, maxval=50, step=0.1, title='Standard Deviation', group="Bollinger Band Parameter", tooltip="Multiplier for the standard deviation to define the upper and lower bands") // Multiplier for the standard deviation to calculate the upper and lower bands

// Timeframe selection for Bollinger Bands
tf = input.timeframe(title="Bollinger Band Timeframe", defval="240", group="Bollinger Band Parameter", tooltip="The timeframe used to calculate the Bollinger Bands (e.g., 4-hour chart)") // Timeframe for calculating the Bollinger Bands (e.g., 4-hour chart)

// Calculate BB for the chosen timeframe using security
[basis, bb_dev] = request.security(syminfo.tickerid, tf, [ta.ema(source, length), mult * ta.stdev(source, length)]) // Calculate Basis (EMA) and standard deviation for the chosen timeframe
upper = basis + bb_dev // Calculate the Upper Band by adding the standard deviation to the Basis
lower = basis - bb_dev // Calculate the Lower Band by subtracting the standard deviation from the Basis

// Plot Bollinger Bands
plot(basis, color=color.red, title="Middle Band (SMA)") // Plot the middle band (Basis, EMA) in red
plot(upper, color=color.blue, title="Upper Band") // Plot the Upper Band in blue
plot(lower, color=color.blue, title="Lower Band") // Plot the Lower Band in blue
fill(plot(upper), plot(lower), color=color.blue, transp=90) // Fill the area between Upper and Lower Bands with blue color at 90% transparency

// Define buy condition based on Bollinger Band 
buy_condition = ta.crossunder(source, lower) // Define the buy condition when the price crosses under the Lower Band (Mean Reversion strategy)

// Execute buy orders on the Bollinger Band Mean Reversion condition
if (buy_condition ) // Check if the buy condition is true and time is within the open and close date range
    strategy.order("DCA Buy", strategy.long, qty=investment_amount / close) // Execute the buy order with the specified investment amount

// Close all positions on the specified date
if (time >= close_date) // Check if the current time is after the close date
    strategy.close_all() // Close all open positions

// Track the background color state
var color bgColor = na // Initialize a variable to store the background color (set to 'na' initially)

// Update background color based on conditions
if close > upper // If the close price is above the Upper Band
    bgColor := color.red // Set the background color to red
else if close < lower // If the close price is below the Lower Band
    bgColor := color.green // Set the background color to green

// Apply the background color
bgcolor(bgColor, transp=90, title="Background Color Based on Bollinger Bands") // Set the background color based on the determined condition with 90% transparency

// Postscript:
// 1. Once you have set the "Investment Amount (USD)" in the input box, proceed with additional configuration. 
// Go to "Properties" and adjust the "Initial Capital" value by calculating it as "Total Closed Trades" multiplied by "Investment Amount (USD)" 
// to ensure the backtest results are aligned correctly with the actual investment values.
//
// Example:
// Investment Amount (USD) = 100 USD
// Total Closed Trades = 10 
// Initial Capital = 10 x 100 = 1,000 USD

// Investment Amount (USD) = 200 USD
// Total Closed Trades = 24 
// Initial Capital = 24 x 200 = 4,800 USD


관련

더 많은