이동 평균 회전 추적 전략

저자:차오장, 날짜: 2024-03-28 18:00:05
태그:

img

전반적인 설명

이 전략의 주요 아이디어는 시장의 후퇴 후 리바운드 기회를 포착하기 위해 서로 다른 기간을 가진 두 개의 이동 평균을 사용하는 것입니다. 가격이 장기 이동 평균보다 높고 단기 이동 평균으로 되돌아 갈 때, 전략은 긴 포지션을 열고 가격이 단기 이동 평균보다 다시 상승하거나 스톱 로스 가격을 달성 할 때 포지션을 닫습니다. 트렌드에서 후퇴하는 동안 구매 기회를 추구함으로써 전략은 트렌딩 시장에서 이익을 얻는 것을 목표로합니다.

전략 원칙

  1. 서로 다른 기간 (MA1 및 MA2) 을 가진 두 개의 이동 평균을 계산합니다. 여기서 MA1은 장기 이동 평균이고 MA2는 단기 이동 평균입니다.
  2. 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스
  3. 입시 가격을 buyPrice로 기록하고 stop-loss 가격을 stopPrice로 계산합니다 (즉, 입시 가격 아래의 i_stopPercent 퍼센트).
  4. 클로즈 코스가 MA2보다 다시 상승하고 i_lowerClose가 거짓이거나 클로즈 코스가 스톱 로스 가격 스톱 프라이스 이하로 떨어지면 전략은 포지션을 닫습니다.
  5. 만약 i_lowerClose가 사실이라면, 전략은 닫기 가격이 MA2보다 높고 이전 촛불의 닫기 가격이 MA2보다 낮을 때 포지션을 닫습니다.

전략적 장점

  1. 트렌드 추적: 가격의 상대적 위치와 장기 이동 평균을 기반으로 전체 트렌드를 결정함으로써 전략은 트렌드에 대한 진입 기회를 찾습니다.
  2. 풀백 구매: 상승 추세 동안 가격이 단기 이동 평균으로 되돌아 갈 때 구매 기회를 찾고 전략은 입점점의 비용 효율성을 향상시킵니다.
  3. 스톱 로스 보호: 스톱 로스 가격을 설정하면 가격이 특정 규모로 부정적으로 움직일 때 하향 위험을 효과적으로 제어 할 수 있습니다.
  4. 유연한 매개 변수: 사용자는 자신의 선호도에 따라 이동 평균 기간, 스톱-러스 비율 및 이전 촛불의 폐쇄 가격이 단기 이동 평균보다 낮을 때 포지션을 닫을 것인지 여부와 같은 매개 변수를 유연하게 설정할 수 있습니다.

전략 위험

  1. 매개 변수 최적화: 다른 매개 변수 설정은 전략의 성능에 중요한 영향을 미치므로 최적의 매개 변수 조합을 찾기 위해 다른 시장 환경에서 매개 변수 최적화 및 백테스팅이 필요합니다.
  2. 불안한 시장: 불안한 시장에서는 가격이 장기 및 단기 이동 평균 사이에 자주 변동하며, 이는 종종 포지션을 열고 닫고 거래 비용을 감소시킬 수 있습니다.
  3. 트렌드 역전: 시장 트렌드가 역전되면 전략은 연속적인 손실을 경험할 수 있습니다. 이 시점에서 다른 지표 또는 신호를 결합하여 트렌드 역전 판단 및 전략을 적시에 조정해야합니다.
  4. 블랙 스완 이벤트: 시장이 주요하고 예측 불가능한 갑작스러운 이벤트를 경험하면 가격이 급격히 변동하여 스톱 로스를 유발하고 전략이 상당한 손실에 노출 될 수 있습니다.

전략 최적화 방향

  1. 트렌드 판단: 현재 트렌드의 강도와 방향을 확인하고 진입 신호의 정확성을 향상시키기 위해 ADX와 같은 더 많은 트렌드 판단 지표를 입시하기 전에 포지션을 개시하십시오.
  2. 동적 스톱 로스: 가격 변동성 및 ATR와 같은 지표에 따라 동적으로 스톱 로스 수준을 조정하여 가격 변동성이 높을 때 스톱 로스를 넓히고 가격 변동성이 낮을 때 강화합니다.
  3. 포지션 크기: 시장 트렌드 강도 및 가격 변동성, 트렌드가 강하고 변동성이 중대할 때 포지션 크기를 증가시키고, 트렌드가 약하거나 변동성이 너무 높을 때 포지션 크기를 감소시키는 등의 요인에 따라 각 항목의 포지션 크기를 동적으로 조정합니다.
  4. 긴 짧은 헤지: 전략의 전반적인 위험을 줄이기 위해 다른 시장이나 시간 프레임에서 장기 및 짧은 양쪽에서 신호를 동시에 모니터링하고 헤지 포지션을 고려하십시오.

요약

이동 평균 풀백 추적 전략은 다른 기간을 가진 두 이동 평균의 상대적 위치를 사용하여 상승 추세의 가격 인하 동안 긴 거래 기회를 포착합니다. 이 전략은 트렌딩 시장에 적합하며 적절한 매개 변수 설정과 스톱 손실로 트렌딩 조건에서 안정적인 수익을 창출 할 수 있습니다. 그러나 전략은 불안정한 시장과 트렌드 반전 중에 특정 위험에 직면합니다. 더 많은 지표를 도입하고 위치 크기를 최적화하고 동적 스톱 손실을 구현하여 이 전략의 성능과 안정성을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © contapessoal_ivan
// @version=5
strategy("Pullback Strategy", 
     overlay=true, 
     initial_capital=1000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("26 Jan 2023 00:00 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("26 Mar 2024 23:59 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)


더 많은