DCA 일일 전략 및 EMA에 대한 접촉

저자:차오장, 날짜: 2024-01-16 15:30:17
태그:

img

전반적인 설명

이 파인 스크립트 전략은 EMA 터치 신호를 통합하여 엔트리 포인트를 결정하기 위해 트레이딩뷰 플랫폼에서 일일 달러 비용 평균화 접근 방식을 구현합니다. 매일 고정 금액 투자를 위해 달러 비용 평균화 방법론을 따르며 위험을 완화하기 위해 시간을 통해 구매를 분산합니다. EMA 크로스오버는 엔트리의 특정 트리거로 사용됩니다.

전략 논리

이 전략은 다음과 같은 주요 특징을 가지고 있습니다.

  1. 일일 달러 비용 평균

    • 시장 상승과 하락에 관계없이 일일 고정 투자
    • 단일 거래 위험을 줄이기 위한 장기적인 래치 투자
  2. 입국 신호에 대한 EMA

    • 마감 가격이 EMA 5, 10, 20 등을 넘으면 구매 신호가 발사됩니다.
    • EMA 라인은 단기 인하를 피하기 위한 지원 역할을 합니다.
  3. 동적 스톱 로스

    • 종료 가격이 20일 SMA 이하로 떨어지면 모든 포지션을 매각합니다.
    • 더 많은 손실을 피합니다.
  4. 거래 수 제한

    • 포지션 크기를 제어하기 위해 300에서 최대 거래
    • 자산 용량을 초과하는 과도한 투자를 방지합니다

특히, 매일 전략은 일정한 금액을 투자하고 종료 가격에 따라 구매할 주식을 계산합니다. 종료 가격이 5일, 10일, 20일 EMA 등 중 하나를 넘으면 구매 신호가 트리거됩니다. 누적된 거래 수치가 300를 달성하면 추가 구매가 발생하지 않습니다. 또한, 가격이 20일 SMA 이하로 종료되거나 미리 설정된 출구 날짜에 도달하면 모든 포지션이 클리어됩니다. 스크립트는 시각 분석을 위해 가격 차트에 EMA를 플롯링합니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 리스크 다양화

    • 시장 동향에 관계없이 일일 고정액 소액 투자
    • 높은 것을 쫓는 것을 피합니다.
  2. EMA 조합으로 인하를 피합니다.

    • EMA 크로스오버는 인하 기간에 구매를 방지합니다.
    • 인하 기간 동안 계속 구매하면 위험을 다양화합니다.
  3. 다이내믹 스톱 손실 제어 손실

    • 스톱 로스는 적시에 출출을 허용합니다.
    • 큰 손실을 방지합니다
  4. 무역 제한 통제 위험

    • 최대 포지션 크기는 과도한 투자를 방지하기 위해 미리 설정되어 있습니다.
    • 자산 용량 내에서 투자 유지
  5. 직관적인 EMA 시각화

    • 가격 차트에 표시된 EMA
    • 조작자가 쉽게 모니터링 할 수 있습니다.
  6. 매우 사용자 정의 가능

    • 투자 금액, EMA 기간, 정지 등에 대한 사용자 지정 입력
    • 개인 리스크 선호도에 기초한 조정

위험 분석

이 전략은 또한 몇 가지 위험을 안고 있습니다.

  1. 시스템적 위험 은 여전히 존재 하고 있다

    • 블랙 스완 사건은 큰 손실로 이어질 수 있습니다.
    • 다양화는 위험을 줄일 뿐 아니라 제거하지는 않습니다.
  2. 고정 투자 금액

    • 일일 고정 투자는 가격이 급증하면 상승세를 놓칠 수 있습니다.
    • 동적 금액 조정이 도움이 될 수 있습니다.
  3. EMA 는 극단적 인 움직임 에 반응 할 수 없습니다

    • EMA는 갑작스러운 사건에 더 느리게 반응하고 적시에 손실을 멈추지 않습니다.
    • KD와 결합하면 BOLL는 극단적 인 것을 식별하는 데 도움이 될 수 있습니다.
  4. 무역 제한 수익 잠재력

    • 거래 상위 제한 가능 이득
    • 위험과 보상을 균형 잡아야 합니다
  5. 손해를 막기 위한 투입은 주의가 필요하다

    • 너무 가까이 있는 스톱은 조기에 제거되는 경향이 있지만 너무 느슨한 스톱은 제때 보호하지 못합니다.
    • 올바른 균형을 찾기 위해 광범위한 테스트가 필요합니다.

미래 개선

추가 최적화:

  1. 동적 일일 투자 금액

    • 지표에 기초한 일일 투자
    • 상승할 때 상승하고 하락할 때 감소합니다.
  2. 추가 입력 신호

    • KD, BOLL와 같은 다른 지표로 EMA를 보완하십시오.
    • 극단적 인 움직임의 식별을 개선
  3. 기하급수적 이동 평균

    • EMA는 갑작스러운 사건에 천천히 반응합니다. DEMA, TEMA는 도움이 될 수 있습니다.
    • 새로운 트렌드를 더 빨리 파악
  4. 동적 위치 제한

    • 전략 수익성 기준으로 제한을 높이는 것
    • 적정한 평가에서 더 높은 노출을 허용합니다
  5. 후속 스톱 손실

    • 현재 전략 시장은 모든 것을 판매, 후속 정지는 격차를 피할 수 있습니다
    • 운전되는 중지의 위험을 줄여

결론

요약하자면, 이 EMA 결합 된 일일 DCA 전략은 장기적인 주기적 투자의 개념을 실현하고, 큰 일회성 구매에 비해 여러 개의 작은 항목에 위험을 분산합니다. EMA는 일정 범위에서 단기 인출 위험을 피하는 데 도움이되며, 스톱 로스는 최대 손실을 제어합니다. 여전히 블랙 스완 위험과 고정 투자 크기의 한계를 염두에 두어야합니다. 이러한 측면은 효율적이면서도 안정적인 양적 전략을 구축하기 위해 매개 변수 조정 및 지표 조합을 통해 미래 향상 방향을 제공합니다.


/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Daily DCA Strategy with Touching EMAs", overlay=true, pyramiding=10000)

// Customizable Parameters
daily_investment = input(50000, title="Daily Investment")
start_year = input(2022, title="Start Year")
start_month = input(1, title="Start Month")
start_day = input(1, title="Start Day")
end_year = input(2023, title="End Year")
end_month = input(12, title="End Month")
end_day = input(1, title="End Day")
trade_count_limit = input(10000, title="Pyramiding Limit")
enable_sell = input(true, title="Enable Sell")

start_date = timestamp(start_year, start_month, start_day)
var int trade_count = 0

// Calculate the number of shares to buy based on the current closing price
shares_to_buy = daily_investment / close

// Check if a new day has started and after the start date
isNewDay = dayofmonth != dayofmonth[1] and time >= start_date

// Buy conditions based on EMA crossovers
ema5_cross_above = crossover(close, ema(close, 5))
ema10_cross_above = crossover(close, ema(close, 10))
ema20_cross_above = crossover(close, ema(close, 20))
ema50_cross_above = crossover(close, ema(close, 50))
ema100_cross_above = crossover(close, ema(close, 100))
ema200_cross_above = crossover(close, ema(close, 200))

if isNewDay and (ema5_cross_above or ema10_cross_above or ema20_cross_above or ema50_cross_above or ema100_cross_above or ema200_cross_above) and trade_count < trade_count_limit
    strategy.entry("Buy", strategy.long, qty=shares_to_buy)
    trade_count := trade_count + 1

// Dynamic sell conditions (optional)
sell_condition =  true

if enable_sell and sell_condition
    strategy.close_all()

// EMA Ribbon for visualization
plot(ema(close, 5), color=color.red, title="EMA 5")
plot(ema(close, 10), color=color.orange, title="EMA 10")
plot(ema(close, 20), color=color.yellow, title="EMA 20")
plot(ema(close, 50), color=color.green, title="EMA 50")
plot(ema(close, 100), color=color.blue, title="EMA 100")
plot(ema(close, 200), color=color.purple, title="EMA 200")


더 많은